策略摘要(服务列表)
策略在三个表中概括:策略摘要、服务摘要和操作摘要。策略摘要表包括由所选策略定义的服务列表和权限摘要。
策略摘要表分为 Uncategorized services、Explicit deny 和 Allow 几部分。如果策略包含 IAM 无法识别的服务,则该服务将包含在表的 Uncategorized services(未分类服务)部分中。如果 IAM 能够识别服务,则该服务将包含在表的 Explicit deny(显式拒绝)或 Allow(允许)部分下,具体取决于策略作用的结果(Deny
或 Allow
)。
了解策略摘要的元素
在以下策略详细信息页面示例中,SummaryAllElements 策略是直接附加到用户的管理型策略(客户管理型策略)。此策略已展开,显示了策略摘要。
在上图中,策略摘要在策略页面内可见:
-
权限选项卡包括策略中定义的权限。
-
如果策略未向策略中定义的所有操作、资源和条件授予权限,则将在页面顶部显示警告或错误横幅。策略摘要中包含有关问题的详细信息。要了解策略摘要如何帮助您了解策略授予的权限并进行相关问题排查,请参阅我的策略未授予预期权限。
-
使用摘要和 JSON 按钮可在策略摘要和 JSON 策略文档之间切换。
-
使用搜索框可减少服务列表,查找特定服务。
-
展开的视图显示了 SummaryAllElements 策略的更多详细信息。
下面的策略摘要表图像显示在策略详细信息页面上已展开的 SummaryAllElements 策略。
在上图中,策略摘要在策略页面内可见:
-
对于 IAM 识别的那些服务,它根据策略是允许还是显式拒绝使用该服务来安排服务。在此示例中,策略包含用于 Amazon S3 服务的
Deny
语句和用于账单、CodeDeploy 和 Amazon EC2 服务的Allow
语句。 -
Service(服务)- 此列将列出在策略内定义的服务并提供每项服务的详细信息。策略摘要表中的每个服务名称都是指向服务摘要 表的一个链接,服务摘要(操作列表)中对其进行了说明。在此示例中,为 Amazon S3、账单、CodeDeploy 和 Amazon EC2 服务定义了权限。
-
访问级别 – 此列指出每个访问级别(
List
、Read
、Write
、Permission Management
和Tagging
)中的操作是具有策略中定义的Full
还是Limited
权限。有关访问权限级别摘要的更多详细信息和示例,请参阅策略摘要中的访问级别。-
Full access(完全访问权限)- 此条目指示服务对该服务可用的全部四个访问权限级别中的所有操作都拥有访问权限。
-
如果该项不包含 Full access,则服务可以访问部分但不是全部用于该服务的操作。然后,通过对各个访问级别分类(
List
、Read
、Write
、Permission Management
和Tagging
)的说明来定义访问权限:Full:策略提供对列出的每个访问级别分类中的所有操作的访问权限。在此示例中,策略提供对所有账单
Read
操作的访问权限。Limited:策略提供对所列每个访问级别分类内的一个或多个但不是全部操作的访问权限。在此示例中,策略提供对部分账单
Write
操作的访问权限。
-
-
Resource(资源)- 此列显示策略为每项服务指定的资源。
-
Multiple(多个)- 策略包含服务内多个但不是全部资源。在此示例中,显式拒绝对多个 Amazon S3 资源的访问权限。
-
所有资源 – 策略是为服务内的所有资源定义的。在此示例中,策略允许对所有账单资源执行列出的操作。
-
Resource text - 该策略包含服务内的一个资源。在此示例中,只允许对
DeploymentGroupName
CodeDeploy 资源执行列出的操作。根据服务提供给 IAM 的信息,您可能会看到 ARN 或定义的资源类型。注意
此列可以包括来自不同服务的资源。如果包含资源的策略语句不包括来自同一服务的操作和资源,则您的策略将包括不匹配的资源。在创建策略或在策略摘要中查看策略时,IAM 不会就不匹配的资源向您发出警告。如果此列包含不匹配的资源,那么您应该查看策略中是否有错误。为了更好地了解您的策略,请始终使用策略模拟器进行测试。
-
-
Request condition(请求操作)- 此列指示与资源关联的服务或操作是否受条件约束。
-
None(无)- 策略对服务不包含任何条件。在此示例中,没有条件适用于 Amazon S3 服务中拒绝的操作。
-
Condition text - 策略对服务包含一个条件。在此示例中,仅当源的 IP 地址与
203.0.113.0/24
匹配时,才允许执行列出的账单操作。 -
Multiple(多个)- 策略对服务包含多个条件。要查看策略多个条件中的每一个条件,请选择 JSON 查看策略文档。
-
-
显示剩余服务 – 切换此按钮可展开表以包含策略未定义的服务。这些服务在该策略中被隐式拒绝 (或默认拒绝)。但是,另一策略中的语句可能仍然允许或显式拒绝使用该服务。策略摘要汇总了单个策略的权限。要了解 AWS 服务如何决定是允许还是拒绝给定的请求,请参阅策略评估逻辑。
当策略或策略中的元素未授予权限时,IAM 在策略摘要中提供额外的警告和信息。下面的策略摘要表显示了在 SummaryAllElements 策略详细信息页面上展开的显示剩余的服务,并附带可能的警告。
在上图中,您可以看到包含没有权限的既定操作、资源或条件的所有服务:
-
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
条件键。如果修复了资源问题或条件问题,详细警告中将显示剩余问题。 -
-
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. (一个或多个条件没有适用的操作。) - 这意味着服务定义了一些条件,但其中的一些条件没有支持的操作。
-
-
Multiple | One or more actions do not have an applicable resource. (一个或多个操作没有适用的资源。) - Amazon S3 的
Deny
语句包含多个资源。它还包含多个操作,但其中一些操作支持资源,一些不支持。要查看该策略,请参阅 SummaryAllElements JSON 策略文档。在这种情况下,策略包含所有 Amazon S3 操作,只拒绝可在存储桶或存储桶对象上执行的操作。 -
No resources are defined 服务具有定义的操作,但策略中不包含支持的资源,因此服务不提供任何权限。在这种情况下,策略包含 CodeCommit 操作但不包含 CodeCommit 资源。
-
DeploymentGroupName | 字符串示例 | All, region | 字符串示例 | us-west-2 | 一个或多个资源没有适用的操作。– 服务具有定义的操作和至少一个没有支持资源的操作。
-
无 | 一个或多个条件没有适用的操作。– 服务具有至少一个没有支持操作的条件键。
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:::amzn-s3-demo-bucket",
"arn:aws:s3:::amzn-s3-demo-bucket/*",
"arn:aws:autoscling:us-east-2:123456789012:autoscalgrp"
],
"Condition": {
"StringEquals": {
"s3:x-amz-acl": [
"public-read"
],
"s3:prefix": [
"custom",
"other"
]
}
}
}
]
}