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

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

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

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

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

有关操作的完整列表,请参阅《 用户指南》中的 AWS Secrets Manager 的操作、资源和条件键IAM。

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

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

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

资源类型 ARN 格式

Secret

arn:aws-cn:secretsmanager:<Region>:<AccountId>:secret: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

按用户向 Secrets Manager 发出的请求中包含的键筛选访问。

String

aws:TagKeys

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

String

secretsmanager:resource/AllowRotationLambdaArn

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

进行筛选

secretsmanager:BlockPublicPolicy

评估分配给密钥的资源策略,并阻止允许公有访问的任何策略。

布尔型

secretsmanager:Description

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

String

secretsmanager:ForceDeleteWithoutRecovery

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

布尔型

secretsmanager:KmsKeyId

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

布尔型

secretsmanager:Name

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

String

secretsmanager:RecoveryWindowInDays

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

长整型

secretsmanager:ResourceTag/<tag-key>

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

String

secretsmanager:RotationLambdaArn

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

进行筛选

secretsmanager:SecretId

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

进行筛选

secretsmanager:VersionId

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

String

secretsmanager:VersionStage

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

String

AWS 全局条件键

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

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

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

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

如果您将类似的策略附加到密钥,从而允许从公司网络 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 ManagerAWS Amazon VPC 提供的 终端节点PrivateLink。 您可以在 策略或基于资源的策略IAM中使用以下全局条件键,以允许或拒绝访问来自特定 VPC 或 VPC 终端节点的请求。

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

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

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