可以在 IAM 策略或 AWS Secrets Manager 密钥策略中使用的操作、资源和上下文键 - AWS Secrets Manager
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

如果我们为英文版本指南提供翻译,那么如果存在任何冲突,将以英文版本指南为准。在提供翻译时使用机器翻译。

可以在 IAM 策略或 AWS Secrets Manager 密钥策略中使用的操作、资源和上下文键

您可以在 IAM 策略或密钥策略中引用的操作

您可以在 IAM 控制对您的密钥的访问的政策或密钥政策。可以将“操作”的每个权限与指定该操作适用的内容的“资源”相关联。

有关操作的完整列表,请参阅 操作、资源和条件密钥(适用于AweatSecretsManager) 在 IAM 用户指南。

您可以在 IAM 策略或密钥策略中引用的资源

下表显示了 AWS Secrets Manager 的 IAM 策略中支持的 ARN 格式。可以在 Secrets Manager 控制台中每个密钥的密钥详细信息页面上查看每个实体的 ID。

如果看到表右上角处有扩展箭头 (),则您可以在新窗口中打开该表。要关闭窗口,请选择右下角处的关闭按钮 (X)。

资源类型 ARN 格式

Secret

arn:aws-cn:secretsmanager:<Region>:<AccountId>: 密钥。OptionalPath/SecretName-6RandomCharacters

Secrets Manager 在密钥名称末尾附加破折号和 6 个随机字母数字字符以构建 ARN 的最后一部分。如果删除一个密钥,然后重新创建另一个同名密钥,该格式有助于确保具有原始密钥权限的个人不会自动获得新密钥的访问权限,因为 Secrets Manager 生成 6 个新的随机字符。

您可以在 IAM 政策或秘密政策

AWS Secrets Manager 中的上下文键通常对应于 API 调用的请求参数。这允许您根据参数值允许或阻止任何请求。

可以使用条件运算符将每个上下文键与指定的值进行比较。您使用的上下文键取决于所选的操作。请参阅本主题开头的操作一节中的“上下文键”列。

例如,您可以使用类似下面的 Condition 元素,以 允许某人检索密钥值的 AWSCURRENT 版本:

"Condition": {"ForAnyValue:StringEquals" : {"secretsmanager:VersionStage" : "AWSCURRENT"}}

下表显示了可以在 IAM 权限策略的 Condition 元素中指定的 Secrets Manager 特定上下文键,以更精确地控制对操作的访问。除了下面的键之外,您还可以使用 AWS 全局条件上下文键

“Condition”元素的上下文键

Description

Type

aws:RequestTag/tag-key

按用户向密钥管理器发出的请求中的密钥筛选访问。

:字符串

aws:TagKeys

根据用户向 Secrets Manager 服务发出的请求中的所有标签键名称的列表筛选访问。

:字符串

secretsmanager:resource/AllowRotationLambdaArn

根据附加到请求的目标资源的 Lambda 轮换函数的 ARN 筛选请求。这样,您就可以将访问限制为仅轮换 Lambda ARN 与该值匹配的密钥。未启用轮换或具有不同轮换 Lambda ARN 的密钥不匹配。

ARN:

secretsmanager:Description

根据请求中的 Description 参数筛选请求。

:字符串

secretsmanager:ForceDeleteWithoutRecovery

根据删除是否指定无恢复时段以筛选请求。使您能够有效地禁用此功能。

布尔型

secretsmanager:KmsKeyId

根据请求的 KmsKeyId 参数筛选请求。可用于限制可以在请求中使用哪些键。

布尔型

secretsmanager:Name

根据请求的 Name 参数值筛选请求。这允许您将密钥名称限制为仅与该值匹配的密钥名称。

:字符串

secretsmanager:RecoveryWindowInDays

根据指定的恢复时段筛选请求。允许您强制使恢复时段经过批准的天数。

:长整型

secretmanager:ResourceTag/<tag-key>

