安全

安全策略执行

师成师成· 更新于 2026-09-28· 阅读 9 分钟· 0 次阅读

登录后可跨设备保存划线和私人笔记登录

安全策略强制执行

Camel 内置了安全策略强制执行机制,在启动时即检测不安全的配置——早于应用处理任何消息。它可以捕获常见错误,例如明文密码、禁用 SSL 校验、不安全的反序列化设置,以及在生产环境中遗留启用的开发功能。

安全类别

该框架检查四个方面的安全问题:

类别说明示例属性
secret应使用属性占位符、保险库引用或环境变量的明文敏感值password、apiKey、token、secretKey
insecure:ssl削弱传输安全的 SSL/TLS 设置trustAllCertificates=true、hostnameVerification=false
insecure:serialization启用 Java 对象反序列化,这是一种已知的攻击手段allowJavaSerializedObject=true、transferException=true
insecure:dev不应在生产环境启用的开发或调试功能devConsoleEnabled=true、uploadEnabled=true

策略级别

每个类别都可以设置为三个强制执行级别之一:

级别行为
allow静默允许该配置——不产生警告,也不报错。
warn启动时记录一条警告,但允许应用继续启动。这是默认级别。
fail阻止应用启动,并报告所有违规项。

配置

使用 camel.security.* 属性配置策略:

# Global policy applied to all categories unless overridden
camel.security.policy = warn

# Per-category overrides
camel.security.secretPolicy = fail
camel.security.insecureSslPolicy = fail
camel.security.insecureSerializationPolicy = fail
camel.security.insecureDevPolicy = allow

# Exempt specific properties from all checks
camel.security.allowedProperties = camel.component.http.trustAllCertificates
属性说明默认值
camel.security.policy应用于所有类别的全局安全策略,除非被单独覆盖。warn
camel.security.secretPolicy覆盖明文密钥的全局策略。
camel.security.insecureSslPolicy覆盖不安全 SSL/TLS 设置的全局策略。
camel.security.insecureSerializationPolicy覆盖不安全反序列化设置的全局策略。
camel.security.insecureDevPolicy覆盖仅供开发使用的功能的全局策略。
camel.security.allowedProperties以逗号分隔的属性键列表,这些属性将不参与所有检查。

当某个类别策略未设置时,会回退到全局 camel.security.policy 的取值。

配置文件默认值

执行级别会根据激活的 Camel 配置文件自动变化:

配置文件行为
无配置文件全局策略默认为 warn——保持向后兼容。
devinsecureDevPolicy 默认为 allow,以便开发功能无需警告即可使用。其他类别仍保持 warn。
prod全局策略默认为 fail——除非显式覆盖,否则只要存在任何不安全配置,应用将拒绝启动。

通过以下方式设置配置文件:

camel.main.profile = prod

哪些内容不会被标记

secret 类别只会标记那些看起来像纯文本字面量的值。以下模式被视为安全,不会被标记:

  • {{vault:…​}} — 密钥库引用
  • ${env:…​} 或 ${ENV:…​} — 环境变量
  • ${sys:…​} 或 ${SYS:…​} — 系统属性
  • {{…​}} — 通用属性占位符

示例

生产环境:严格实施

camel.main.profile = prod
# Implicit: camel.security.policy = fail

# Allow one specific exception where self-signed certs are needed
camel.security.allowedProperties = camel.component.https.trustAllCertificates

使用该配置后,只要检测到任何明文密钥、不安全的 SSL 设置、不安全的反序列化选项或开发功能,应用就会拒绝启动——唯一显式允许的属性除外。

开发环境:宽松模式

camel.main.profile = dev
# Implicit: camel.security.insecureDevPolicy = allow
# Other categories default to warn

自定义:严格密钥,其余一律警告

camel.security.policy = warn
camel.security.secretPolicy = fail

如果检测到任何明文密钥,应用将无法启动;而对于不安全的 SSL、序列化或开发特性配置,则仅会记录警告日志。

评论

登录后参与评论

正在加载评论…