

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# 宣言ポリシー
<a name="orgs_manage_policies_declarative"></a>

宣言型ポリシーを使用すると、組織全体 AWS のサービス で特定の に必要な設定を一元的に宣言して適用できます。一度接続すると、サービスに新しい機能や API が追加されても、設定は常に維持されます。宣言型ポリシーは、準拠していないアクションを防止する際に使用します。例えば、組織全体の Amazon VPC リソースへのパブリックインターネットアクセスをブロックできます。

宣言型ポリシーを使用する主な利点は次のとおりです。
+ **使いやすさ**: AWS Organizations AWS Control Tower とコンソールでいくつかの選択 AWS のサービス を行うか、 AWS CLI & AWS SDKs を使用していくつかのコマンドを使用して、 のベースライン設定を適用できます。
+ **Set once and forget**: サービスが新機能や API を導入しても、 のベースライン設定 AWS のサービス は常に維持されます。 APIs ベースライン設定は、新しいアカウントが組織に追加された場合や、新しいプリンシパルやリソースが作成された場合でも維持されます。
+ **透明性**: アカウントステータスレポートでは、対象アカウントの宣言型ポリシーでサポートされているすべての属性の現在のステータスを確認できます。カスタマイズ可能なエラーメッセージを作成することもできるため、管理者はエンドユーザーを内部 wiki ページにリダイレクトしたり、アクションが失敗した理由をエンドユーザーが理解するのために役立つ説明メッセージを提供したりできます。

 サポートされている AWS のサービス および 属性の完全なリストについては、「」を参照してください[サポートされている AWS のサービス および 属性](#orgs_manage_policies_declarative-supported-controls)。

**Topics**
+ [宣言型ポリシーの仕組み](#orgs_manage_policies_declarative-how-work)
+ [カスタムエラーメッセージ](#orgs_manage_policies_declarative-custom-message)
+ [アカウントステータスレポート](#orgs_manage_policies_declarative-account-status-report)
+ [サポートされるサービス](#orgs_manage_policies_declarative-supported-controls)
+ [開始方法](orgs_manage_policies-declarative_getting-started.md)
+ [ベストプラクティス](orgs_manage_policies_declarative_best-practices.md)
+ [アカウントステータスレポートを生成する](orgs_manage_policies_declarative_status-report.md)
+ [宣言型ポリシーの構文と例](orgs_manage_policies_declarative_syntax.md)

## 宣言型ポリシーの仕組み
<a name="orgs_manage_policies_declarative-how-work"></a>

宣言型ポリシーは、サービスのコントロールプレーンで適用されます。この点は、[サービスコントロールポリシー (SCP) やリソースコントロールポリシー (RCP) などの認可ポリシー](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_authorization_policies.html)と大きく異なります。認可ポリシーは API へのアクセスを規制しますが、宣言型ポリシーはサービスレベルで直接適用され、インテントを持続的に適用します。これにより、サービスによって新機能や API が導入された場合でも、ベースライン設定が常に適用されます。

次の表では、この区別を説明するとともに、いくつかのユースケースを示しています。


****  

|  | サービスコントロールポリシー | リソースコントロールポリシー | 宣言ポリシー | 
| --- | --- | --- | --- | 
| 目的 |  プリンシパル (IAM ユーザーや IAM ロールなど) に一元的にアクセスコントロールを定義し、全体に一貫したアクセスコントロールを適用するため。  |  リソースに対して一貫したアクセスコントロールを一元的に定義し、大規模に適用するため。  |   AWS サービスのベースライン設定を一元的に定義し、大規模に適用するため。  | 
| その方法は? |  API レベルでプリンシパルに対して許可されるアクセス許可の上限を制御。  |  API レベルでリソースに対して許可されるアクセス許可の上限を制御。  |  API アクションを使用 AWS のサービス せずに の必要な設定を適用します。  | 
| サービスにリンクされたロールを管理しているか? | いいえ | なし | はい | 
| フィードバックメカニズム | カスタマイズ不可のアクセス拒否 SCP エラー。 | カスタマイズ不可のアクセス拒否 RCP エラー。 | カスタマイズ可能なエラーメッセージ。詳細については、「[宣言型ポリシーのカスタムエラーメッセージ](#orgs_manage_policies_declarative-custom-message)」を参照してください。 | 
|  ポリシーの例 | [メンバーアカウントによる組織からの退出を拒否する](https://github.com/aws-samples/service-control-policy-examples/blob/main/Privileged-access-controls/Deny-member-accounts-from-leaving-your-AWS-organization.json) | [リソースへの HTTPS 接続のみへのアクセスを制限する](https://github.com/aws-samples/resource-control-policy-examples/blob/main/Restrict-resource-access-patterns/Restrict-access-to-only-HTTPS-connections-to-your-resources.json) | [Allowed Images Settings](orgs_manage_policies_declarative_syntax.md#declarative-policy-ec2-ami-allowed-images) | 

宣言型ポリシーを[作成](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_policies_create.html#create-declarative-policy-procedure)して[アタッチ](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_policies_attach.html)すると、組織全体に適用および強制されます。宣言型ポリシーは、組織全体、組織単位 (OU)、またはアカウントに適用できます。組織に参加するアカウントは、組織内の宣言型ポリシーを自動的に継承します。詳細については、「[管理ポリシーの継承を理解する](orgs_manage_policies_inheritance_mgmt.md)」を参照してください。

*有効なポリシー*は、組織ルートと OU から継承されるルールのセットと、アカウントに直接アタッチされたルールのセットです。有効なポリシーは、アカウントに適用される最終的なルールセットを指定します。詳細については、「[効果的な管理ポリシーの表示](orgs_manage_policies_effective.md)」を参照してください。

宣言型ポリシーが[デタッチ](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_policies_detach.html)されると、属性の状態は宣言型ポリシーがアタッチされる前の状態にロールバックされます。

## 宣言型ポリシーのカスタムエラーメッセージ
<a name="orgs_manage_policies_declarative-custom-message"></a>

宣言型ポリシーを使用すると、カスタムエラーメッセージを作成できます。例えば、宣言型ポリシーが原因で API オペレーションが失敗した場合、エラーメッセージを設定したり、カスタム URL (内部 Wiki へのリンクや失敗について説明するメッセージへのリンクなど) を指定したりできます。カスタムエラーメッセージを指定しない場合、 はデフォルトのエラーメッセージ AWS Organizations を提供します`Example: This action is denied due to an organizational policy in effect`。

宣言ポリシーの作成、宣言ポリシーの更新、宣言ポリシーの削除のプロセスも監査できます AWS CloudTrail。CloudTrail は、宣言型ポリシーによる API オペレーションの失敗にフラグを付けることができます。詳細については、「[Logging and monitoring](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_security_incident-response.html)」を参照してください。

**重要**  
カスタムエラーメッセージには、*個人を特定できる情報 (PII)* やその他の機密情報を含めないでください。PII には、個人を特定または所在を特定するために使用できる一般的な情報が含まれます。財務記録、医療記録、教育関連の記録、雇用に関する記録なども含まれます。PII の例には、住所、銀行口座番号、電話番号などがあります。

## 宣言型ポリシーのアカウントステータスレポート
<a name="orgs_manage_policies_declarative-account-status-report"></a>

*アカウントステータスレポート*では、対象アカウントの宣言型ポリシーでサポートされているすべての属性の現在のステータスを確認できます。レポート対象に含めるアカウントや組織単位 (OU) を選択したり、ルートを選択して組織全体を選択したりできます。

このレポートは、リージョンの内訳と、属性の現在の状態が*アカウント間で統一*されている (`numberOfMatchedAccounts` 経由) か、*一貫性がない* (`numberOfUnmatchedAccounts` 経由) かを示すため、準備状況を評価するのに役立ちます。また、*最も頻繁にみられる値*を表示することもできます。これは、その属性で最も頻繁に観測される設定値を指します。

図 1 には生成されたアカウントステータスレポートが示されており、次の属性にはアカウント全体で一貫性があることが確認できます: VPC Block Public Access および Image Block Public Access。これは、各属性において、範囲内のすべてのアカウントがその属性に対して同じ設定を持つことを示しています。

生成されたアカウントステータスレポートでは、次の属性に対して一貫性のないアカウントが示されています: Allowed Images Settings、Instance Metadata defaults、Serial Console Access、Snapshot Block Public Access。この例では、各属性に一貫性のないアカウントがあるのは、異なる設定値を持つアカウントが 1 つあることが原因です。

最も頻繁な値が存在する場合、その値が該当する列に表示されます。各属性がコントロールする機能の詳細については、「[Declarative policy syntax and example policies](orgs_manage_policies_declarative_syntax.md)」を参照してください。

属性を展開して、リージョンの内訳を表示することもできます。この例では、Image Block Public Access が展開されており、各リージョンでアカウント間に一貫性があることも確認できます。

ベースライン設定の適用のために宣言型ポリシーをアタッチするかどうかの選択は、ユースケースに応じて異なります。アカウントステータスレポートは、宣言型ポリシーをアタッチする前に準備状況を評価するのに役立ちます。

詳細については、「[Generating the account status report](orgs_manage_policies_declarative_status-report.md)」を参照してください。

![\[アカウント間で VPC Block Public Access と Image Block Public Access に一貫性があることわかるアカウントステータスレポートの例。\]](http://docs.aws.amazon.com/ja_jp/organizations/latest/userguide/images/declarative-status-report.png)


*図 1: アカウント間で VPC Block Public Access と Image Block Public Access に一貫性があることわかるアカウントステータスレポートの例。*

## サポートされている AWS のサービス および 属性
<a name="orgs_manage_policies_declarative-supported-controls"></a>

### EC2 の宣言型ポリシーでサポートされている属性
<a name="orgs_manage_policies_declarative-supported-controls-ec2"></a>

次の表は、Amazon EC2 関連サービスでサポートされている属性を示しています。


**EC2 の宣言型ポリシー**  
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/organizations/latest/userguide/orgs_manage_policies_declarative.html)

# 宣言型ポリシーの開始方法
<a name="orgs_manage_policies-declarative_getting-started"></a>

宣言型ポリシーの使用を開始するには、次のステップを実行します。

1. [宣言型ポリシータスクの実行に必要なアクセス許可について理解します](orgs_manage_policies_prereqs.md)。

1. [組織の宣言型ポリシーを有効にします](enable-policy-type.md)。
**注記**  
**信頼アクセスを有効にする必要がある**  
宣言型ポリシーがベースライン設定を適用するサービスに対して、信頼アクセスを有効にする必要があります。これにより、読み取り専用のサービスにリンクされたロールが作成されます。このロールを使用して、組織全体のアカウントの既存設定に関するアカウントステータスレポートを生成することができます。  
**コンソールの使用**  
Organizations コンソールを使用する場合、このステップは宣言型ポリシーを有効にするプロセスの一部です。  
**の使用 AWS CLI**  
を使用する場合 AWS CLI、2 つの異なる APIsがあります。  
[EnablePolicyType](https://docs.aws.amazon.com/organizations/latest/APIReference/API_EnablePolicyType.html)。宣言型ポリシーを有効にするために使用します。
[EnableAWSServiceAccess](https://docs.aws.amazon.com/organizations/latest/APIReference/API_EnableAWSServiceAccess.html)。信頼されたアクセスを有効にするために使用します。
で特定のサービスの信頼されたアクセスを有効にする方法の詳細については、[AWS のサービスAWS Organizations](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_integrate_services_list.html) AWS CLI 「」を参照してください。

1. [アカウントステータスレポートを実行します](orgs_manage_policies_declarative_status-report.md)。

1. [宣言型ポリシーを作成します](orgs_policies_create.md)。

1. [宣言型ポリシーを組織のルート、OU、またはアカウントにアタッチします](orgs_policies_attach.md)。

1. [アカウントに適用される有効な宣言型ポリシーの組み合わせを示します](orgs_manage_policies_effective.md)。

これらすべてのステップでは、組織の管理アカウントの IAM ユーザーとしてサインインするか、IAM ロールを引き受けるか、ルートユーザー ([推奨されません](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#lock-away-credentials)) としてサインインします。

**その他の情報**
+ [宣言型ポリシー構文の説明とポリシー例](orgs_manage_policies_declarative_syntax.md)

# 宣言型ポリシー使用のベストプラクティス
<a name="orgs_manage_policies_declarative_best-practices"></a>

AWS では、宣言ポリシーを使用するための以下のベストプラクティスを推奨しています。

## 準備状況評価機能の使用
<a name="bp-declarative-readiness"></a>

宣言型ポリシーの*アカウントステータスレポート*を使用して、対象範囲内のアカウントの宣言型ポリシーでサポートされているすべての属性の現在のステータスを評価できます。レポート対象に含めるアカウントや組織単位 (OU) を選択したり、ルートを選択して組織全体を選択したりできます。

このレポートは、リージョンの内訳と、属性の現在の状態が*アカウント間で統一*されている (`numberOfMatchedAccounts` 経由) か、*一貫性がない* (`numberOfUnmatchedAccounts` 経由) かを示すため、準備状況を評価するのに役立ちます。また、*最も頻繁にみられる値*を表示することもできます。これは、その属性で最も頻繁に観測される設定値を指します。

ベースライン設定の適用のために宣言型ポリシーをアタッチするかどうかの選択は、ユースケースに応じて異なります。

詳細と具体的な例については、「[宣言型ポリシーのアカウントステータスレポート](orgs_manage_policies_declarative.md#orgs_manage_policies_declarative-account-status-report)」を参照してください。

## 小規模から始めてスケールアップする
<a name="bp-declarative-rules"></a>

デバッグを簡素化するために、テストポリシーから始めます。次の変更を行う前に、各変更の動作と影響を検証します。こうすることで、エラーや予期しない結果が発生した場合に確認を要する変数を少数に抑えることができます。

たとえば、重要でないテスト環境の単一のアカウントにアタッチされたテストポリシーから始めるとよいでしょう。仕様どおりに動作することを確認したら、ポリシーの対象の組織構造を一段階ずつ上げていき、段階的に多くのアカウントと組織単位 (OU) を含めるようにします。

## レビュープロセスを確立する
<a name="bp-declarative-review"></a>

新しい宣言型属性をモニタリングして、ポリシーの例外を評価し、組織のセキュリティと運用要件との整合性を維持するために調整するためのレビュープロセスを実装します。

## `DescribeEffectivePolicy` を使用して変更を検証する
<a name="bp-declarative-workflow"></a>

宣言型ポリシーを変更した後、変更を行ったレベルより下位の代表的アカウントの有効なポリシーを確認します。[有効なポリシーを表示するには、 を使用する AWS マネジメントコンソール](orgs_manage_policies_effective.md)か、[DescribeEffectivePolicy](https://docs.aws.amazon.com/organizations/latest/APIReference/API_DescribeEffectivePolicy.html) API オペレーション、またはそのいずれかの AWS CLI または AWS SDK バリアントを使用します。加えた変更が、有効なポリシーに意図した影響を与えていることを確認します。

## コミュニケーションとトレーニング
<a name="bp-declarative-train"></a>

組織が宣言型ポリシーの目的と影響を理解していることを確認します。期待される動作と、ポリシーを適用することによる障害に対処する方法について、明確なガイダンスを提供します。

# 宣言型ポリシーのアカウントステータスレポートを生成する
<a name="orgs_manage_policies_declarative_status-report"></a>

*アカウントステータスレポート*では、対象アカウントの宣言型ポリシーでサポートされているすべての属性の現在のステータスを確認できます。レポート対象に含めるアカウントや組織単位 (OU) を選択したり、ルートを選択して組織全体を選択したりできます。

このレポートは、リージョンの内訳と、属性の現在の状態が*アカウント間で統一*されている (`numberOfMatchedAccounts` 経由) か、*一貫性がない* (`numberOfUnmatchedAccounts` 経由) かを示すため、準備状況を評価するのに役立ちます。また、*最も頻繁にみられる値*を表示することもできます。これは、その属性で最も頻繁に観測される設定値を指します。

ベースライン設定の適用のために宣言型ポリシーをアタッチするかどうかの選択は、ユースケースに応じて異なります。

詳細と具体的な例については、「[宣言型ポリシーのアカウントステータスレポート](orgs_manage_policies_declarative.md#orgs_manage_policies_declarative-account-status-report)」を参照してください。

## 前提条件
<a name="orgs_manage_policies_declarative_accessing-status-report-prerequisites"></a>

アカウントステータスレポートを生成する前に、次のステップを実行する必要があります。

1. 組織の管理アカウントまたは委任された管理者のみが `StartDeclarativePoliciesReport` API を呼び出すことができます。

1. レポートを生成する前に S3 バケットが必要です (新しいバケットを作成するか既存のバケットを使用)。S3 バケットは、リクエストが行われるリージョンと同じリージョンにあり、適切な S3 バケットポリシーを持っている必要があります。S3 ポリシーのサンプルについては、「*Amazon EC2 API リファレンス*」の「[例](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_StartDeclarativePoliciesReport.html#API_StartDeclarativePoliciesReport_Examples)」にある「*Sample Amazon S3 policy*」を参照してください。

1. 宣言型ポリシーがベースライン設定を適用するサービスに対して、信頼アクセスを有効にする必要があります。これにより、読み取り専用のサービスにリンクされたロールが作成されます。このロールを使用して、組織全体のアカウントの既存設定に関するアカウントステータスレポートを生成することができます。

   **コンソールの使用**

   Organizations コンソールの場合、このステップは宣言型ポリシーを有効にするプロセスの一部です。

   **の使用 AWS CLI**

   には AWS CLI、[EnableAWSServiceAccess](https://docs.aws.amazon.com/organizations/latest/APIReference/API_EnableAWSServiceAccess.html) API を使用します。

   で特定のサービスの信頼されたアクセスを有効にする方法の詳細については、[AWS のサービスAWS Organizations](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_integrate_services_list.html) AWS CLI 「」を参照してください。

1. 一度に生成できるレポートは、組織ごとに 1 つだけです。別のレポートの進行中にレポートを生成しようとすると、エラーが発生します。

## コンプライアンスステータスレポートにアクセスする
<a name="orgs_manage_policies_declarative_accessing-status-report"></a>

**最小アクセス許可**  
コンプライアンスステータスレポートを生成するには、次のアクションを実行可能なアクセス許可が必要です。  
`ec2:StartDeclarativePoliciesReport`
`ec2:DescribeDeclarativePoliciesReports`
`ec2:GetDeclarativePoliciesReportSummary`
`ec2:CancelDeclarativePoliciesReport`
`organizations:DescribeAccount`
`organizations:DescribeOrganization`
`organizations:DescribeOrganizationalUnit`
`organizations:ListAccounts`
`organizations:ListDelegatedAdministrators`
`organizations:ListAWSServiceAccessForOrganization`
`s3:PutObject`

**注記**  
Amazon S3 バケットで SSE-KMS 暗号化を使用している場合は、ポリシーに `kms:GenerateDataKey` アクセス許可も含める必要があります。

------
#### [ AWS マネジメントコンソール ]

アカウントステータスレポートを生成するには、次の手順に従います。

**アカウントステータスレポートを生成するには**

1. [AWS Organizations コンソール](https://console.aws.amazon.com/organizations/v2)にサインインします。組織の管理アカウントで、IAM ユーザーとしてサインインするか、IAM ロールを引き受けるか、ルートユーザー ([非推奨](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#lock-away-credentials)) としてサインインする必要があります。

1. **[ポリシー]** ページで、**[EC2 の宣言型ポリシー]** を選択します。

1. **[EC2 の宣言型ポリシー]** ページで、**[アクション]** ドロップダウンメニューから **[アカウントステータスレポートを表示]** を選択します。

1. **[アカウントステータスレポートを表示]** ページで、**[ステータスレポートを生成]** を選択します。

1. **[組織構造]** ウィジェットで、レポートに含める組織単位 (OU) を指定します。

1. [**Submit**] を選択してください。

------
#### [ AWS CLI & AWS SDKs ]

**アカウントステータスレポートを生成するには**

次の操作を実行してコンプライアンスレポートを生成し、そのステータスを確認し、レポートを表示します。
+ `ec2:start-declarative-policies-report`: アカウントステータスレポートを生成します。レポートは非同期的に生成され、完了までに数時間かかる場合があります。詳細については、「*Amazon EC2 API リファレンス*」の「[StartDeclarativePoliciesReport](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_StartDeclarativePoliciesReport.html)」を参照してください。
+ `ec2:describe-declarative-policies-report`: レポートの状態など、アカウントステータスレポートのメタデータを記述します。詳細については、「*Amazon EC2 API リファレンス*」の「[DescribeDeclarativePoliciesReports](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeDeclarativePoliciesReports.html)」を参照してください。
+ `ec2:get-declarative-policies-report-summary`: アカウントステータスレポートの概要を取得します。詳細については、「*Amazon EC2 API リファレンス*」の「[GetDeclarativePoliciesReportSummary](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_GetDeclarativePoliciesReportSummary.html)」を参照してください。
+ `ec2:cancel-declarative-policies-report`: アカウントステータスレポートの生成をキャンセルします。詳細については、「*Amazon EC2 API リファレンス*」の「[CancelDeclarativePoliciesReport](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CancelDeclarativePoliciesReport.html)」を参照してください。

レポートを生成する前に、レポートが保存される Amazon S3 バケットへのアクセス権を EC2 宣言型ポリシープリンシパルに付与してください。付与するためには、以下のポリシーをバケットにアタッチします。`amzn-s3-demo-bucket` を実際の Amazon S3 バケット名に置き換え、`identity_ARN` を `StartDeclarativePoliciesReport` API の呼び出しに使用される IAM ID に置き換えます。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "DeclarativePoliciesReportDelivery",
            "Effect": "Allow",
            "Principal": {
                "AWS": "identity_ARN"
            },
            "Action": [
                "s3:PutObject"
            ],
            "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*",
            "Condition": {
                "StringEquals": {
                    "aws:CalledViaLast": "organizations.amazonaws.com"
                }
            }
        }
    ]
}
```

------

------

# 宣言型ポリシーの構文と例
<a name="orgs_manage_policies_declarative_syntax"></a>

このページでは、宣言型ポリシーの構文について説明し、例を示します。

## 考慮事項
<a name="declarative-policy-syntax-considerations"></a>
+ 宣言型ポリシーを使用してサービス属性を設定すると、複数の API に影響する可能性があります。非準拠のアクションはすべて失敗します。
+ アカウント管理者は、個々のアカウントレベルでサービス属性の値を変更することはできません。

## 宣言型ポリシーの構文
<a name="declarative-policy-syntax-reference"></a>

宣言型ポリシーは、[JSON](http://json.org) のルールに従って構造化されたプレーンテキストファイルです。宣言型ポリシーの構文は、すべての管理ポリシータイプの構文に従います。この構文の詳細については、「[ポリシー構文と管理ポリシータイプの継承](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_inheritance_mgmt.html)」を参照してください。このトピックでは、一般的な構文を宣言型ポリシータイプの特定の要件に適用することに焦点を当てています。

次の例は、宣言型ポリシーの基本構文を示しています。

```
{
  "ec2_attributes": {
    "exception_message": {
      "@@assign": "Your custom error message.https://myURL"
    }
  }
}
```
+ `ec2_attributes` フィールドキーの名前。宣言ポリシーは、常に指定された固定キー名で始まります AWS のサービス。上記のポリシーの例では一番上の行です。現在、宣言型ポリシーは Amazon EC2 関連サービスのみをサポートしています。
+ `ec2_attributes` では、`exception_message` を使用してカスタムエラーメッセージを設定できます。詳細については、「[Custom error messages for declarative policies](orgs_manage_policies_declarative.md#orgs_manage_policies_declarative-custom-message)」を参照してください。
+ `ec2_attributes` では、サポートされている宣言型ポリシーを 1 つ以上挿入できます。これらのスキーマについては、「[サポートされている宣言型ポリシー](#declarative-policy-examples)」を参照してください。

## サポートされている宣言型ポリシー
<a name="declarative-policy-examples"></a>

以下は、宣言ポリシーがサポートする AWS のサービス および 属性です。以下の例の一部では、スペースを節約するために JSON の空白書式が圧縮される場合があります。
+ VPC Block Public Access
+ Serial Console Access
+ Image Block Public Access
+ Allowed Images Settings
+ インスタンスメタデータ
+ Snapshot Block Public Access

------
#### [ VPC Block Public Access ]

**ポリシーの効果**

Amazon VPC とサブネットのリソースがインターネットゲートウェイ (IGW) を介してインターネットにアクセスできるかどうかをコントロールします。詳細については、「*Amazon Virtual Private Cloud ユーザーガイド*」の「[Configuration for internet access](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-igw-internet-access.html)」を参照してください。

**ポリシーの内容**

```
{
  "ec2_attributes": {
    "vpc_block_public_access": {
      "internet_gateway_block": {
        "mode": {
          "@@assign": "block_ingress"
        },
        "exclusions_allowed": {
          "@@assign": "enabled"
        }
      }
    }
  }
}
```

この属性で使用できるフィールドは次のとおりです。
+ `"internet_gateway"`:
  + `"mode"`:
    + `"off"`: VPC BPA が有効になりません。
    + `"block_ingress"`: VPC に対するすべてのインターネットトラフィック (除外された VPC またはサブネットを除く) がブロックされます。NAT ゲートウェイとエグレスのみのインターネットゲートウェイとの間のトラフィックのみが許可されます。なぜなら、これらのゲートウェイはアウトバウンド接続の確立のみを許可するからです。
    + `"block_bidirectional"`: インターネットゲートウェイおよび Egress-Only インターネットゲートウェイとの間のすべてのトラフィック (除外された VPC とサブネットを除く) がブロックされます。
+ `"exclusions_allowed"`: 除外は、単一の VPC またはサブネットに適用できるモードであり、アカウントの VPC BPA モードから除外し、双方向または Egress-Only のアクセスを許可します。
  + `"enabled"`: 除外をアカウントで作成できます。
  + `"disabled"`: 除外をアカウントで作成できません。
**注記**  
属性を使用して除外を許可するかどうかを設定できますが、この属性で除外を作成することはできません。除外を作成するには、VPC を所有するアカウント内で作成する必要があります。VPC BPA 除外の作成に関する詳細は、「*Amazon VPC ユーザーガイド*」の「[Create and delete exclusions](https://docs.aws.amazon.com//vpc/latest/userguide/security-vpc-bpa.html#security-vpc-bpa-exclusions)」を参照してください。

**考慮事項**

宣言型ポリシーでこの属性を使用する場合、次のオペレーションを使用して、範囲内のアカウントの設定を変更することはできません。これはすべてを網羅したリストではありません。
+ `ModifyVpcBlockPublicAccessOptions`
+ `CreateVpcBlockPublicAccessExclusion`
+ `ModifyVpcBlockPublicAccessExclusion`

------
#### [ Serial Console Access ]

**ポリシーの効果**

EC2 シリアルコンソールにアクセスできるかどうかをコントロールします。EC2 シリアルコンソールの詳細については、「*Amazon Elastic Compute Cloud ユーザーガイド*」の「[EC2 シリアルコンソール](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-serial-console.html)」を参照してください。

**ポリシーの内容**

```
{
  "ec2_attributes": {
    "serial_console_access": {
      "status": {
        "@@assign": "enabled"
      }
    }
  }
}
```

この属性で使用できるフィールドは次のとおりです。
+ `"status"`:
  + `"enabled"`: EC2 シリアルコンソールへのアクセスが許可されます。
  + `"disabled"`: EC2 シリアルコンソールへのアクセスがブロックされます。

**考慮事項**

宣言型ポリシーでこの属性を使用する場合、次のオペレーションを使用して、範囲内のアカウントの設定を変更することはできません。これはすべてを網羅したリストではありません。
+ `EnableSerialConsoleAccess`
+ `DisableSerialConsoleAccess`

------
#### [ Image Block Public Access ]

**ポリシーの効果**

Amazon マシンイメージ (AMI) がパブリックに共有可能かどうかをコントロールします。AMI の詳細については、「*Amazon Elastic Compute Cloud ユーザーガイド*」の「[Amazon マシンイメージ (AMI)](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AMIs.html)」を参照してください。

**ポリシーの内容**

```
{
  "ec2_attributes": {
    "image_block_public_access": {
      "state": {
        "@@assign": "block_new_sharing"
      }
    }
  }
}
```

この属性で使用できるフィールドは次のとおりです。
+ `"state"`:
  + `"unblocked"`: AMI のパブリック共有に制限はありません。
  + `"block_new_sharing"`: AMI の新しいパブリック共有をブロックします。既にパブリックに共有済みの AMI は引き続き一般公開されます。

**考慮事項**

宣言型ポリシーでこの属性を使用する場合、次のオペレーションを使用して、範囲内のアカウントの設定を変更することはできません。これはすべてを網羅したリストではありません。
+ `EnableImageBlockPublicAccess`
+ `DisableImageBlockPublicAccess`

------
#### [ Allowed Images Settings ]

**ポリシーの効果**

許可された AMI を使用して、Amazon EC2 での Amazon マシンイメージ (AMI) の検出と使用をコントロールします。AMI の詳細については、「*Amazon Elastic Compute Cloud ユーザーガイド*」の「[許可された AMI を使用して Amazon EC2 で AMI の検出と使用を制御する](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-allowed-amis.html)」を参照してください。

**ポリシーの内容**

この属性で使用できるフィールドは次のとおりです。

```
{
  "ec2_attributes": {
    "allowed_images_settings": {
      "state": {
        "@@assign": "enabled"
      },
      "image_criteria": {
        "criteria_1": {
          "allowed_image_providers": {
            "@@append": [
              "amazon"
            ]
          }
        }
      }
    }
  }
}
```
+ `"state"`:
  + `"enabled"`: 属性はアクティブで強制されます。
  + `"disabled"`: 属性は非アクティブであり、強制されません。
  + `"audit_mode"`: 属性は監査モードです。つまり、非準拠のイメージは識別されますが、その使用はブロックされません。
+ `"image_criteria"`: 条件のリスト。criteria\$11 から criteria\$110 までの名前で、最大 10 個の条件をサポートします。
  + `"allowed_image_providers"`: 12 桁のアカウント ID、または amazon、aws\$1marketplace、aws\$1backup\$1vault の所有者エイリアスをカンマで区切ったリスト。
  + `"image_names"`: 許可されたイメージの名前。名前にはワイルドカード (? と \$1) を含めることができます。長さ: 1～128 文字 ? が含まれる場合、最小長は 3 文字です。
  + `"marketplace_product_codes"`: 許可されたイメージの AWS Marketplace 製品コード。長さ: 1～25 文字の有効な文字 (A～Z、a～z) と数字 (0～9)
  + `"creation_date_condition"`: 許可されたイメージの最長有効期間。
    + `"maximum_days_since_created"`: イメージが作成されてからの最大経過日数。有効範囲: 最小値 は 0 です。最大値は 2147483647 です。
  + `"deprecation_time_condition"`: 許可されたイメージが非推奨になってからの最大経過期間。
    + `"maximum_days_since_deprecated"`: イメージが非推奨になってからの最大経過日数。有効範囲: 最小値 は 0 です。最大値は 2147483647 です。

**考慮事項**

宣言型ポリシーでこの属性を使用する場合、次のオペレーションを使用して、範囲内のアカウントの設定を変更することはできません。これはすべてを網羅したリストではありません。
+ `EnableAllowedImagesSettings`
+ `ReplaceImageCriteriaInAllowedImagesSettings`
+ `DisableAllowedImagesSettings`

------
#### [ Instance Metadata ]

**ポリシーの効果**

すべての新しい EC2 インスタンスの起動に対する IMDS のデフォルトと IMDSv2 の適用を制御します。 EC2 IMDS のデフォルトと IMDSv2 の適用の詳細については、*Amazon EC2*[2 ユーザーガイド」の「インスタンスメタデータを使用して EC2 インスタンスを管理する](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-metadata.html)」を参照してください。

**ポリシーの内容**

この属性で使用できるフィールドは次のとおりです。

```
{
  "ec2_attributes": {
    "instance_metadata_defaults": {
      "http_tokens": {
        "@@assign": "required"
      },
      "http_put_response_hop_limit": {
        "@@assign": "4"
      },
      "http_endpoint": {
        "@@assign": "enabled"
      },
      "instance_metadata_tags": {
        "@@assign": "enabled"
      },
      "http_tokens_enforced": {
        "@@assign": "enabled"
      }
    }
  }
}
```
+ `"http_tokens"`:
  + `"no_preference"`: その他のデフォルトが適用されます。例えば、該当する場合には AMI のデフォルトが適用されます。
  + `"required"`: IMDSv2 を使用する必要があります。IMDSv1 は使用できません。
  + `"optional"`: IMDSv1 と IMDSv2 の両方を使用できます。
**注記**  
**メタデータバージョン**  
`http_tokens` を `required` に設定する前に (IMDSv2 を使用する必要があります)、どのインスタンスも IMDSv1 呼び出しを行っていないことを確認してください。詳細については、*Amazon EC2*[2 ユーザーガイド」の「ステップ 1: IMDSv2 = オプションでインスタンスを特定し、IMDSv1 の使用状況を監査](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-metadata-transition-to-version-2.html#path-step-1)する」を参照してください。
+ `"http_put_response_hop_limit"`:
  + `"Integer"`: -1～64 の整数値。メタデータトークンが移動できるホップの最大数を表します。設定がないことを示すには、-1 に設定します。
**注記**  
**ホップ制限**  
`http_tokens` が `required` に設定されている場合、`http_put_response_hop_limit` を最低でも 2 に設定することを推奨します。詳細については、「*Amazon Elastic Compute Cloud ユーザーガイド*」の「[Instance metadata access considerations](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instancedata-data-retrieval.html#imds-considerations)」を参照してください。
+ `"http_endpoint"`:
  + `"no_preference"`: その他のデフォルトが適用されます。例えば、該当する場合には AMI のデフォルトが適用されます。
  + `"enabled"`: インスタンスメタデータサービスのエンドポイントにアクセスできます。
  + `"disabled"`: インスタンスメタデータサービスのエンドポイントにアクセスできません。
+ `"instance_metadata_tags"`:
  + `"no_preference"`: その他のデフォルトが適用されます。例えば、該当する場合には AMI のデフォルトが適用されます。
  + `"enabled"`: インスタンスタグには、インスタンスメタデータからアクセスできます。
  + `"disabled"`: インスタンスタグには、インスタンスメタデータからアクセスできません。
+ `"http_tokens_enforced":`
  + `"no_preference"`: その他のデフォルトが適用されます。例えば、該当する場合には AMI のデフォルトが適用されます。
  + `"enabled"`: IMDSv2 を使用する必要があります。IMDSv1 インスタンスの起動または既存のインスタンスでの IMDSv1 の有効化の試行は失敗します。
  + `"disabled"`: IMDSv1 と IMDSv2 の両方を使用できます。
**警告**  
**IMDSv2 の適用**  
IMDSv1 と IMDSv12 (トークンオプション) を許可しながら IMDSv2 の適用を有効にすると、起動パラメータまたは AMI のデフォルトを使用して IMDSv1 が明示的に無効になっていない限り、起動エラーが発生します。詳細については、*Amazon EC2 ユーザーガイド*[」のIMDSv1-enabledインスタンスの起動が失敗](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/troubleshooting-launch.html#launching-an-imdsv1-enabled-instance-fails)する」を参照してください。

------
#### [ Snapshot Block Public Access ]

**ポリシーの効果**

Amazon EBS スナップショットがパブリックにアクセス可能かどうかをコントロールします。EBS スナップショットの詳細については、「*Amazon Elastic Block Store ユーザーガイド*の「[Amazon EBS snapshots](https://docs.aws.amazon.com/ebs/latest/userguide/ebs-snapshots.html)」を参照してください。

**ポリシーの内容**

```
{
  "ec2_attributes": {
    "snapshot_block_public_access": {
      "state": {
        "@@assign": "block_new_sharing"
      }
    }
  }
}
```

この属性で使用できるフィールドは次のとおりです。
+ `"state"`:
  + `"block_all_sharing"`: スナップショットのパブリック共有をすべてブロックします。既にパブリックに共有済みのスナップショットはプライベートとして扱われ、一般公開されなくなります。
  + `"block_new_sharing"`: スナップショットの新しいパブリック共有をブロックします。既にパブリックに共有済みのスナップショットは、引き続き一般公開されます。
  + `"unblocked"`: スナップショットのパブリック共有に制限はありません。

**考慮事項**

宣言型ポリシーでこの属性を使用する場合、次のオペレーションを使用して、範囲内のアカウントの設定を変更することはできません。これはすべてを網羅したリストではありません。
+ `EnableSnapshotBlockPublicAccess`
+ `DisableSnapshotBlockPublicAccess`

------