安全
安全策略执行
登录后可跨设备保存划线和私人笔记登录
安全策略强制执行
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——保持向后兼容。 |
dev | insecureDevPolicy 默认为 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、序列化或开发特性配置,则仅会记录警告日志。
评论
登录后参与评论
正在加载评论…
KnowForge