yuj1osm's tech blog

クラウド、セキュリティ、AIなど

Amazon Web Services が declarative policies (宣言型)ポリシーを発表しました

re:Invent 2024 が始まり、新たな発表がたくさん出てきました。
今回は、Amazon Web Services が declarative policies (宣言型)ポリシーが発表されたので、早速検証してみました。

aws.amazon.com

aws.amazon.com

アップデート概要

  • 組織内の AWS サービスのベースライン設定ができる

  • SCPのようにAPI単位で制限するのではなく、サービス単位で制限できる

新機能や新しい 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>:*"
                }
            }
        }
    ]
}

「アクション」から「アカウントステータスレポートを表示」を選択します。

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

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

S3バケットにはCSVファイルが保存されています。

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

宣言型ポリシーを適用する

宣言型ポリシーを作成していきます。

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

今回は、「AMIブロックパブリックアクセス」を適用してみます。

ポリシーをアタッチする前に、AMIを公開できるか確認しておきます。
任意のAMI許可を編集し、AMIを公開できることを確認します。

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

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

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

ポリシーの中身は以下になります。

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

再度、AMIの公開を試みます。
宣言型ポリシーによりブロックされているため、公開できないことが確認できます。

まとめ

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