使用 對服務控制政策 (SCPs進行故障診斷AWS Organizations - AWS Organizations

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用 對服務控制政策 (SCPs進行故障診斷AWS Organizations

使用此處的資訊來協助您診斷和修正服務控制政策 (SCPs中常見的錯誤。

中的服務控制政策 (SCPs) AWS Organizations類似於 IAM 政策,並共用通用語法。此語法的開頭為 JavaScript 物件標記法 (JSON) 規則。JSON 描述物件,其具有的名稱和值組會構成物件。IAM 政策文法是以該文法為基礎,定義哪些名稱和值具有意義,並由使用政策授予許可AWS 服務的 了解。

AWS Organizations使用 IAM 語法和文法的子集。如需詳細資訊,請參閱SCP 語法

多個政策物件

一個 SCP 必須僅包含一個 JSON 物件。可在兩旁放置 { } 括弧來表示物件。雖然您可以在外側括弧對中嵌入額外的 { } 括弧以在 JSON 物件中巢套其他物件,但是一個政策只能包含一個最外層的 { } 括弧對。以下範例不正確,因為它在最上層包含兩個物件 (以紅色標示):

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "ec2:Describe*", "Resource": "*" }, { "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 元素。

一個 SCP 只能包含一個 Statement 元素,名稱 (Statement) 在冒號左側,它的值在冒號右側。Statement 元素的值必須是物件,以 { } 括弧表示,其中包含一個 Effect 元素、一個 Action 元素和一個 Resource 元素。以下範例不正確,因為在政策物件中包含兩個 Statement 元素:

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

由於值物件可以是多個值物件的陣列,您可以將兩個 Statement 元素結合到具有物件陣列的一個元素來解決這個問題,如以下範例所示:

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

Statement 元素的值是一種物件陣列。此範例中的陣列包含兩個物件,每個物件是 Statement 元素的正確值。陣列中的每個物件之間用逗號隔開。

政策文件大小超過上限

SCP 文件的大小上限是 5,120 個字元。此大小上限包括所有字元 (包含空格)。若要減少 SCP 的大小,您可以移除引號外部的所有空格字元 (例如空格和換行字元)。

注意

如果您使用 來儲存政策AWS 管理主控台,則 JSON 元素與引號外部之間的額外空格會被移除且不計算在內。如果您使用 SDK 操作或 儲存政策AWS CLI,則政策會完全按照您提供的方式儲存,而不會自動移除字元。