限制对特定参数和路径的访问
使用以下方法限制对单个参数或参数集的访问。此方法体现了 Parameter Store 如何授权参数检索所述的授权行为。
限制对特定参数或路径的访问
-
优先授予范围较窄的访问权限,而非拒绝范围宽泛的访问权限。如可行,将
Allow语句的范围限定为主体所需的最小参数集,而不是先授予宽泛的访问权限再逐一撤销。从不授予参数访问权限的Allow语句不依赖于您对每个操作的正确枚举。 -
将敏感参数单独归入其各自的路径。敏感参数不与主体有权读取的参数共享同一路径的情况下,访问限制会更加简单。例如,将受限值存储在
/myapp/restricted/下,而不是与常规配置一起存储在/myapp/config/下。有关整理参数的更多信息,请参阅处理 Parameter Store 中的参数层次结构。 -
拒绝访问时,请拒绝可能返回该值的所有操作。包括
ssm:GetParameter、ssm:GetParameters、ssm:GetParameterHistory和ssm:GetParametersByPath,或使用ssm:GetParameter*来匹配全部四个。 -
对于
GetParametersByPath,请拒绝所有祖先路径。对参数自身 ARN 的拒绝并不能阻止针对其上方路径的调用返回该参数。如需保护/myapp/restricted/db-password,请针对/myapp/restricted、/myapp和/拒绝ssm:GetParametersByPath。 -
对于
SecureString参数,请限制对 KMS 密钥的kms:Decrypt。无论使用哪种 Parameter Store 操作,检索解密后的SecureString值都需要对加密该值的密钥拥有kms:Decrypt权限。因此,拒绝kms:Decrypt即可阻止通过所有检索路径进行解密。请参阅限制 SecureString 参数值的解密。 -
验证结果。以受限主体身份测试每个检索操作。针对每个祖先路径添加
GetParametersByPath测试,以确认策略的行为符合预期。您还可以使用 IAM 策略模拟器来针对特定操作和资源评估策略。
有关 IAM 如何组合 Allow 和 Deny 语句的更多信息,请参阅《IAM 用户指南》中的策略评估逻辑。