AWS Configのiam-user-unused-credentials-checkは、maxCredentialUsageAgeの値+1日経過すると非準拠となる
困っていること
AWS Configのマネージド型ルールである「iam-user-unused-credentials-check」は、以下の公式ドキュメントの通り、maxCredentialUsageAgeで指定した日数以内に使用されていないパスワードやアクセスキーを確認するルールです。
IAMユーザーに、指定した日数内に使用されていないパスワードまたはアクティブなアクセスキーがあるかどうかを確認します。最近使用されていない非アクティブアカウントがある場合、ルールは NON_COMPLIANT です。
パラメータ:maxCredentialUsageAge
タイプ: int
デフォルト: 90
認証情報を使用できない最大日数。デフォルト値は 90 日です。
https://docs.aws.amazon.com/ja_jp/config/latest/developerguide/iam-user-unused-credentials-check.html
しかし、実際の運用において、maxCredentialUsageAgeの値を1に設定しても、認証情報が24時間以上使用されていない場合に即座に非準拠と判定されないことに気づきました。
トリガーの頻度は1時間ごとに設定しているにもかかわらず、期待通りの挙動をしていません。
なぜmaxCredentialUsageAgeを1に設定しても、認証情報が24時間使用されていない時点で非準拠と判定されないのでしょうか?
回答
AWS Configルール「iam-user-unused-credentials-check」の挙動について説明します。
このルールでは、maxCredentialUsageAgeを超えて認証情報が使用されていない場合に非準拠と判定されますが、実際の動作には以下の特徴があります。
-
日数の解釈と判定基準
- maxCredentialUsageAgeの値は「日数」を表しますが、実際には「N日+24時間」として解釈されます。
例えば値が1の場合、認証情報が48時間(2日間)以内に使用されていれば準拠、48時間を超えると非準拠となります。
- maxCredentialUsageAgeの値は「日数」を表しますが、実際には「N日+24時間」として解釈されます。
-
再評価の制限
- AWS公式ドキュメントにも記載されているとおり、一度評価されてから4時間以内に再評価を実施しても結果は変わりません。
再評価タイムライン
最初の評価から 4 時間以内にこのルールを再評価しても結果には影響しません。
https://docs.aws.amazon.com/ja_jp/config/latest/developerguide/iam-user-unused-credentials-check.html
これにより、例えば認証情報が使用されていない時間が47時間の時点で評価された場合は準拠と判定され、その後48時間を超えても、次の評価(51時間時点)まで準拠のままとなります。
このような仕様のため、トリガーの頻度を1時間ごとに設定していても、期待通りの挙動にならないことがあります。