基于身份的策略 - AWS Secrets Manager
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

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

基于身份的策略

您可以向 IAM 身份挂载策略。例如,您可以执行以下操作:

  • 将权限策略附加到您的账户中的用户或组 – 要为用户授予权限以创建密钥,您可以将权限策略直接附加到用户或用户所属的组(建议)。

  • 将权限策略附加到角色 – 您可以将权限策略附加到 IAM 角色,以便为担任该角色的任何人授予密钥的访问权限。这包括以下场景中的用户:

    • 联合身份用户 – 您可以为通过 IAM 以外的身份系统进行身份验证的用户授予权限。例如,您可以将 IAM 角色与使用 Amazon Cognito 登录的移动应用程序用户相关联。角色为应用程序授予具有角色权限策略中的权限的临时凭证。这些权限可以包含密钥访问权限。有关更多信息,请参阅 中的什么是 ?。

    • 在 EC2 实例上运行的应用程序 – 您可以将 IAM 角色附加到 Amazon EC2 实例,以便为在实例上运行的应用程序授予权限。在实例中的应用程序调用 AWS API 时,该应用程序可以从实例元数据中获取 AWS 临时凭证。这些临时凭证与角色相关联,并受角色权限策略的限制。这些权限可以包含密钥访问权限。

    • 跨账户访问 – 账户 A 中的管理员可以创建角色,以便为不同的账户 B 中的用户授予权限。例如:

      1. 账户 A 管理员创建一个 IAM 角色,并将一个权限策略附加到该角色。该策略授予账户 A 中的密钥的访问权限,并指定用户对密钥执行的操作。

      2. 账户 A 管理员将一个信任策略附加到角色,以便在 Principal 元素中指定账户 B 的账户 ID 以指定谁担任该角色。

      3. 然后,账户 B 管理员可以将权限委派给账户 B 中的任何用户,以使他们能够担任账户 A 角色。这样做允许账户 B 中的用户访问第一个账户中的密钥。

有关使用 IAM 委派权限的更多信息,请参阅 https://docs.amazonaws.cn/IAM/latest/UserGuide/access.html 中的IAM 用户指南访问权限管理

以下示例策略可以附加到用户、组或角色。该策略允许受影响的用户或角色在您的账户中仅对名称以路径“TestEnv/”开头的密钥执行 DescribeSecretGetSecretValue 操作。该策略还将用户或角色限制为仅检索附加了 AWSCURRENT 暂存标签的密钥版本。替换 <region><account_id> 以下示例中的 占位符替换为您的实际值。

{ "Version": "2012-10-17", "Statement": [ { "Sid" : "Stmt1DescribeSecret", "Effect": "Allow", "Action": [ "secretsmanager:DescribeSecret" ], "Resource": "arn:aws:secretsmanager:<region>:<account_id>:secret:TestEnv/*" }, { "Sid" : "Stmt2GetSecretValue", "Effect": "Allow", "Action": [ "secretsmanager:GetSecretValue" ], "Resource": "arn:aws:secretsmanager:<region>:<account_id>:secret:TestEnv/*", "Condition" : { "ForAnyValue:StringLike" : { "secretsmanager:VersionStage" : "AWSCURRENT" } } } ] }

因为密钥版本可以附加多个暂存标签,所以您需要使用 IAM 策略语言的“集合运算符”在策略中比较它们。在前面的示例中,ForAnyValue:StringLike 声明如果附加到正在评估的密钥版本的任一暂存标签与字符串“AWSCURRENT”匹配,则该语句匹配并应用 Effect 字符串。

有关更多基于身份的策略示例,请参阅 对 IAM 使用基于身份的策略(Secrets Manager 策略)和 ABAC。有关用户、组、角色和权限的更多信息,请参阅 IAM 用户指南 中的身份(用户、组和角色)。