re:Invent 2024 が始まり、新たな発表がたくさん出てきました。
今回は、Amazon Web Services が declarative policies (宣言型)ポリシーが発表されたので、早速検証してみました。
アップデート概要
新機能や新しい API が追加されても、サービスを制限しているため漏れが発生しずらくなります。
宣言型ポリシーを有効にする
AWS Organizationsで「ポリシー」→「EC2の宣言型ポリシー」を押下します。

EC2の宣言型ポリシーを有効化します。

アカウントステータスレポートを生成する
ポリシーをアタッチする前に環境を評価することができます。
ステータスレポート保存用のS3バケットを作成し、以下のバケットポリシーを設定します。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "DeclarativePoliciesReportBucket",
"Effect": "Allow",
"Principal": {
"Service": [
"report.declarative-policies-ec2.amazonaws.com"
]
},
"Action": [
"s3:PutObject"
],
"Resource": "arn:aws:s3:::<bucketName>/*",
"Condition": {
"StringEquals": {
"aws:SourceArn": "arn:<partition>:declarative-policies-ec2:<region>:<accountId>:*"
}
}
}
]
}
「アクション」から「アカウントステータスレポートを表示」を選択します。

ステータスレポートの範囲を選択肢して送信します。


アカウントステータスレポートが生成されました。


一貫性のないアカウントを確認し、ポリシー作成の参考にできます。
宣言型ポリシーを適用する
宣言型ポリシーを作成していきます。

サポートされているのは以下のポリシーです。

今回は、「AMIブロックパブリックアクセス」を適用してみます。
ポリシーをアタッチする前に、AMIを公開できるか確認しておきます。
任意のAMI許可を編集し、AMIを公開できることを確認します。

もし公開できない場合、EC2サービス側の設定でブロックされているかもしれないので、以下のように「新しい公開共有をブロック」のチェックを外してみましょう。

それでは、ポリシーをアタッチします。
「アクション」から「ポリシーのアタッチ」を選択します。

ポリシーをアタッチするOUを選択肢ます。

ポリシーの中身は以下になります。
{
"ec2_attributes": {
"image_block_public_access": {
"state": {
"@@assign": "block_new_sharing"
}
}
}
}
再度、AMIの公開を試みます。
宣言型ポリシーによりブロックされているため、公開できないことが確認できます。

まとめ
簡単に組織全体のサービス利用をブロックすることができました。
宣言型ポリシーも活用し、セキュリティとガバナンスの向上を目指しましょう。