策略摘要(服务列表) - Amazon Identity and Access Management
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

策略摘要(服务列表)

策略在三个表中概括:策略摘要、服务摘要操作摘要策略摘要表包括由所选策略定义的服务列表和权限摘要。


      阐释这 3 个表以及它们之间关系的策略摘要图

策略摘要表分为 Uncategorized servicesExplicit denyAllow 几部分。如果策略包含 IAM 无法识别的服务,则该服务将包含在表的 Uncategorized services(未分类服务)部分中。如果 IAM 能够识别服务,则该服务将包含在表的 Explicit deny(显式拒绝)或 Allow(允许)部分下,具体取决于策略作用的结果(DenyAllow)。

查看策略摘要

您可以在 Users 页面上查看附加到用户的任何策略的摘要。您可以在 Roles 页面上查看附加到角色的任何策略的摘要。可以在 Policies 页面上查看托管策略的策略摘要。如果您的策略不包含策略摘要,请参阅缺少策略摘要了解原因。

Policies 页面查看策略摘要
  1. 登录Amazon Web Services Management Console,然后通过以下网址打开 IAM 控制台:https://console.aws.amazon.com/iam/

  2. 在导航窗格中,选择 Policies (策略)

  3. 在策略列表中,选择要查看的策略的名称。

  4. 在策略的 Summary 页面上,查看 Permissions 选项卡以查看策略摘要。

查看附加到用户的策略的摘要
  1. 登录Amazon Web Services Management Console,然后通过以下网址打开 IAM 控制台:https://console.aws.amazon.com/iam/

  2. 从导航窗格中选择 Users

  3. 在用户列表中,选择要查看其策略的用户的名称。

  4. 在用户的 Summary 页面上,查看 Permissions 选项卡,以查看直接附加到用户或从组附加到用户的策略列表。

  5. 在用户的策略表中,展开要查看的策略的行。

查看附加到角色的策略的摘要
  1. 登录 Amazon Web Services Management Console,然后通过以下网址打开 IAM 控制台:https://console.aws.amazon.com/iam/

  2. 在导航窗格中,选择角色

  3. 在角色列表中,选择要查看其策略的角色的名称。

  4. 在角色的 Summary 页面上,查看 Permissions 选项卡,以查看附加到角色的策略列表。

  5. 在角色的策略表中,展开要查看的策略的行。

编辑策略以纠正警告

在查看策略摘要时,您可能会发现拼写错误,或者注意到策略未提供所需的权限。您无法直接编辑策略摘要。不过,您可以使用可视化策略编辑器编辑客户管理的策略,该编辑器捕获策略摘要报告的很多相同的错误和警告。然后,您可以在策略摘要中查看更改以确认纠正了所有问题。要了解如何编辑内联策略,请参阅编辑 IAM policy 。您无法编辑 Amazon 托管策略。

使用可视化编辑器选项卡为您的策略摘要编辑策略
  1. 按照上述步骤中的说明打开策略摘要。

  2. 选择编辑策略

    如果您已打开用户页面,请选择编辑附加到该用户的客户托管策略,之后您会被重定向到策略页面。您只能在 Policies 页面上编辑客户托管策略。

  3. 请选择 Visual editor(可视化编辑器)选项卡以查看您的策略的可编辑可视化形式。IAM 可能会调整您的策略结构以针对可视化编辑器进行优化,并使您更轻松地查找和解决任何问题。页面上的警告和错误消息可以指导您解决策略中的任何问题。有关 IAM 如何调整策略结构的更多信息,请参阅 调整策略结构

  4. 编辑您的策略,然后选择查看策略以查看是否在策略摘要中反映了更改。如果仍出现问题,请选择上一步以返回到编辑屏幕。

  5. 选择 Save (保存) 以保存您的更改。

使用 JSON 选项卡为您的策略摘要编辑策略
  1. 按照上述步骤中的说明打开策略摘要。

  2. 选择 { } JSONPolicy summary 将策略摘要与 JSON 策略文档进行比较。您可以使用该信息来确定要更改策略文档中的哪些行。

  3. 选择编辑策略,然后选择 JSON 选项卡以编辑 JSON 策略文档。

    注意

    您可以随时在可视化编辑器JSON 选项卡之间切换。不过,如果您进行更改或在可视化编辑器选项卡中选择 Review policy (查看策略),IAM 可能会调整您的策略结构以针对可视化编辑器进行优化。有关更多信息,请参阅调整策略结构

    如果您已打开用户页面,请选择编辑附加到该用户的客户托管策略,之后您会被重定向到策略页面。您只能在 Policies 页面上编辑客户托管策略。

  4. 编辑策略。解决策略验证过程中生成的任何安全警告、错误或常规警告,然后选择 Review policy(查看策略)。如果仍出现问题,请选择上一步以返回到编辑屏幕。

  5. 选择 Save (保存) 以保存您的更改。

