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

基于身份的策略和基于资源的策略

策略是 AWS中的对象;在与标识或资源相关联时,策略定义它们的权限。在创建权限策略以限制对资源的访问时,您可以选择基于身份的策略基于资源的策略

基于身份的策略附加到 IAM 用户、组或角色。这些策略可让您指定该身份可执行哪些操作(其权限)。例如,您可以将策略附加到名为 John 的 IAM 用户,以声明允许他执行 Amazon EC2 RunInstances 操作。该策略可能会进一步声明,John 可以从名为 MyCompany 的 Amazon DynamoDB 表中获取项目。您也可以允许 John 管理自己的 IAM 安全凭证。基于标识的策略可以是托管或内联的。

基于资源的策略附加到某个资源。例如,您可以将基于资源的策略附加到 Amazon S3 存储桶、Amazon SQS 队列和 AWS Key Management Service 加密密钥。有关支持基于资源的策略的服务列表,请参阅使用 IAM 的 AWS 服务。通过使用基于资源的策略,您可以指定哪些用户有权访问资源,以及他们可以对资源执行哪些操作。基于资源的策略只有内联的,没有托管的。

注意

基于资源 的策略与资源级 权限不同。如本主题所述,您可以直接将基于资源的策略附加到某一资源。资源级权限是指使用 ARN 在策略中指定各项资源的能力。只有部分 AWS 服务支持基于资源的策略。有关支持基于资源的策略和资源级权限的服务列表,请参阅使用 IAM 的 AWS 服务

要更好地了解这些概念,请查看下图。123456789012 账户的管理员已将基于身份的策略 附加到 JohnSmithCarlosSalazarMaryMajor 用户。可对特定资源执行这些策略中的一些操作。例如,用户 JohnSmith 可以对 Resource X 执行一些操作。这是基于身份的策略中的资源级权限。管理员还将基于资源的策略 添加到 Resource XResource YResource Z。利用基于资源的策略,您可以指定谁可以访问资源。例如,Resource X 上的基于资源的策略允许用户 JohnSmithMaryMajor 列出和读取资源。


         基于身份的策略与基于资源的策略

123456789012 账户示例允许以下用户执行列出的操作:

  • JohnSmith – 可以对 Resource X 执行列出和读取操作。已通过基于身份的策略(针对其用户)和基于资源的策略(针对 Resource X)向他授予此权限。

  • CarlosSalazar – Carlos 可对 Resource Y 执行列出、读取和写入操作,但被拒绝访问 Resource Z。Carlos 的基于身份的策略允许他对 Resource Y 执行列出和读取操作。基于 Resource Y 资源的策略还向他授予写入权限。不过,尽管其基于身份的策略允许他访问 Resource Z,但基于 Resource Z 资源的策略拒绝该访问。显式 Deny 会覆盖 Allow,并拒绝他对 Resource Z 进行的访问。有关更多信息,请参阅 策略评估逻辑

  • MaryMajor – Mary 可对 Resource XResource YResource Z 执行列出、读取和写入操作。与基于资源的策略相比,她的基于身份的策略允许她对更多资源执行更多操作,但都不拒绝访问。

  • ZhangWei – 具有 Resource Z 的完全访问权限。Zhang 没有基于身份的策略,但基于 Resource Z 资源的策略向他授予对资源的完全访问权限。

基于身份的策略和基于资源的策略都属于权限策略,并且将一起评估。对于仅将权限策略应用于的请求,AWS 将先检查 Deny 的所有策略。如果存在一个此类策略,则该请求将被拒绝。然后,AWS 检查每个 Allow。如果至少一个策略语句允许请求中的操作,则将允许此请求。无论 Allow 是在基于身份的策略中还是基于资源的策略中,都无关紧要。

重要

此逻辑仅当请求在单个 AWS 账户中发出时适用。对于从一个账户向另一个账户发出的请求,Account A 中的请求者必须具有基于身份的策略,该策略允许其向 Account B 中的资源发出请求。此外,Account B 中的基于资源的策略必须允许 Account A 中的请求者访问资源。如果这两个账户中的策略都不允许此操作,则请求将失败。有关将基于资源的策略用于跨账户访问的更多信息,请参阅 IAM 角色与基于资源的策略有何不同

具有特定权限的用户可能会请求也附加了权限策略的资源。在这种情况下,在确定是否授予资源的访问权限时,AWS 将评估这两组权限。有关如何评估策略的信息,请参阅策略评估逻辑

注意

Amazon S3 支持基于身份的策略和基于资源的策略(称为存储桶策略)。此外,Amazon S3 还支持称为访问控制列表 (ACL) 的权限机制,该机制独立于 IAM 策略和权限。您可以将 IAM 策略与 Amazon S3 ACL 结合使用。有关更多信息,请参阅 Amazon Simple Storage Service 开发人员指南 中的访问控制