疑难解答 Amazon Organizations 政策 - Amazon Organizations
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

疑难解答 Amazon Organizations 政策

使用此处的信息可帮助您诊断和修复在 Amazon Organizations 策略中找到的常见错误。

服务控制策略

中的服务控制策略 (SCP) Amazon Organizations 与 IAM 策略类似,语法相同。此语法从JavaScript 对象表示法 (JSON) 的规则开始。JSON 描述对象 以及组成对象的名称和值对。IAM 策略语法通过定义有意义的名称和值进行构建,使用策略授予权限的 Amazon 服务可以理解这些名称和值。

Amazon Organizations 使用 IAM 语法和语法的子集。有关更多信息,请参阅 SCP 语法

多个策略对象

一个 SCP 必须包含一个并且只能包含一个 JSON 对象。可通过在两旁放置 { } 括号来表示对象。虽然您可以通过在外部对中嵌入额外 { } 括号在 JSON 对象中嵌套其他对象,但是一个策略只能包含一个最外层的 { } 括号对。以下示例不正确,因为它在顶层包含两个对象 (以红色标示):

{ "Version": "2012-10-17", "Statement": { "Effect":"Allow", "Action":"ec2:Describe*", "Resource":"*" } } { "Statement": { "Effect": "Deny", "Action": "s3:*", "Resource": "*" } }

不过,您可以使用正确的策略语法来实现上面示例的意图。可以将两个数据块合并到单个 Statement 元素中,而不是包含两个完整的策略对象 (每个都有自己的 Statement 元素)。Statement 元素将两个对象组成的数组作为其值,如以下示例所示:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "ec2:Describe*", "Resource":" *" }, { "Effect": "Deny", "Action": "s3:*", "Resource": "*" } ] }

无法将此示例进一步压缩到带一个元素的 Statement 中,因为两个元素具有不同的作用。通常,您只能在每个语句中的 EffectResource 元素相同时组合语句。

多个 Statement 元素

此错误乍一看似乎是由上一部分中的错误变化而来的。但是,它在句法上是不同类型的错误。在以下示例中,顶层只有一个策略对象,由单个 { } 括号对表示。但是,该对象包含两个 Statement 元素。

一个 SCP 策略只能包含一个 Statement 元素,名称 (Statement) 在冒号左侧,它的值在冒号右侧。Statement 元素的值必须是对象,以 { } 括号表示,其中包含一个 Effect 元素、一个 Action 元素和一个 Resource 元素。以下示例不正确,因为它在策略对象中包含两个 Statement 元素:

{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": "ec2:Describe*", "Resource": "*" }, "Statement": { "Effect": "Deny", "Action": "s3:*", "Resource": "*" } }

因为值对象可以是多个值对象组成的数组,所以您可以通过将两个 Statement 元素合并为一个对象数组元素来解决此问题,如以下示例所示:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "ec2:Describe*", "Resource":"*" }, { "Effect": "Deny", "Action": "s3:*", "Resource": "*" } ] }

Statement 元素的值是对象数组。此示例中的数组包含两个对象,每个对象是 Statement 元素的正确值。数组中的每个对象之间用逗号隔开。

策略文档超出最大大小

SCP 文档的最大大小为 5,120 个字符。此最大大小包括所有字符,含空格。要减小 SCP 的大小,您可以删除引号之外的所有空格字符(如空格和换行符)。

注意

如果您使用保存策略 Amazon Web Services Management Console,则 JSON 元素之间和引号之外的多余空格将被移除且不计算在内。如果您使用 SDK 操作或保存策略 Amazon CLI,则策略将完全按照您提供的方式保存,并且不会自动删除字符。