SCP 構文
サービスコントロールポリシー (SCP) は、AWS Identity and Access Management (IAM) アクセス権限ポリシーやリソースベースのポリシー (Amazon S3 バケットポリシーなど) に似た構文を使用します。IAM ポリシーの詳細とその構文については、IAM ユーザーガイドの「IAM ポリシーの概要」を参照してください。
SCP は、JSON
注記
SCP 内のすべての文字は、その上限サイズに対してカウントされます。このガイドの例では、読みやすさを向上させるため、空白文字を追加してフォーマットされた SCP を示します。ただし、ポリシーサイズが上限サイズに近づいている場合は、スペースを節約するために、引用符の外側にあるすべての空白文字 (スペースや改行など) を削除できます。
SCP に関する一般情報については、「サービスコントロールポリシー (SCP)」を参照してください。
要素の概要
次の表には、SCP で使用できるポリシー要素を要約しています。一部のポリシー要素はアクションを拒否する SCP のみで使用できます。[Supported Effects ] (サポートされる効果) の列には、SCP の各ポリシー要素で使用できる効果のタイプが一覧表示されています。
| 要素 | 目的 | サポートされる効果 |
|---|---|---|
|
SCP が許可あるいは拒否する AWS のサービスおよびアクションを指定します。 |
|
|
| 効果 | SCP ステートメントがプリンシパルおよびアカウント内の IAM ユーザーとロールへのアクセスを許可するか拒否するかを定義します。 |
|
| Statement | ポリシー要素のコンテナとして機能します。SCP には複数のステートメントを含めることができます。 |
|
| Statement ID (Sid) | (オプション) ステートメントにわかりやすい名前を付けます。 |
|
| Version | ポリシーの処理に使用する言語構文ルールを指定します。 |
|
| 条件 | ステートメントを実行するタイミングの条件を指定します。 |
|
|
SCP から除外される AWS のサービスおよびアクションを指定します。 |
|
|
| リソース | SCP が適用される AWS リソースを指定します。 |
|
| NotResource | SCP から除外される AWS リソースを指定します。Resource 要素の代わりに使用します。 |
|
次のセクションでは、SCP でポリシー要素がどのように使用されるかについての詳細および例を提供しています。
トピック
Action および NotAction 要素
Action あるいは NotAction 要素の値は、ステートメントにより許可または拒否される AWS のサービスとアクションを指定する文字列のリスト (JSON 配列) です。
各文字列は、サービスの略称 (「s3」、「ec2」、「iam」、「organizations」など) で構成されており、すべて小文字で、コロンと、その後にサービスのアクションが続きます。アクションと表記では、大文字と小文字は区別されません。一般的にこれらはすべて、大文字で始まり、残りは小文字の各単語で入力されます。例: "s3:ListAllMyBuckets"。
SCP でアスタリスク (*) や疑問符 (?) などのワイルドカード文字を使用することもできます。
-
名前の一部を共有する複数のアクションを検索するには、アスタリスクをワイルドカードとして使用します。値
"s3:*"は、Amazon S3 サービス内のすべてのアクションを意味します。値"ec2:Describe*"は「Describe」で始まる EC2 アクションのみに一致します。 -
単一の文字を検索する場合は疑問符 (?) を使用します。
AWS Organizations SCP および IAM アクセス許可ポリシーをサポートするすべてのサービスとアクションのリストについては、IAM ユーザーガイドの「AWS のサービスのアクション、リソース、および条件キー」を参照してください。
詳細については、IAM ユーザーガイドの「IAM JSON ポリシー要素: Action」および「IAM JSON ポリシー要素: NotAction」を参照してください。
Action 要素の例
次の例では、アカウント管理者に、アカウント内の EC2 インスタンスの許可を記述、開始、停止、終了する権限を委譲することを許可するステートメントを持つ SCP を示しています。これは、許可リストの例であり、デフォルトの Allow * ポリシーがアタッチされていない場合に便利です。これにより、デフォルトではアクセス許可が暗黙的に拒否されます。デフォルトの Allow
* ポリシーがルート、OU、次のポリシーがアタッチされるアカウントに引き続きアタッチされている場合は、ポリシーの効果はありません。
次の例では、アタッチされたアカウントで使用されたくないサービスへのアクセスを拒否する方法を示しています。デフォルトの "Allow *" SCP がすべての OU および root にまだアタッチされていることを前提としています。このポリシーの例では、アタッチされたアカウントのアカウント管理者は、IAM、Amazon EC2、Amazon RDS サービスにアクセス許可を移譲することはできません。他のサービスからのあらゆるアクションは、移譲を拒否する他のポリシーがアタッチされていない限り移譲できます。
NotAction 要素の例
次の例は、NotAction 要素を使用して、ポリシーの効果から AWS サービスを除外する方法を示しています。
このステートメントでは、影響を受けるアカウントは、IAM アクションを使用する場合を除き、指定された AWS リージョン でのアクションの実行に限定されます。
Condition 要素
SCP の Allow および Deny ステートメントには、Condition 要素を指定することができます。
次の例は、SCP の Allow ステートメントに条件要素を使用して、特定のプリンシパルが AWS サービスにアクセスできるようにする方法を示しています。
{ "Version":"2012-10-17", "Statement":[ { "Sid":"AllowServicesForSpecificPrincipal", "Effect":"Allow", "Action":[ "ec2:*", "s3:*", "rds:*", "lambda:*", "cloudformation:*", "iam:*", "cloudwatch:*" ], "Resource":"*", "Condition":{ "StringEquals":{ "aws:PrincipalArn":[ "arn:aws:iam::123456789012:role/specific-role" ] } } } ] }
次の例は、SCP の Deny ステートメントで条件要素を使用して、指定されたサービスのアクションを除き、eu-central-1 および eu-west-1 リージョン外のすべての操作へのアクセスを制限する方法を示しています。
詳細については、「IAM ユーザーガイド」の「IAM JSON ポリシー要素: 条件」を参照してください。
Effect 要素
各ステートメントには必ず Effect を 1 つ含める必要があります。この値は Allow または Deny となります。これは、同じステートメントにリストされたアクションが影響を受けます。
詳細については、IAM ユーザーガイドの「IAM JSON ポリシーの要素: Effect」を参照してください。
"Effect": "Allow"
次の例では、Allow の値を持つ Effect 要素を含むステートメントを持つ SCP を示しています。これにより、アカウントユーザーが Amazon S3 サービスのアクションを実行できるようになります。この例は、許可リスト戦略を使用する組織で役立ちます (デフォルトの FullAWSAccess ポリシーがすべてデタッチされているため、デフォルトでアクセス許可は暗黙的に拒否されます)。その結果、このステートメントでは、アタッチされているすべてのアカウントに対する Amazon S3 のアクセスが許可されます。
{ "Statement": { "Effect": "Allow", "Action": "s3:*", "Resource": "*" } }
このステートメントは IAM アクセス許可ポリシーに同じ Allow 値を使用しますが、SCP では実際に何かを実行するためのアクセス許可をユーザーに付与しません。代わりに、SCPは、組織、組織単位 (OU)、またはアカウントに対するアクセス許可の上限を指定するフィルターとして機能します。前述の例では、アカウント内のユーザーで AdministratorAccess 管理ポリシーがアタッチされている場合でも、SCP は影響を受けるアカウントのすべてのユーザーによるアクションを Amazon S3 アクションのみに制限します。
"Effect": "Deny"
また、Effect 要素に Deny の値があるステートメントでは、SCP の有効時に特定のリソースへのアクセスを制限したり、条件を定義することもできます。
次の例は、拒否ステートメントで条件キーを使用する方法の例を示しています。
SCP のこのステートメントは、影響が及ぶアカウント (SCP がアカウント自体にアタッチされているか、アカウントがある組織ルートあるいは OU にアタッチされている場合) が、Amazon EC2 インスタンスが t2.micro に設定されていないときに Amazon EC2 インスタンスを起動しないようにするガードレールを設定します。このアクションを許可する IAM ポリシーがアカウントにアタッチされている場合でも、SCP によって作成されたガードレールはこれを許可しません。
Resource および NotResource 要素
Effect 要素に Allow の値があるステートメントでは、SCP の Resource 要素の「*」のみを指定することができます。個々のリソースの Amazon リソースネーム (ARN) を指定することはできません。
リソース要素では、アスタリスク (*) や疑問符 (?) などのワイルドカード文字を使用することができます。
-
名前の一部を共有する複数のアクションを検索するには、アスタリスクをワイルドカードとして使用します。
-
単一の文字を検索する場合は疑問符 (?) を使用します。
Effect 要素に Deny の値があるステートメントでは、次の例に示すように、個々の ARN を指定することができます。
この SCP は、影響を受けるアカウントの IAM ユーザーとロールが、組織内のすべてのアカウントに作成された共通の管理 IAM ロールに変更を加えることを制限します。
次の例は、NotResource 要素を使用して、ポリシーの効果から特定の Amazon Bedrock モデルを除外する方法を示しています。
{ "Version":"2012-10-17", "Statement":[ { "Sid":"Statement1", "Effect":"Deny", "Action":[ "bedrock:InvokeModel", "bedrock:InvokeModelWithResponseStream" ], "NotResource":[ "arn:aws:bedrock:*::foundation-model/model-to-permit" ] } ] }
詳細については、IAM ユーザーガイドの「IAM JSON ポリシー要素: Resource」を参照してください。
Statement 要素
SCP は、1 つ以上の Statement 要素で構成されます。ポリシーには Statement キーワードを 1 つだけ含めることができますが、値は、ステートメントの JSON 配列 ([ ] の文字で囲まれる) もあります。
以下の例は、単一の Effect 要素、Action 要素、Resource 要素で構成される単一のステートメントを示しています。
"Statement": { "Effect": "Allow", "Action": "*", "Resource": "*" }
次の例では、1 つの Statement 要素内に、配列リストとして 2 つのステートメントが含まれています。最初のステートメントではすべてのアクションが許可されますが、2 つ目のステートメントではすべての EC2 アクションが拒否されます。結果的に、アカウントの管理者は、Amazon Elastic Compute Cloud (Amazon EC2) 以外のアクセス許可をすべて委譲できます。
"Statement": [ { "Effect": "Allow", "Action": "*", "Resource": "*" }, { "Effect": "Deny", "Action": "ec2:*", "Resource": "*" } ]
詳細については、IAM ユーザーガイドの「IAM JSON ポリシー要素: Statement」を参照してください。
ステートメント ID (Sid) 要素
Sid は、ポリシーステートメントに提供するオプションの識別子です。Sid 値は、ステートメント配列内の各ステートメントに割り当てることができます。次の SCP の例は、Sid ステートメントのサンプルを示しています。
{ "Statement": { "Sid": "AllowsAllActions", "Effect": "Allow", "Action": "*", "Resource": "*" } }
詳細については、IAM ユーザーガイドの「IAM JSON ポリシー要素: ID」を参照してください。
Version 要素
すべての SCP には、Version値を持つ要素"2012-10-17"が含まれる必要があります。これは、IAM アクセス許可ポリシーの最新バージョンと同じバージョンの値です。
詳細については、IAM ユーザーガイドの「IAM JSON ポリシー要素: Version」を参照してください。
サポートされていない要素
以下の要素は SCP ではサポートされていません。
-
NotPrincipal -
Principal