宣言型ポリシーについて
宣言型ポリシー(Declarative Policies)とは
宣言型ポリシーは AWS Organizations のポリシータイプの一つで、AWS サービスの基本設定を組織全体に宣言的に強制する機能である。
検証環境
SCP / RCP との違い
| SCP | RCP | 宣言型ポリシー | |
|---|---|---|---|
| 制御対象 | プリンシパル(IAM ユーザー / ロール) | リソース | サービスの設定そのもの |
| 制御方法 | API コールを拒否 | API コールを拒否 | サービスのコントロールプレーンで直接強制 |
| 新機能 / 新 API への追従 | ポリシーの更新が必要 | ポリシーの更新が必要 | 自動的に追従 |
| サービスリンクロールの制御 | 不可 | 不可 | 可能 |
| エラーメッセージ | カスタマイズ不可 | カスタマイズ不可 | カスタマイズ可能 |
| デタッチ時の挙動 | 即座に制限解除 | 即座に制限解除 | 元のアカウントレベル設定に復元 |
SCP / RCP は「この API コールを許可しない」というアプローチであるのに対し、宣言型ポリシーは「この設定を常にこの値にする」というアプローチである。そのため、サービスに新しい API が追加されても、宣言型ポリシーはポリシーの更新なしに設定を維持できる。
Control Tower 予防コントロールとの関係
Control Tower の予防コントロールの一部は、実体として宣言型ポリシーを使用している。以下は対応する予防コントロールが存在する属性のみを列挙している(Instance Metadata Defaults と Allowed Images Settings には対応する予防コントロールがない)。
| Control Tower 予防コントロール | 宣言型ポリシー属性 |
|---|---|
| CT.EC2.PV.7 | EBS Snapshot Block Public Access |
| CT.EC2.PV.8 | VPC Block Public Access |
| CT.EC2.PV.9 | Serial Console Access |
| CT.EC2.PV.11 | Image Block Public Access |
Control Tower 経由で有効化すると、Organizations の宣言型ポリシー(DECLARATIVE_POLICY_EC2)が自動的に作成され、対象 OU にアタッチされる(確認済み)。これは SCP 型・RCP 型の予防コントロールも同様であり、Control Tower の予防コントロールの実体は Organizations ポリシーである。Control Tower を使わない環境では、Organizations API で直接ポリシーを作成・アタッチすることで同等の効果を得られる。
ポリシー構文の基礎
宣言型ポリシーは JSON で記述する。最上位のキーはポリシータイプごとに決まっており(S3 ポリシーなら s3_attributes、EC2 ポリシーなら ec2_attributes)、その下に各属性を配置する。属性の設定値を指定するには operator(@@ で始まるキー)を使う。
{
"<ポリシータイプ>_attributes": {
"<属性名>": {
"<operator>": <値>
}
}
}| Operator | 用途 |
|---|---|
@@assign | 単一値の代入 |
@@append | リスト型の値に追加 |
@@remove | リスト型の値から削除 |
@@assign で指定できる値は属性ごとに決まっている(例: S3 ポリシーの public_access_block_configuration は "all" または "none"、EC2 ポリシーの vpc_block_public_access.mode は "off" / "block_ingress" / "block_bidirectional")。
具体的なポリシー形式と取り得る値は、各ポリシータイプの公式ドキュメント(S3 / EC2)または本サイトの子ページ(S3 ポリシー(宣言型) / EC2 ポリシー(宣言型))を参照。
汎用構文の全体像は AWS 公式ドキュメント: Declarative policy syntax を参照。
ポリシータイプ
宣言型ポリシーは 2 つのポリシータイプに分かれている。
| ポリシータイプ | フィルター名 | 対象サービス | 記事 |
|---|---|---|---|
| EC2 ポリシー(宣言型) | DECLARATIVE_POLICY_EC2 | Amazon VPC, Amazon EC2, Amazon EBS | EC2 ポリシー(宣言型)(一部検証済み) |
| S3 ポリシー(宣言型) | S3_POLICY | Amazon S3 | S3 ポリシー(宣言型)(検証済み) |
S3 ポリシー(宣言型)は 2025 年 11 月に追加された比較的新しい機能であり、EC2 系とは独立したポリシータイプとして管理される。