Amazon Secrets Manager 的权限参考 - Amazon Secrets Manager
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

Amazon Secrets Manager 的权限参考

要查看组成权限策略的元素,请参阅 JSON 策略文档结构IAM JSON 策略元素引用

要开始编写您自己的权限策略,请参阅 Amazon Secrets Manager 的权限策略示例

Secrets Manager 操作

操作 描述 访问级别 资源类型(* 为必需) 条件键 相关操作
CancelRotateSecret 授予权限以取消进行中的密钥轮换 Write

Secret*

secretsmanager:SecretId

secretsmanager:resource/AllowRotationLambdaArn

secretsmanager:ResourceTag/tag-key

aws:ResourceTag/${TagKey}

secretsmanager:SecretPrimaryRegion

CreateSecret 授予权限以创建密钥,其中存储着可查询和轮换的加密数据 Write

Secret*

secretsmanager:Name

secretsmanager:Description

secretsmanager:KmsKeyId

aws:RequestTag/${TagKey}

aws:ResourceTag/${TagKey}

aws:TagKeys

secretsmanager:ResourceTag/tag-key

secretsmanager:AddReplicaRegions

secretsmanager:ForceOverwriteReplicaSecret

DeleteResourcePolicy 授予权限以删除附加到密钥的资源策略 权限管理

Secret*

secretsmanager:SecretId

secretsmanager:resource/AllowRotationLambdaArn

secretsmanager:ResourceTag/tag-key

aws:ResourceTag/${TagKey}

secretsmanager:SecretPrimaryRegion

DeleteSecret 授予删除密钥的权限 Write

Secret*

secretsmanager:SecretId

secretsmanager:resource/AllowRotationLambdaArn

secretsmanager:RecoveryWindowInDays

secretsmanager:ForceDeleteWithoutRecovery

secretsmanager:ResourceTag/tag-key

aws:ResourceTag/${TagKey}

secretsmanager:SecretPrimaryRegion

DescribeSecret 授予权限以检索密钥的元数据,但不包含加密数据 Read

Secret*

secretsmanager:SecretId

secretsmanager:resource/AllowRotationLambdaArn

secretsmanager:ResourceTag/tag-key

aws:ResourceTag/${TagKey}

secretsmanager:SecretPrimaryRegion

GetRandomPassword 授予权限以生成随机字符串以用于创建密码 Read
GetResourcePolicy 授予权限以获取附加到密钥的资源策略 Read

Secret*

secretsmanager:SecretId

secretsmanager:resource/AllowRotationLambdaArn

secretsmanager:ResourceTag/tag-key

aws:ResourceTag/${TagKey}

secretsmanager:SecretPrimaryRegion

GetSecretValue 授予权限以检索和解密加密数据 Read

Secret*

secretsmanager:SecretId

secretsmanager:VersionId

secretsmanager:VersionStage

secretsmanager:resource/AllowRotationLambdaArn

secretsmanager:ResourceTag/tag-key

aws:ResourceTag/${TagKey}

secretsmanager:SecretPrimaryRegion

ListSecretVersionIds 授予权限以列出可用的密钥版本 Read

Secret*

secretsmanager:SecretId

secretsmanager:resource/AllowRotationLambdaArn

secretsmanager:ResourceTag/tag-key

aws:ResourceTag/${TagKey}

secretsmanager:SecretPrimaryRegion

ListSecrets 授予权限以列出可用密钥 List
PutResourcePolicy 授予将资源策略附加到密钥的权限 权限管理

Secret*

secretsmanager:SecretId

secretsmanager:resource/AllowRotationLambdaArn

secretsmanager:ResourceTag/tag-key

aws:ResourceTag/${TagKey}

secretsmanager:BlockPublicPolicy

secretsmanager:SecretPrimaryRegion

PutSecretValue 授予权限以使用新的加密数据创建密钥的新版本 Write

Secret*

secretsmanager:SecretId

secretsmanager:resource/AllowRotationLambdaArn

secretsmanager:ResourceTag/tag-key

aws:ResourceTag/${TagKey}

secretsmanager:SecretPrimaryRegion