了解策略摘要的元素

在下面的用户详细信息页面示例中,PolSumUser 用户附加有八个策略。SummaryAllElements 策略是直接附加到用户的托管策略 (用户管理策略)。此策略已展开,显示了策略摘要。要查看该策略的 JSON 策略文档,请参阅SummaryAllElements JSON 策略文档


        “Policy summary (策略摘要)”对话框图像

在上图中,策略摘要在用户详细信息页面内可见:

  1. 用户的 Permissions 选项卡包含附加到 PolSumUser 用户的策略。

  2. SummaryAllElements 策略是附加到用户的几个策略之一。此策略已展开,显示了策略摘要。

  3. 如果策略未向策略中定义的所有操作、资源和条件授予权限,则将在页面顶部显示警告或错误横幅。策略摘要中包含有关问题的详细信息。要了解策略摘要如何帮助您了解策略授予的权限并进行相关问题排查,请参阅我的策略未授予预期权限

  4. 使用 Policy summary{ } JSON 按钮可在策略摘要和 JSON 策略文档之间切换。

  5. Simulate policy 可打开用于测试策略的策略模拟器。

  6. 使用搜索框可减少服务列表,轻松查找特定服务。

  7. 展开的视图显示了 SummaryAllElements 策略的更多详细信息。

下面的策略摘要表图像显示在 PolSumUser 用户详细信息页面上的已展开 SummaryAllElements 策略。


        “Policy summary (策略摘要)”对话框图像

