策略摘要(服务列表) - AWS Identity and Access Management

策略摘要(服务列表)

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

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

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

查看策略摘要

您可以通过在用户详细信息页面的权限选项卡上选择策略名称,查看附加到用户的任何策略的摘要。您可以通过在角色详细信息页面的权限选项卡上选择策略名称,查看附加到角色的任何策略的摘要。可以在 Policies 页面上查看托管策略的策略摘要。如果您的策略不包含策略摘要,请参阅缺少策略摘要了解原因。

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

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

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

  4. 在策略的策略详细信息页面上,查看权限选项卡以查看策略摘要。

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

  2. 从导航窗格中选择 Users

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

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

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

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

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

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

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

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

编辑策略以纠正警告

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

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

  2. 选择编辑

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

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

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

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

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

  2. 您可以使用摘要JSON 按钮比较策略摘要和 JSON 策略文档。您可以使用该信息来确定要更改策略文档中的哪些行。

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

    注意

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

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

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

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

了解策略摘要的元素

在以下策略详细信息页面示例中,SummaryAllElements 策略是直接附加到用户的管理型策略(客户管理型策略)。此策略已展开,显示了策略摘要。

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

在上图中,策略摘要在策略页面内可见:

  1. 权限选项卡包括策略中定义的权限。

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

  3. 使用摘要JSON 按钮可在策略摘要和 JSON 策略文档之间切换。

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

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

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

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

在上图中,策略摘要在策略页面内可见:

  1. 对于 IAM 识别的那些服务,它根据策略是允许还是显式拒绝使用该服务来安排服务。在此示例中,策略包含用于 Amazon S3 服务的 Deny 语句和用于账单、CodeDeploy 和 Amazon EC2 服务的 Allow 语句。

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

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

    • Full access(完全访问权限)- 此条目指示服务对该服务可用的全部四个访问权限级别中的所有操作都拥有访问权限。

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

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

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

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

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

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

    • Resource text - 该策略包含服务内的一个资源。在此示例中,只允许对 DeploymentGroupName CodeDeploy 资源执行列出的操作。根据服务提供给 IAM 的信息,您可能会看到 ARN 或定义的资源类型。

      注意

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

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

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

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

    • Multiple(多个)- 策略对服务包含多个条件。要查看策略多个条件中的每一个条件,请选择 JSON 查看策略文档。

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

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

“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. (一个或多个资源没有适用的操作。) - 这意味着该服务具有定义的资源,但其中的一些资源没有支持的操作。

    如果服务同时包含没有适用资源的操作和有适用资源的资源,则显示警告:一个或多个资源没有适用的操作。这是因为:当您查看服务的服务摘要时,不会显示不适用于任何操作的资源。对于 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. No resources are defined 服务具有定义的操作,但策略中不包含支持的资源,因此服务不提供任何权限。在这种情况下,策略包含 CodeCommit 操作但不包含 CodeCommit 资源。

  5. DeploymentGroupName | 字符串示例 | All, region | 字符串示例 | us-west-2 | 一个或多个资源没有适用的操作。– 服务具有定义的操作和至少一个没有支持资源的操作。

  6. 无 | 一个或多个条件没有适用的操作。– 服务具有至少一个没有支持操作的条件键。

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" ] } } } ] }