AWS Organizations サービスコントロールポリシー (SCP) でのトラブルシューティング - AWS Organizations

AWS Organizations サービスコントロールポリシー (SCP) でのトラブルシューティング

サービスコントロールポリシー (SCP) で検出された共通のエラーを診断して変更するために、この情報を使用します。

AWS Organizations のサービスコントロールポリシー (SCP) は IAM ポリシーと類似しており、共通構文を共有します。この構文は、JavaScript Object Notation(JSON) のルールで始まります。JSON では、オブジェクトおよびオブジェクトを構成する名前と値のペアを指定します。IAM ポリシーの文法は、アクセス許可を付与するためにポリシーを使用する AWS のサービスに対して名前と値がどのような意味を持ち、どのように解釈されるかを定義するものです。

AWS Organizations では、IAM 構文と文法のサブセットを使用します。詳細については、「SCP 構文」を参照してください。

複数のポリシーオブジェクト

SCP は、1 つの JSON オブジェクトのみで構成する必要があります。オブジェクトは括弧({ })で囲んで示します。外側の { } のペア内に追加の { } を埋め込むことによって JSON オブジェクト内で他のオブジェクトをネストすることができますが、ポリシーに含めることができるのは一番外側の { } のペアのみです。次の例は、最上位に 2 つのオブジェクト (で示した箇所) が含まれているため、誤りです。

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

ただし、正しいポリシーの文法を使用して、前述の例の目的を果たすことができます。それぞれに独自の Statement 要素を含む 2 つのポリシーオブジェクトを含める代わりに、1 つの Statement 要素に 2 つのブロックを組み合わせて使用することができます。Statement 要素には、次の例に示すように 2 つのオブジェクトの配列を値として指定します。

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

この例では、2 つの要素による効果は異なるため、1 つの要素を含む Statement に圧縮することはできません。構文は、各構文の Effect や、Resource 要素が同一の場合にのみ、組み合わせることができます。

複数の Statement 要素

このエラーは、一見、前のセクションのエラーのバリエーションのように見えますが、構文上はエラーの種類が異なります。次の例では、最上位の 1 ペアの { } で示された 1 つのポリシーオブジェクトのみが存在します。そのオブジェクト内に 2 つの Statement 要素が含まれています。

SCP には、名前 (Statement) の後にコロン、その後に値という形式で構成される 1 つの Statement 要素のみを指定する必要があります。Statement 要素の値は、{} で示され、1 つの Effect 要素、1 つの Action 要素、および 1 つの Resource 要素を含むオブジェクトである必要があります。次の例は、ポリシーオブジェクトに 2 つの Statement 要素が含まれているため、誤りです。

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

値オブジェクトは複数の値オブジェクトの配列にすることができるため、次の例に示すように、2 つの Statement 要素を組み合わせて 1 つの要素にすることで、この問題を解決できます。

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

Statement 要素の値はオブジェクト配列です。例の配列は 2 つのオブジェクトで構成され、各オブジェクトに Statement 要素の正しい値が指定されています。配列内の各オブジェクトはカンマで区切ります。

ポリシードキュメントが最大サイズを超えています

SCP ドキュメントの最大サイズは 5,120 文字です。この最大サイズには、空白を含むすべての文字が含まれます。SCP のサイズを減らすには、引用符の外側にあるすべての空白文字 (スペースや改行など) を削除できます。

注記

AWS Management Consoleを使用してポリシーを保存した場合、JSON 要素間と引用符の外側の間にある余分な白いスペースは削除され、カウントされません。SDK オペレーションまたは AWS CLI を使用してポリシーを保存した場合、ポリシーは指定したとおりに保存され、文字の自動削除は行われません。