AWS Identity and Access Management
用户指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 Amazon AWS 入门

AssumeRole、AssumeRoleWithSAML 和 AssumeRoleWithWebIdentity 的权限

所代入的角色的权限策略决定由 AssumeRoleAssumeRoleWithSAMLAssumeRoleWithWebIdentity 返回的临时安全凭证的权限。您可在创建或更新该角色时定义这些权限。

(可选)您可以将 JSON 策略作为 AssumeRoleAssumeRoleWithSAMLAssumeRoleWithWebIdentity API 操作的参数进行传递。此会话策略限制角色的临时凭证会话的权限。您可以在后续的 AWS API 调用中使用角色的临时凭证来访问拥有该角色的账户中的资源。您无法使用会话策略授予所代入的角色的基于身份的策略不允许的权限。要了解有关 AWS 如何确定角色的有效权限的更多信息,请参阅策略评估逻辑


      PermissionsWhenPassingRoles_Diagram

在做出“允许”或“拒绝”授权决定时,AWS 不会对附加至发出 AssumeRole 原始调用的凭证的策略进行评估。用户将临时放弃其原始权限,以支持代入的角色所分配的权限。对于 AssumeRoleWithSAMLAssumeRoleWithWebIdentity API 操作,不会有任何策略受到评估,因为这些 API 的发起人不是 AWS 身份。

示例:使用 AssumeRole 分配权限

您可以将 AssumeRole API 操作与不同类型的策略结合使用。下面是几个示例。

角色权限策略

在本示例中,您调用 AssumeRole API 操作,而无需在可选 Policy 参数中指定会话策略。分配给临时凭证的权限取决于所代入角色的权限策略。以下示例权限策略向角色授予权限,允许该角色列出名为 productionapp 的 S3 存储桶中包含的所有对象。它还允许该角色获取、放置和删除该存储桶中的对象。

例 角色权限策略

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "s3:ListBucket", "Resource": "arn:aws-cn:s3:::productionapp" }, { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:PutObject", "s3:DeleteObject" ], "Resource": "arn:aws-cn:s3:::productionapp/*" } ] }

作为参数传递的会话策略

假设您希望允许某用户代入上例中的相同角色。但在这种情况下,您希望角色会话只具有在 productionapp S3 存储桶中获取和放入对象的权限。您不希望允许他们删除对象。达到这一目的的一种方式是创建一个新角色,并在该角色的权限策略中指定所需的权限。达到这一目的的另一种方式是调用 AssumeRole API 并在可选的 Policy 参数中包含会话策略作为 API 操作的一部分。生成的会话仅具有由该角色的基于身份的策略和会话策略这两者授予的权限。请注意,无法使用该策略提升权限以超出允许担任的角色访问的内容。有关角色会话权限的更多信息,请参阅会话策略

例如,假设将以下策略作为该 API 调用的参数传递。使用会话的用户只具备执行以下操作的权限:

  • 列出 productionapp 存储桶中的所有对象。

  • 获取 productionapp 存储桶中的对象或向其中上传对象。

在以下会话策略中,s3:DeleteObject 权限已被筛选掉,因此,未向代入的会话授予 s3:DeleteObject 权限。该策略为角色会话设置最大权限,以便它覆盖角色上的任何现有权限策略。

例 通过 AssumeRole API 调用传递的会话策略

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "s3:ListBucket", "Resource": "arn:aws-cn:s3:::productionapp" }, { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:PutObject" ], "Resource": "arn:aws-cn:s3:::productionapp/*" } ] }

基于资源的策略

某些 AWS 资源支持基于资源的策略,这些策略提供另一种机制用于定义影响临时安全凭证的权限。仅几种资源(如 Amazon S3 存储桶、Amazon SNS 主题和 Amazon SQS 队列)支持基于资源的策略。以下示例是前例的扩展,其中使用了一个名为 productionapp 的 S3 存储桶。以下策略被附加到该存储桶。

将下面基于资源的策略附加至 productionapp 存储桶后,所有 用户的删除该存储桶中对象的权限均会遭拒(请留意该策略中的 Principal 元素)。这包括所有代入角色的用户(即使角色权限策略授予了 DeleteObject 权限)。显式 Deny 声明总是优先于 Allow 声明。

例 存储桶策略

{ "Version": "2012-10-17", "Statement": { "Principal": {"AWS": "*"}, "Effect": "Deny", "Action": "s3:DeleteObject", "Resource": "arn:aws-cn:s3:::productionapp/*" } }

有关 AWS 如何对多个策略类型进行合并和评估的更多信息,请参阅策略评估逻辑