特定アクションを Deny するポリシーをアタッチした IAM グループに全ての IAM ユーザーが所属しているかを AWS Config ルールで確認してみる

特定アクションを Deny するポリシーをアタッチした IAM グループに全ての IAM ユーザーが所属しているかを AWS Config ルールで確認してみる

Clock Icon2025.04.01

AWS アカウント内の全ての IAM ユーザーに対して、特定アクションを Deny したい場合の方法として、明示的な拒否を記載したポリシーをアタッチした IAM グループを作成し、そのグループに全 IAM ユーザーを所属させる方法があります。

aws-config-rule-iam-user-group-membership-check-9

この方法を採用した際に、グループへの所属漏れがないかを自動的に確認する方法として AWS Config のマネージドルール「iam-user-group-membership-check」が利用できます。本ブログでは、この Config ルールを用いて、S3 への SSE-C 暗号化を用いたオブジェクトアップロードを拒否するポリシーをアタッチした IAM グループに全ての IAM ユーザーが所属しているかを確認してみます。

事前準備

S3 への SSE-C 暗号化を用いたオブジェクトアップロードを拒否する IAM ポリシー deny-s3-put-object-using-sse-c-policy を次のポリシーで作成します。

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Deny",
      "Action": "s3:PutObject",
      "Resource": "arn:aws:s3:::*/*",
      "Condition": {
        "Null": {
          "s3:x-amz-server-side-encryption-customer-algorithm": "false"
        }
      }
    }
  ]
}

上記で作成した IAM ポリシーをアタッチした IAM グループ deny-s3-put-object-using-ssec を作成します。

aws-config-rule-iam-user-group-membership-check-1

テスト用データとして次の IAM ユーザーを用意して、3 ユーザーを deny-s3-put-object-using-ssec グループに所属させます。

IAM ユーザー名 deny-s3-put-object-using-ssec に所属しているか
test-user 所属
test-user-01 所属
test-user-02 所属
test-user-03 -

AWS Config ルールの作成

下記 URL の AWS Config マネージドルールで IAM ユーザーが特定の IAM グループに所属しているかを確認できます。

Config ルールを作成してみます。AWS Config サービスの画面から「ルール」→「ルールの追加」を選択します。

aws-config-rule-iam-user-group-membership-check-2

「AWS によって管理されるルールの追加」から iam-user-group-membership-check を選択して進みます。

aws-config-rule-iam-user-group-membership-check-3

今回はルールの名前や説明、トリガータイプ、リソースはデフォルトのまま進めます。groupName パラメータに対しては、IAM ユーザーが所属しているかどうか確認したい IAM グループ名 deny-s3-put-object-using-ssec を値として指定します。

aws-config-rule-iam-user-group-membership-check-4

なお、パラメータの指定方法については上述したユーザーガイドの説明には次のように記載されています。今回の場合は 1 つの IAM グループのみを指定しています。

IAM ユーザーがメンバーである必要がある IAM グループのカンマ区切りリスト

次に進み、最後に設定内容を確認して「保存」すれば設定完了です。

aws-config-rule-iam-user-group-membership-check-5

設定後、数分待つと評価が完了しました。事前準備で用意した IAM ユーザーに対して、想定どおり test-user-03 のみ非準拠として評価されました( test-user-03 だけが deny-s3-put-object-using-ssec グループに所属していません)。

aws-config-rule-iam-user-group-membership-check-6

また、この状態で deny-s3-put-object-using-ssec グループに所属していない test-user-04 を追加で作成したところ非準拠の IAM ユーザーとして評価結果に反映されました。

aws-config-rule-iam-user-group-membership-check-7

さらに、 test-user-03test-user-04deny-s3-put-object-using-ssec グループに追加したところ、すべての IAM ユーザーが準拠となりました。

aws-config-rule-iam-user-group-membership-check-8

以上で、AWS Config ルールの設定は終わりです。

さいごに

特定のアクションを拒否する IAM ポリシーをアタッチした IAM グループを用意している環境において、全ての IAM ユーザーをそのグループに所属させたい場合があります。その設定漏れを自動的に検出する方法として、マネジードな AWS Config ルールが利用できたため試してみました。マネジードルールのため簡単に設定できた点がよかったです。

以上、このブログがどなたかのご参考になれば幸いです。

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.