限制对特定密钥的访问 - AWS Secrets Manager
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

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

限制对特定密钥的访问

除了限制对特定资源的访问,还可以限制对您的账户下特定密钥的访问。前面示例中的 Resource 元素均指定通配符(“*”),这表示“该操作可以与互的任何资源”。不过,您可以将“*”替换为您要允许访问的特定密钥的 ARN。

例 示例:按名称授予对单个密钥的权限

以下策略的第一个语句授予用户对账户中所有密钥的元数据的读取访问权限。不过,第二个语句允许用户仅对按名称指定的单个密钥(或者以字符串“another_secret_name-”开头并且后跟恰好 6 个字符的任何密钥)执行任何 Secrets Manager 操作:

通过以下网址打开 IAM 控制台:https://console.amazonaws.cn/iam/

选择创建策略并添加以下代码:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "secretsmanager:DescribeSecret", "secretsmanager:List*" ], "Resource": "*" }, { "Effect": "Allow", "Action": "secretsmanager:*", "Resource": [ "arn:aws:secretsmanager:<region>:<account-id-number>:secret:a_specific_secret_name-a1b2c3", "arn:aws:secretsmanager:<region>:<account-id-number>:secret:another_secret_name-??????" ] } ] }

使用“??????” 作为通配符以匹配 Secrets Manager 分配的 6 个随机字符,这避免了在改用“*”通配符时发生的问题。如果使用“another_secret_name-*”语法,Secrets Manager 不仅匹配具有 6 个随机字符的预期密钥,而且还匹配“another_secret_name-<anything-here>a1b2c3”。使用“??????” 语法使您能够安全地向尚不存在的密钥授予权限。发生这种情况是因为,您无法预测这 6 个随机字符,而只能预测 ARN 的所有其他部分。但要注意,如果删除密钥并以相同名称重新创建,即使 6 个字符发生变化,用户也会自动获得新密钥的权限。

您可以从 Secrets Manager 控制台(在密钥的 Details (详细信息) 页面上)或者通过调用 List* APIs 来获取密钥的 ARN。 将此策略应用到的用户或组只能对示例中的 ARN 标识的两个密钥执行任何操作 ("secretsmanager:*")。

如果您不关心拥有密钥的区域或账户,您必须为 ARN 的区域和账户 ID 号字段指定通配符 *,而不是空白字段。

有关各种资源的 ARNs 的更多信息,请参阅 您可以在 IAM 策略或密钥策略中引用的资源