Amazon Secrets Manager 的权限参考
要查看组成权限策略的元素,请参阅 JSON 策略文档结构和 IAM JSON 策略元素引用。
要开始编写您自己的权限策略,请参阅 Amazon Secrets Manager 的权限策略示例。
Secrets Manager 操作
Secrets Manager 资源
资源类型 | ARN | 条件键 |
---|---|---|
Secret |
arn:${Partition}:secretsmanager:${Region}:${Account}:secret:${SecretId}
|
Secrets Manager 在密钥名称末尾附加破折号和 6 个随机字母数字字符以构建密钥 ARN 的最后一部分。如果删除一个密钥,然后重新创建另一个同名密钥,该格式有助于确保具有原始密钥权限的个人不会自动获得新密钥的访问权限,因为 Secrets Manager 生成 6 个新的随机字符。
您可以在Secrets Manager 控制台的密钥详细信息页面上或 DescribeSecret
找到密钥的 ARN。
条件键
如果您将下表中的字符串条件包含在权限策略中,则 Secrets Manager 的调用者必须传递匹配参数,否则他们将被拒绝访问。为了避免由于缺少参数而拒绝调用者,请将 IfExists
添加到条件运算符名称(例如 StringLikeIfExists
)的末尾。有关更多信息,请参阅 IAM JSON 策略元素:条件运算符。
条件键 | 描述 | 类型 |
---|---|---|
aws:RequestTag/${TagKey} | 根据用户向 Secrets Manager 服务发出的请求中的键筛选访问权限 | 字符串 |
aws:ResourceTag/${TagKey} | 按与资源关联的标签筛选访问权限 | 字符串 |
aws:TagKeys | 根据用户向 Secrets Manager 服务发出的请求中存在的所有标签键名称的列表筛选访问权限 | 字符串数组 |
secretsmanager:AddReplicaRegions | 按要复制密钥的区域列表筛选访问权限 | 字符串数组 |
secretsmanager:BlockPublicPolicy | 根据资源策略是否阻止广泛的Amazon Web Services 账户访问来筛选访问权限 | Bool |
secretsmanager:Description | 根据请求中的描述文本筛选访问权限 | 字符串 |
secretsmanager:ForceDeleteWithoutRecovery | 按是否在没有任何恢复时段的情况下立即删除密钥以筛选访问权限 | Bool |
secretsmanager:ForceOverwriteReplicaSecret | 根据是否覆盖目标区域中具有相同名称的密钥来筛选访问权限 | Bool |
secretsmanager:KmsKeyId | 根据请求中的 KMS 密钥的 ARN 筛选访问权限 | 字符串 |
secretsmanager:ModifyRotationRules | 按是否需要修改密钥轮换规则来筛选访问权限 | Bool |
secretsmanager:Name | 根据请求中易于识别的密钥名称筛选访问权限 | 字符串 |
secretsmanager:RecoveryWindowInDays | 按 Secrets Manager 在删除密钥之前可以等待的天数筛选访问权限 | 数值 |
secretsmanager:ResourceTag/tag-key | 按标签键值对筛选访问 | 字符串 |
secretsmanager:RotateImmediately | 按是否需要立即轮换密钥来筛选访问权限 | Bool |
secretsmanager:RotationLambdaARN | 根据请求中轮换 Lambda 函数的 ARN 筛选访问权限 | ARN |
secretsmanager:SecretId | 根据请求中的 SecretID 值筛选访问权限 | ARN |
secretsmanager:SecretPrimaryRegion | 根据在其中创建密钥的主要区域筛选访问权限 | 字符串 |
secretsmanager:VersionId | 根据请求中密钥版本的唯一标识符筛选访问权限 | 字符串 |
secretsmanager:VersionStage | 根据请求中的版本阶段列表筛选访问权限 | 字符串 |
secretsmanager:resource/AllowRotationLambdaArn | 根据与密钥关联的轮换 Lambda 函数的 ARN 筛选访问权限 | ARN |
使用 BlockPublicPolicy
条件阻止对密钥的广泛访问
在允许操作 PutResourcePolicy
的身份策略中,我们建议您使用 BlockPublicPolicy: true
。这种情况意味着只有在策略不允许广泛访问的情况下,用户才能将资源策略附加到密钥。
Secrets Manager 使用 Zelkova 自动推理来分析资源策略,以确定是否存在宽泛访问权限问题。有关 Zelkova的更多信息,请参见 Amazon 安全博客上的 Amazon 如何使用自动化推理帮助您实现大规模的安保状况
以下示例显示了如何使用 BlockPublicPolicy
。
{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": "secretsmanager:PutResourcePolicy", "Resource": "
SecretId
", "Condition": { "Bool": { "secretsmanager:BlockPublicPolicy": "true" } } } }
IP 地址条件
在允许或拒绝访问 Secrets Manager 的策略语句中指定 IP 地址条件运算符或 aws:SourceIp
条件键时,请务必小心。例如,如果您将一个策略附加到密钥,从而限制从公司网络 IP 地址范围中访问该密钥的 Amazon 操作,则以 IAM 用户身份从公司网络中调用的请求可以正常工作。但是,如果允许其他服务代表您访问密钥,例如,当您用 Lambda 函数启用轮换时,该函数将从 Amazon 内部地址空间调用 Secrets Manager 操作。受该策略影响并使用 IP 地址筛选器的请求将会失败。
此外,当请求来自 Amazon VPC 终端节点时,aws:sourceIP
条件键也不起作用。要限制对特定 VPC 终端节点的请求,请使用 VPC 终端节点条件。
VPC 终端节点条件
要允许或拒绝对来自特定 VPC 或 VPC 终端节点的请求的访问,请使用 aws:SourceVpc
来限制对来自指定 VPC 的请求的访问,或 aws:SourceVpce
来限制对来自指定 VPC 终端节点的请求的访问。请参阅示例:权限和 VPC。
-
aws:SourceVpc
将访问限制为来自指定 VPC 的请求。 -
aws:SourceVpce
将访问限制为来自指定 VPC 终端节点的请求。
如果在允许或拒绝访问 Secrets Manager 密钥的资源策略语句中使用这些条件键,可能会无意中拒绝访问代表您使用 Secrets Manager 访问密钥的服务。只有一部分 Amazon 服务可以使用 VPC 内的终端节点运行。如果将密钥的请求限制为 VPC 或 VPC 终端节点,则从未针对该服务配置的服务中调用 Secrets Manager 可能会失败。
请参阅使用 Amazon Secrets Manager VPC 终端节点。