疑難排解服務控制原則 (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物件嵌套在物件中,但政策只能包含一對最外層的 {} 大括號。下列範例不正確,因為它包含兩個位於頂層的物件 (呼叫於) red):

{ "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 元素。

一個SCP必須只包含一個Statement元素,由顯示在冒號左側的 name (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,您可以移除引號外的所有空格字元 (例如空格和換行符號)。

注意

如果您使用 AWS Management Console,JSON元素之間和引號之外的額外空格將被移除且不計算在內。如果您使用SDK作業或 AWS CLI,則會完全依照您提供的方式儲存原則,且不會自動移除字元。