根据附加到密钥的标签筛选请求。Replace <tag-key> 实际标记名称。然后,您可以使用条件运算符确保标签存在,并包含请求的值。

:字符串

secretsmanager:RotationLambdaArn

根据 RotationLambdaARN 参数筛选请求。这使您能够限制哪些 Lambda 轮换函数可用于密钥。可以将该键与 CreateSecret 和修改现有密钥的操作一起使用。

ARN:

secretsmanager:SecretId

根据在 SecretId 参数中提供的密钥唯一标识符筛选请求。虽然价值可以是机密的友好名称或ARN, Secretsmanager:SecretID 始终采用ARN格式。可用于限制请求可以访问哪些密钥。

ARN:

secretsmanager:VersionId

根据请求的 VersionId 参数筛选请求。可用于限制可以访问哪些密钥版本。

:字符串

secretsmanager:VersionStage

根据请求的 VersionStage 参数中指定的暂存标签筛选请求。这允许您将访问限制为仅暂存标签与该字符串数组参数中的值之一匹配的密钥版本。由于该键使用多值字符串数组,因此,您必须使用集合运算符之一以将字符串与该值进行比较

:字符串

AWS 全局条件键

AWS 提供全局条件键,这是一组预定义的条件键,用于使用 IAM 进行访问控制的所有 AWS 服务。例如,您可以使用 aws:PrincipalType 条件键,以仅在请求中的委托人包含您指定的类型时允许访问。

Secrets Manager 支持基于请求中的资源标签控制访问权限的所有全局条件键(包括 aws:TagKeysaws:RequestTag 条件键)。一些(不是全部)AWS 服务支持这些条件键。

在具有 Secrets Manager 权限的策略中使用 IP 地址条件

您可以使用 Secrets Manager 来保护数据库或服务的凭证。但在允许或拒绝访问 Secrets Manager 的同一策略语句中指定 IP 地址条件运算符aws:SourceIp 条件键时,请务必小心。例如, 安理会: 拒绝基于来源IP的对ASM的访问 限制从指定IP范围发出请求时,AW操作。

如果您将类似的策略附加到密钥,从而允许从公司网络 IP 地址范围中访问该密钥,则以 IAM 用户身份从公司网络中调用的请求可以正常工作。但是,如果允许其他服务代表您访问密钥,例如,当您用 Lambda 函数启用轮换时,该函数将从 AWS 内部地址空间调用 Secrets Manager 操作。受该策略影响并使用 IP 地址筛选器的请求将会失败。

此外,在请求来自于 Amazon VPC 终端节点时,aws:sourceIP 条件键的有效性将会下降。要限制对特定 VPC 终端节点(包括 Secrets Manager VPC 终端节点)的请求,请使用 aws:sourceVpceaws:sourceVpc 条件键。有关更多信息,请参阅 https://docs.amazonaws.cn/AmazonVPC/latest/UserGuide/vpc-endpoints.html#vpc-endpoints-iam-access 中的 Amazon VPC 用户指南VPC 终端节点 - 控制终端节点的使用

在具有 Secrets Manager 权限的策略中使用 VPC 终端节点条件

Secrets Manager 支持 Amazon VPC 终端节点(由 AWS PrivateLink 提供)。您可以在 策略或基于资源的策略IAM中使用以下全局条件键授予或拒绝对来自特定 VPC 或 VPC 终端节点的请求的访问权限。

  • aws:SourceVpc 将访问限制为来自指定 VPC 的请求。

  • aws:SourceVpce 将访问限制为来自指定 VPC 终端节点的请求。

如果在允许或拒绝访问 Secrets Manager 密钥的密钥策略语句中使用这些条件键,可能会无意中拒绝访问代表您使用 Secrets Manager 访问密钥的服务。只有一部分 AWS 服务可以使用 VPC 内的终端节点运行。如果将密钥的请求限制为 VPC 或 VPC 终端节点,则从未针对该服务配置的服务中调用 Secrets Manager 可能会失败。