📌 結論:認証情報レポートとは?
AWSアカウント内の全IAMユーザーのセキュリティ状態を
CSV形式で一括出力する「セキュリティ監査レポート」です
rootアカウントの情報を
まとめて取得できる
MFAの有効/無効状態を
一目で把握できる
いつ使われたかを記録
不要な認証情報を発見
🏢 会社の「入退室カード管理台帳」で例えると超わかりやすい!
AWS社(あなたのAWSアカウント)
(root)
(developer)
(admin)
(service)
📋 認証情報レポート = 社員証管理台帳
-
🪪
パスワード = オフィスの入口ドアの暗証番号
誰がいつ最後に使ったか?ちゃんと定期変更してる? -
🔑
アクセスキー = サーバールームの物理キー
2本まで発行可能。使ってないキーは回収すべき! -
📱
MFA = 入館時の指紋認証
設定してないと「カードだけで入れる」危険な状態 -
📊
レポート全体 = 月次セキュリティ監査表
「退職した人のカードまだ有効じゃない?」を発見!
🔄 レポート生成の流れ(2ステップAPI)
レポート生成をリクエスト
(非同期処理が開始)
全ユーザー情報を収集
(数秒〜数分)
完成したCSVレポートを
Base64形式で取得
全ユーザーの認証情報が
一覧で確認可能!
💡 ポイント:レポートは4時間ごとに更新可能。
4時間以内に再実行すると、キャッシュされた前回のレポートが返されます。
📊 レポートに含まれる情報(全21カラム)
ユーザーの識別情報と作成日時
コンソールログイン用パスワードの状態
多要素認証の設定状態
⚠️ falseのユーザーは
セキュリティリスクが高い!
API/CLI用キーの状態(各ユーザー最大2つ)
※ access_key_2_* も同様の項目あり
X.509署名証明書の状態(各ユーザー最大2つ)
🔍 このレポートで発見できるセキュリティ問題
rootアカウントのアクセスキー
rootにアクセスキーが存在する場合は即座に削除すべき。rootはコンソールログインのみに制限!
🔴 最重要MFA未設定ユーザー
mfa_active = false のユーザーはパスワード漏洩時に即座に侵害される危険性あり
🔴 最重要長期間未使用のアクセスキー
access_key_last_used_date が90日以上前のキーは無効化を検討。不要なキーは削除!
🟡 重要ローテーションされていないキー
access_key_last_rotated が90日以上前のキーは定期ローテーションのルール違反の可能性
🟡 重要未使用のIAMユーザー
password_last_used が長期間N/Aまたは古い日付 → 退職者や不要アカウントの可能性
🟢 推奨パスワード変更されていないユーザー
password_last_changed が古い → パスワードポリシーが適用されていない可能性
🟢 推奨📄 レポートのサンプル(CSV形式)
| user | arn | password_enabled | password_last_used | mfa_active | access_key_1_active | access_key_1_last_used_date | access_key_2_active |
|---|---|---|---|---|---|---|---|
| <root_account> | arn:aws:iam::123456789012:root | true | 2024-01-15T08:30:00Z | true | false | N/A | false |
| admin-tanaka | arn:aws:iam::123456789012:user/admin-tanaka | true | 2024-01-20T14:22:00Z | true | true | 2024-01-19T09:15:00Z | false |
| dev-sato | arn:aws:iam::123456789012:user/dev-sato | true | 2024-01-18T10:45:00Z | false | true | 2024-01-20T16:30:00Z | false |
| ci-cd-service | arn:aws:iam::123456789012:user/ci-cd-service | false | N/A | false | true | 2024-01-20T23:59:00Z | true |
| old-user | arn:aws:iam::123456789012:user/old-user | true | 2023-06-15T11:00:00Z | false | true | 2023-07-01T08:00:00Z | false |
⚠️ 上記サンプルの問題点:
dev-sato → MFA未設定! |
old-user → 6ヶ月以上未使用&MFA未設定!
🛠️ 実際の使い方(AWS CLI)
レポート生成をリクエスト
GenerateCredentialReport APIを呼び出して生成を開始
レポートの完成を待つ
State が "COMPLETE" になるまで待機(通常数秒〜数分)
レポートを取得してデコード
Base64エンコードされたCSVを取得してデコード
セキュリティ分析を実行
問題のあるユーザーを抽出
⚠️ 知っておくべき注意点
⏰ 4時間のクールダウン
レポートは4時間に1回しか更新されません。頻繁な呼び出しでも前回のキャッシュが返されます。
📊 全ユーザーが対象
特定ユーザーだけを抽出することはできません。常に全IAMユーザー+rootの情報が出力されます。
🔒 必要なIAM権限
iam:GenerateCredentialReport と iam:GetCredentialReport の両方の権限が必要です。
🌐 グローバルサービス
IAMはグローバルサービスのため、どのリージョンから実行しても同じレポートが取得できます。
📝 Base64エンコード
GetCredentialReportの結果はBase64エンコードされています。デコード処理が必要です。
🤖 自動化との連携
Lambda + EventBridgeで定期実行し、問題があればSNS通知するのがベストプラクティス!
❓ よくある質問
IAMロールには永続的な認証情報がないため、このレポートには含まれません。
ロールの使用状況は、IAM Access Analyzer や CloudTrail で確認してください。
not_supported = rootアカウントなど、その項目がサポートされていないユーザータイプ
例:rootアカウントの password_last_changed は「not_supported」(rootはパスワードポリシー対象外)
Security Hub の「AWS Foundational Security Best Practices」で、MFA未設定やアクセスキーのローテーション状況が自動チェックされます。
手動でレポートを確認するより、Security Hub の利用がおすすめです。
Organizations全体の一括レポートは生成できません。
全アカウントを監査するには、StackSetsでLambda関数をデプロイし、各アカウントで自動実行→結果を集約するアーキテクチャが有効です。
🎓 まとめ
Credential
Report
情報収集
Credential
Report
セキュリティ
分析