RemoveRegionsFromReplication 授予权限以从复制中删除区域 Write

Secret*

secretsmanager:SecretId

secretsmanager:resource/AllowRotationLambdaArn

secretsmanager:ResourceTag/tag-key

aws:ResourceTag/${TagKey}

secretsmanager:SecretPrimaryRegion

ReplicateSecretToRegions 授予权限以将现有密钥转换为多区域密钥,然后开始将该密钥复制到新区域的列表中 Write

Secret*

secretsmanager:SecretId

secretsmanager:resource/AllowRotationLambdaArn

secretsmanager:ResourceTag/tag-key

aws:ResourceTag/${TagKey}

secretsmanager:SecretPrimaryRegion

secretsmanager:AddReplicaRegions

secretsmanager:ForceOverwriteReplicaSecret

RestoreSecret 授予取消删除密钥的权限 Write

Secret*

secretsmanager:SecretId

secretsmanager:resource/AllowRotationLambdaArn

secretsmanager:ResourceTag/tag-key

aws:ResourceTag/${TagKey}

secretsmanager:SecretPrimaryRegion

RotateSecret 授予权限以启动轮换密钥 Write

Secret*

secretsmanager:SecretId

secretsmanager:RotationLambdaARN

secretsmanager:resource/AllowRotationLambdaArn

secretsmanager:ResourceTag/tag-key

aws:ResourceTag/${TagKey}

secretsmanager:SecretPrimaryRegion

secretsmanager:ModifyRotationRules

secretsmanager:RotateImmediately

StopReplicationToReplica 授予权限以从复制中删除密钥,并将该密钥提升为副本区域中的区域密钥 Write

Secret*

secretsmanager:SecretId

secretsmanager:resource/AllowRotationLambdaArn

secretsmanager:ResourceTag/tag-key

aws:ResourceTag/${TagKey}

secretsmanager:SecretPrimaryRegion

TagResource 授予权限以将标签添加至密钥 Tagging

Secret*

secretsmanager:SecretId

aws:RequestTag/${TagKey}

aws:TagKeys

secretsmanager:resource/AllowRotationLambdaArn

secretsmanager:ResourceTag/tag-key

aws:ResourceTag/${TagKey}

secretsmanager:SecretPrimaryRegion

UntagResource 授予权限以从密钥中删除标签 Tagging

Secret*

secretsmanager:SecretId

aws:TagKeys

secretsmanager:resource/AllowRotationLambdaArn

secretsmanager:ResourceTag/tag-key

aws:ResourceTag/${TagKey}

secretsmanager:SecretPrimaryRegion

UpdateSecret 授予权限以使用新的元数据或新版本的加密数据更新密钥 Write

Secret*

secretsmanager:SecretId

secretsmanager:Description

secretsmanager:KmsKeyId

secretsmanager:resource/AllowRotationLambdaArn

secretsmanager:ResourceTag/tag-key

aws:ResourceTag/${TagKey}

secretsmanager:SecretPrimaryRegion

UpdateSecretVersionStage 授予权限以将阶段从一个密钥移动到另一个密钥 Write

Secret*

secretsmanager:SecretId

secretsmanager:VersionStage

secretsmanager:resource/AllowRotationLambdaArn

secretsmanager:ResourceTag/tag-key

aws:ResourceTag/${TagKey}

secretsmanager:SecretPrimaryRegion

ValidateResourcePolicy 授予权限以在附加策略之前验证资源策略 权限管理

Secret*

secretsmanager:SecretId

secretsmanager:resource/AllowRotationLambdaArn

secretsmanager:ResourceTag/tag-key

aws:ResourceTag/${TagKey}

secretsmanager:SecretPrimaryRegion

Secrets Manager 资源

资源类型 ARN 条件键
Secret arn:${Partition}:secretsmanager:${Region}:${Account}:secret:${SecretId}

aws:RequestTag/${TagKey}

aws:ResourceTag/${TagKey}

aws:TagKeys

secretsmanager:ResourceTag/tag-key

secretsmanager:resource/AllowRotationLambdaArn

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 终端节点