特定アクションを Deny するポリシーをアタッチした IAM グループに全ての IAM ユーザーが所属しているかを AWS Config ルールで確認してみる
AWS アカウント内の全ての IAM ユーザーに対して、特定アクションを Deny したい場合の方法として、明示的な拒否を記載したポリシーをアタッチした IAM グループを作成し、そのグループに全 IAM ユーザーを所属させる方法があります。
この方法を採用した際に、グループへの所属漏れがないかを自動的に確認する方法として 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
を作成します。
テスト用データとして次の 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 によって管理されるルールの追加」から iam-user-group-membership-check
を選択して進みます。
今回はルールの名前や説明、トリガータイプ、リソースはデフォルトのまま進めます。groupName
パラメータに対しては、IAM ユーザーが所属しているかどうか確認したい IAM グループ名 deny-s3-put-object-using-ssec
を値として指定します。
なお、パラメータの指定方法については上述したユーザーガイドの説明には次のように記載されています。今回の場合は 1 つの IAM グループのみを指定しています。
IAM ユーザーがメンバーである必要がある IAM グループのカンマ区切りリスト
次に進み、最後に設定内容を確認して「保存」すれば設定完了です。
設定後、数分待つと評価が完了しました。事前準備で用意した IAM ユーザーに対して、想定どおり test-user-03
のみ非準拠として評価されました( test-user-03
だけが deny-s3-put-object-using-ssec
グループに所属していません)。
また、この状態で deny-s3-put-object-using-ssec
グループに所属していない test-user-04
を追加で作成したところ非準拠の IAM ユーザーとして評価結果に反映されました。
さらに、 test-user-03
と test-user-04
を deny-s3-put-object-using-ssec
グループに追加したところ、すべての IAM ユーザーが準拠となりました。
以上で、AWS Config ルールの設定は終わりです。
さいごに
特定のアクションを拒否する IAM ポリシーをアタッチした IAM グループを用意している環境において、全ての IAM ユーザーをそのグループに所属させたい場合があります。その設定漏れを自動的に検出する方法として、マネジードな AWS Config ルールが利用できたため試してみました。マネジードルールのため簡単に設定できた点がよかったです。
以上、このブログがどなたかのご参考になれば幸いです。