在上图中,策略摘要在用户详细信息页面内可见:

  1. Service(服务)- 此列将列出在策略内定义的服务并提供每项服务的详细信息。策略摘要表中的每个服务名称都是指向服务摘要 表的一个链接,服务摘要(操作列表)中对其进行了说明。在此示例中,为 Amazon S3、账单和 Amazon EC2 服务定义了权限。该策略还为 IAM 无法识别的(拼写错误的)codedploy 服务定义了权限。

  2. Unrecognized services(无法识别的服务)- 此策略包括一个无法识别的服务(在此示例中为 codedploy )。您可以使用此警告来检查服务名称是否可能包含拼写错误。如果服务名称正确,则该服务可能不支持策略摘要,可能处于预览状态,或者可能是自定义服务。要为公开提供 (GA) 服务请求策略摘要支持,请参阅服务不支持 IAM policy 摘要。在此示例中,策略包括一个无法识别的 codedploy 服务,其名称中缺少一个 e。由于这种拼写错误,该策略不提供预期的 Amazon CodeDeploy 权限。您可以编辑策略以包括准确的 codedeploy 服务名称;随后该服务将出现在策略摘要中。

  3. 对于 IAM 识别的那些服务,它根据策略是允许还是显式拒绝使用该服务来安排服务。在此示例中,策略包含用于 Amazon S3 服务的 AllowDeny 语句。因此,策略摘要在 Explicit denyAllow 部分中都包含 S3。

  4. Show remaining 100(显示剩余 100 个)- 选择此链接可展开表以包含策略未定义的服务。这些服务在该策略中被隐式拒绝 (或默认拒绝)。但是,另一策略中的语句可能仍然允许或显式拒绝使用该服务。策略摘要汇总了单个策略的权限。要了解 Amazon 服务如何决定是允许还是拒绝给定的请求,请参阅策略评估逻辑

  5. EC2 — 此服务包括未识别的操作。IAM 将识别支持策略摘要的服务的服务名称、操作和资源类型。如果已识别某个服务,但无法识别该服务包含的操作,IAM 将在该服务旁边显示一条警告。在此示例中,IAM 至少无法识别一个 Amazon EC2 操作。要了解无法识别的操作的更多信息,并查看 S3 服务摘要中无法识别的操作,请参阅服务摘要(操作列表)

    注意

    IAM 将检查支持策略摘要的服务的服务名称、操作和资源类型。但是,您的策略摘要可能包含不存在的资源值或条件。始终通过策略模拟器测试您的策略。

  6. S3 — 此服务包括未识别的资源。IAM 将识别支持策略摘要的服务的服务名称、操作和资源类型。如果已识别某个服务,但无法识别该服务包含的资源类型,IAM 将在该服务旁边显示一条警告。在此示例中,IAM 至少无法识别一个 Amazon S3 操作。要了解无法识别的资源的更多信息,并查看 S3 服务摘要中无法识别的资源类型,请参阅服务摘要(操作列表)

  7. Access level(访问级别)- 此列指出每个访问级别(ListReadWritePermissions management)中的操作是具有策略中定义的 Full 还是 Limited 权限。有关访问权限级别摘要的更多详细信息和示例,请参阅了解策略摘要内的访问级别摘要

    • Full access(完全访问权限)- 此条目指示服务对该服务可用的全部四个访问权限级别中的所有操作都拥有访问权限。在此示例中,因为此行在表的 Explicit deny(显式拒绝)部分中,所以将对策略中包含的资源拒绝所有 Amazon S3 操作。

    • 如果该项不包含 Full access,则服务可以访问部分但不是全部用于该服务的操作。然后,通过对四个访问级别分类 (ListReadWritePermissions management) 中的每个分类的说明来定义访问权限:

      Full:策略提供对列出的每个访问级别分类中的所有操作的访问权限。在此示例中,策略提供对所有账单 Read 操作的访问权限。

      Limited:策略提供对所列每个访问级别分类内的一个或多个但不是全部操作的访问权限。在此示例中,策略提供对部分账单 Write 操作的访问权限。

  8. Resource(资源)- 此列显示策略为每项服务指定的资源。

    • Multiple(多个)- 策略包含服务内多个但不是全部资源。在此示例中,显式拒绝对多个 Amazon S3 资源的访问权限。

    • All resources(所有资源)- 策略是为服务内的所有资源定义的。在此示例中,策略允许对所有账单资源执行列出的操作。

    • Resource text - 该策略包含服务内的一个资源。在此示例中,只允许对 developer_bucket Amazon S3 存储桶资源执行列出的操作。根据服务提供给 IAM 的信息,您可能会看到一个 ARN(如 arn:aws:s3:::developer_bucket/*),或者您可能会看到定义的资源类型(如 BucketName = developer_bucket)。

      注意

      此列可以包括来自不同服务的资源。如果包含资源的策略语句不包括来自同一服务的操作和资源,则您的策略将包括不匹配的资源。在创建策略或在策略摘要中查看策略时,IAM 不会就不匹配的资源向您发出警告。如果此列包含不匹配的资源,那么您应该查看策略中是否有错误。为了更好地了解您的策略,请始终使用策略模拟器进行测试。

  9. Request condition(请求操作)- 此列指示与资源关联的服务或操作是否受条件约束。

    • None(无)- 策略对服务不包含任何条件。在此示例中,没有条件适用于 Amazon S3 服务中拒绝的操作。

    • Condition text - 策略对服务包含一个条件。在此示例中,仅当源的 IP 地址与 203.0.113.0/24 匹配时,才允许列出的账单操作。

    • Multiple(多个)- 策略对服务包含多个条件。在此示例中,基于多个条件允许对列出的 Amazon S3 操作的访问权限。要查看策略多个条件中的每一个条件,请选择 { } JSON 查看策略文档。

当策略或策略中的元素未授予权限时,IAM 在策略摘要中提供额外的警告和信息。下面的策略摘要表显示了在 PolSumUser 用户详细信息页面上展开的 Show remaining 100(显示剩余 100 条)服务,并附带可能的警告。


        “Policy summary (策略摘要)”对话框图像

在上图中,您可以看到包含没有权限的既定操作、资源或条件的所有服务:

  1. Resource warnings(资源警告)- 对于没有为所有包含的操作或资源提供权限的服务,您将在表的 Resource(资源)列中看到以下警告之一:

    • No resources are defined. (未定义任何资源。) - 这意味着服务具有定义的操作,但策略不包含支持的资源。

    • One or more actions do not have an applicable resource. (一个或多个操作没有适用的资源。) - 这意味着该服务具有定义的操作,但其中的一些操作没有支持的资源。

    • One or more resources do not have an applicable action. (一个或多个资源没有适用的操作。) - 这意味着该服务具有定义的资源,但其中的一些资源没有支持的操作。

    如果服务同时包含没有适用资源的操作和没有适用操作的资源,则显示 One or more resources do not have an applicable action. (一个或多个资源没有适用的操作。) 警告。这是因为:当您查看服务的服务摘要时,不会显示不适用于任何操作的资源。对于 ListAllMyBuckets 操作,该策略包含最后一条警告,因为该操作不支持资源级权限,也不支持 s3:x-amz-acl 条件键。如果修复了资源问题或条件问题,详细警告中将显示剩余问题。

  2. Request condition warnings(请求条件警告)- 对于没有为所有包含的条件提供权限的服务,您将在表的 Request condition(请求条件)列中看到以下警告之一:

    • One or more actions do not have an applicable condition. (一个或多个操作没有适用的条件。) - 这意味着服务具有定义的操作,但其中的一些操作没有支持的条件。

    • One or more conditions do not have an applicable action. (一个或多个条件没有适用的操作。) - 这意味着服务定义了一些条件,但其中的一些条件没有支持的操作。

  3. Multiple | One or more actions do not have an applicable resource. (一个或多个操作没有适用的资源。) - Amazon S3 的 Deny 语句包含多个资源。它还包含多个操作,但其中一些操作支持资源,一些不支持。要查看该策略,请参阅 SummaryAllElements JSON 策略文档。在这种情况下,策略包含所有 Amazon S3 操作,只拒绝可在存储桶或存储桶对象上执行的操作。

  4. 省略号 (…) 表示在页面中包含所有服务,但我们只显示具有此策略相关信息的行。在 Amazon Web Services Management Console中查看该页面时,您将看到所有 Amazon 服务。

  5. 表中行的背景颜色表示不授予任何权限的服务。您无法在策略摘要中获取有关这些服务的任何其他信息。对于以白色行显示的服务,您可以选择服务名称查看服务摘要 (操作列表) 页面。在该页面中,您可以了解有关为该服务授予的权限的更多信息。

  6. None - No actions are defined. (无 - 未定义任何操作。) - 这意味着服务定义为资源或条件,但服务不包含任何操作,因此服务不提供任何权限。在这种情况下,策略包含 CodeBuild 资源但不包含 CodeBuild 操作。

  7. No resources are defined 服务具有定义的操作,但策略中不包含支持的资源,因此服务不提供任何权限。在这种情况下,策略包含 CodeCommit 操作但不包含 CodeCommit 资源。

  8. BucketName = developer_bucket, ObjectPath = All | One or more resources do not have an applicable action. (一个或多个资源没有适用的操作。) - 服务具有定义的存储桶对象资源和至少一个没有支持操作的资源。

  9. s3:x-amz-acl = public-read | One or more conditions do not have an applicable action. (一个或多个条件没有适用的操作。) - 服务具有定义的 s3:x-amz-acl 条件键和至少一个没有支持操作的条件键。

SummaryAllElements JSON 策略文档

SummaryAllElements 策略不适用于在账户中定义权限。包含它的目的在于演示您在查看策略摘要时可能会遇到的错误和警告。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "billing:Get*", "payments:List*", "payments:Update*", "account:Get*", "account:List*", "cur:GetUsage*" ], "Resource": [ "*" ], "Condition": { "IpAddress": { "aws:SourceIp": "203.0.113.0/24" } } }, { "Effect": "Deny", "Action": [ "s3:*" ], "Resource": [ "arn:aws:s3:::customer", "arn:aws:s3:::customer/*" ] }, { "Effect": "Allow", "Action": [ "ec2:GetConsoleScreenshots" ], "Resource": [ "*" ] }, { "Effect": "Allow", "Action": [ "codedploy:*", "codecommit:*" ], "Resource": [ "arn:aws:codedeploy:us-west-2:123456789012:deploymentgroup:*", "arn:aws:codebuild:us-east-1:123456789012:project/my-demo-project" ] }, { "Effect": "Allow", "Action": [ "s3:ListAllMyBuckets", "s3:GetObject", "s3:DeletObject", "s3:PutObject", "s3:PutObjectAcl" ], "Resource": [ "arn:aws:s3:::developer_bucket", "arn:aws:s3:::developer_bucket/*", "arn:aws:autoscling:us-east-2:123456789012:autoscalgrp" ], "Condition": { "StringEquals": { "s3:x-amz-acl": [ "public-read" ], "s3:prefix": [ "custom", "other" ] } } } ] }