

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

# 宣言型ポリシーの構文と例
<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\_1 から criteria\_10 までの名前で、最大 10 個の条件をサポートします。
  + `"allowed_image_providers"`: 12 桁のアカウント ID、または amazon、aws\_marketplace、aws\_backup\_vault の所有者エイリアスをカンマで区切ったリスト。
  + `"image_names"`: 許可されたイメージの名前。名前にはワイルドカード (? と \*) を含めることができます。長さ: 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`

------