Amazon S3 汎用バケットの ABAC 設定が有効であることを確認する Config ルールを作成してみた

Amazon S3 汎用バケットの ABAC 設定が有効であることを確認する Config ルールを作成してみた

2026.01.19

Aamzon S3 汎用バケットの ABAC 設定が有効化されていることを確認する AWS Config ルールを作成してみました。
2025 年 11 月に Amazon S3 汎用バケットが ABAC に対応しました。ABAC は利用するためには明示的に設定を有効化する必要があります。この設定を全てのバケットで有効化しているか確認したい場合に利用できるルールです。

https://dev.classmethod.jp/articles/amazon-s3-attribute-based-access-control/

AWS Config ルールの作成

Guard を使用して Config ルールを作成します。具体的には下記ルールとしてみました。

rule s3_bucket_abac_check {
    supplementaryConfiguration.AbacStatus.status exists
    supplementaryConfiguration.AbacStatus.status == "Enabled"
}

S3 バケットのプロパティにおける「バケット ABAC」設定が有効であることを確認します。有効であれば「準拠」、無効であれば「非準拠」の評価となるルールです。

s3-bucket-abac-check-2

今回のテスト用に次の S3 バケットを作成しました。test-20260119-abac-enabled のバケット ABAC 設定が上記の画像となります。

S3 バケット名 バケット ABAC 設定
test-20260119-abac-enabled 有効
test-20260119-abac-disabled 無効

AWS Config ルールを作成していきます。Config ルールはリージョン毎に作成する必要がありますが、今回は大阪リージョンだけで作成しています。

AWS Config のルール画面から「ルールの追加」を実行します。

s3-bucket-abac-check-3

「Guard を使用してカスタムルールを作成」を選択して「次へ」を実行します。

s3-bucket-abac-check-4

Guard ランタイムは執筆時点では guard-2.x.x のみ選択可能です。「ルールの内容」に Guard ルールを記載します。検出評価の変更範囲は「リソース」を選択して AWS S3 Buckect を指定します。これにより同一リージョン内の全ての汎用 S3 バケットが対象となります。

s3-bucket-abac-check-5

rule s3_bucket_abac_check {
    supplementaryConfiguration.AbacStatus.status exists
    supplementaryConfiguration.AbacStatus.status == "Enabled"
}

最後に設定内容を確認して問題なければ「保存」します。

s3-bucket-abac-check-6

これで設定完了です。作成したルールを選択することでリソース毎の評価結果を確認できます。今回の検証環境では 1 分程度で評価が完了していました。想定通りの結果となりました。

s3-bucket-abac-check-7

補足情報

ここからは補足情報です。2025 年 1 月 19 日時点では、S3 バケットの Config 情報をマネジメントコンソールで確認すると abacStatus であり、最初の文字が小文字ですが、AWS CLI で確認すると AbacStatus であり、最初の文字は大文字です。abacStatus で Guard ルールを作成してみたところ、機能しなかったため、ルールを作成するときは API で取得した情報をベースにするのがよいです。

マネジメントコンソールで Config 情報を確認した例です。

s3-bucket-abac-check-1

AWS CLI で確認した例です。

$ aws configservice get-resource-config-history \
>     --resource-type AWS::S3::Bucket \
>     --resource-id test-20260119-abac-enabled \
>     --limit 1
{
    "configurationItems": [
        {
            "version": "1.3",
            "accountId": "111122223333",
            "configurationItemCaptureTime": "2026-01-19T13:28:01.860000+00:00",
            "configurationItemStatus": "OK",
            "configurationStateId": "1768829281860",
            "configurationItemMD5Hash": "",
            "arn": "arn:aws:s3:::test-20260119-abac-enabled",
            "resourceType": "AWS::S3::Bucket",
            "resourceId": "test-20260119-abac-enabled",
            "resourceName": "test-20260119-abac-enabled",
            "awsRegion": "ap-northeast-3",
            "availabilityZone": "Regional",
            "resourceCreationTime": "2026-01-19T13:25:30+00:00",
            "tags": {},
            "relatedEvents": [],
            "relationships": [],
            "configuration": "{\"name\":\"test-20260119-abac-enabled\",\"owner\":{\"displayName\":null,\"id\":\"02d7c5ff0358c12bcf3bfdfad44d274664e14aeac49e4541d74177175example\"},\"creationDate\":\"2026-01-19T13:25:30.000Z\",\"region\":\"ap-northeast-3\"}",
            "supplementaryConfiguration": {
                "AbacStatus": "{\"status\":\"Enabled\"}",
(以下、略)

また、AbacStatus パラメータが必ず存在するかどうかわからなかったため、冒頭で紹介したルールでは exits の判定を追加しており、AbacStatus パラメータが存在することも条件としています。下記の部分が該当します。

supplementaryConfiguration.AbacStatus.status exists

さいごに

Amazon S3 汎用バケットの ABAC 設定を確認する Config ルールを Guard で作成してみました。参考情報ですが、Guard を使用した Config ルールは下記でも紹介しています。
Guard を使用した Config ルールは下記でも紹介しています。

https://dev.classmethod.jp/articles/midosuji-tech-2024-06-aws-config-rule/

将来的に、もし AWS マネージド型ルールとして提供されるようになれば、そちらを使おうと思います。
以上、このブログがどなたかのご参考になれば幸いです。

この記事をシェアする

FacebookHatena blogX

関連記事