概要
AWSアカウントのセキュリティを維持するためには、API呼び出しの記録、リソース状態の把握、そして認証情報の監査を組み合わせて実施する必要があります。API呼び出しの記録にはCloudTrail、リソースの構成管理にはAWS Configがそれぞれ適していますが、IAMユーザーの認証情報の状態を一括で把握するには IAM Credential Reports(認証情報レポート) が最も効率的です。
IAM Credential Reportsは、アカウント内のすべてのIAMユーザーのパスワード、アクセスキー、MFAデバイスなどの認証情報の状態をCSV形式で出力するレポートです。本記事では、Credential Reportの生成・ダウンロードからCSVの各カラムの読み方、そして実務で役立つ監査作業までを実践します。

この記事のメリット
- IAM Credential Reportsで確認できる情報と、CloudTrail・AWS Configとの役割分担を理解できる
- Credential ReportのCSVに含まれる各カラムの意味を正確に把握できる
- アクセスキーの棚卸し(未使用キーの特定、古いキーの洗い出し)を実践できる
- MFA未設定のIAMユーザーを一覧で特定する方法を習得できる
- SCS試験で「認証情報の監査に適したサービス」を問われた際に正確に判断できるようになる
技術解説
セキュリティ監査に必要な3つの観点
AWSアカウントのセキュリティ監査には、以下の3つの観点が必要です。
| 観点 | 適したサービス | 確認できる内容 |
|---|---|---|
| API呼び出しの記録 | AWS CloudTrail | 誰が・いつ・どのAPIを呼び出したか |
| リソースの状態把握 | AWS Config | リソースの設定変更履歴、コンプライアンス状態 |
| 認証情報の監査 | IAM Credential Reports | パスワード・アクセスキー・MFAの状態一覧 |
CloudTrailは「何が行われたか」を記録し、AWS Configは「リソースがどのような状態か」を追跡します。一方、IAM Credential Reportsは「認証情報がどのような状態か」を一括で把握するためのレポートです。これら3つを組み合わせることで、包括的なセキュリティ監査が実現します。
IAM Credential Reportsとは
IAM Credential Reports(認証情報レポート)は、AWSアカウント内のすべてのIAMユーザー(ルートアカウントを含む)の認証情報の状態をCSV形式で出力するレポートです。
主な特徴は以下の通りです。
- アカウント内のすべてのIAMユーザーが対象(ルートアカウントを含む)
- 4時間ごとに最大1回生成可能(前回生成から4時間以内は前回のレポートが返される)
- CSV形式で出力される
- IAMコンソール、AWS CLI、AWS APIから生成・取得できる
- 追加料金は発生しない
Credential Reportの主要カラム
Credential ReportのCSVには多数のカラムが含まれています。監査でよく使用するカラムを以下に整理します。
ユーザー基本情報
| カラム名 | 説明 |
|---|---|
user | IAMユーザー名(ルートアカウントは <root_account>) |
arn | ユーザーのARN |
user_creation_time | ユーザーの作成日時 |
パスワード関連
| カラム名 | 説明 |
|---|---|
password_enabled | コンソールパスワードが有効か(true / false / not_supported) |
password_last_used | パスワードが最後に使用された日時 |
password_last_changed | パスワードが最後に変更された日時 |
password_next_rotation | パスワードのローテーション期限(ポリシー設定時) |
アクセスキー関連
| カラム名 | 説明 |
|---|---|
access_key_1_active | アクセスキー1が有効か(true / false) |
access_key_1_last_rotated | アクセスキー1が最後にローテーションされた日時 |
access_key_1_last_used_date | アクセスキー1が最後に使用された日時 |
access_key_1_last_used_region | アクセスキー1が最後に使用されたリージョン |
access_key_1_last_used_service | アクセスキー1が最後に使用されたサービス |
access_key_2_active | アクセスキー2が有効か |
access_key_2_last_rotated | アクセスキー2が最後にローテーションされた日時 |
access_key_2_last_used_date | アクセスキー2が最後に使用された日時 |
access_key_2_last_used_region | アクセスキー2が最後に使用されたリージョン |
access_key_2_last_used_service | アクセスキー2が最後に使用されたサービス |
MFA関連
| カラム名 | 説明 |
|---|---|
mfa_active | MFAデバイスが有効か(true / false) |
CloudTrailやConfigとの使い分け
Credential Reportsは認証情報の「現在の状態」を一括で確認するためのレポートです。具体的なAPI操作の履歴を調べたい場合はCloudTrail、リソースの設定変更を追跡したい場合はAWS Configを使用します。
| 確認したい内容 | 適したサービス |
|---|---|
| IAMユーザーのMFA設定状況を一覧で確認したい | IAM Credential Reports |
| アクセスキーの最終使用日時を確認したい | IAM Credential Reports |
| 特定のアクセスキーでどのようなAPI操作が行われたか調べたい | CloudTrail |
| セキュリティグループのルールが変更された履歴を確認したい | AWS Config |
| S3バケットのパブリックアクセス設定の変更を検知したい | AWS Config |
実践
前提条件
- リージョン:
ap-northeast-1(東京) - IAMユーザーが1つ以上作成済みであること
- Credential Reportの生成には
iam:GenerateCredentialReportとiam:GetCredentialReportの権限が必要
ステップ1: Credential Reportを生成・ダウンロードする
IAMコンソールからCredential Reportを生成し、CSVファイルとしてダウンロードします。
- AWSマネジメントコンソールにログインし、リージョンが
ap-northeast-1(東京)であることを確認します - 上部の検索バーに
IAMと入力し、表示された「IAM」を選択します - 左側ナビゲーションの「認証情報レポート」を選択します
- 「レポートをダウンロード」をクリックします

初回アクセス時や前回の生成から4時間以上経過している場合は「レポートを生成」ボタンが表示されることがあります。その場合は「レポートを生成」をクリックしてから「レポートをダウンロード」をクリックします。
CSVファイルがダウンロードされます。ファイル名は status_reports_<日時>.csv の形式です。
ステップ2: CSVの内容を確認する
ダウンロードしたCSVファイルをスプレッドシートアプリケーション(Excel、Google Sheetsなど)で開きます。

CSVの1行目はヘッダー行で、2行目以降に各IAMユーザーのデータが記載されています。最初の行はルートアカウント(<root_account>)です。
各カラムの値を確認する際のポイントは以下の通りです。
password_enabledがnot_supportedの場合: ルートアカウントの行に表示されます。ルートアカウントのパスワードはIAMでは管理されないため、この値になりますaccess_key_1_last_used_dateがN/Aの場合: そのアクセスキーはまだ一度も使用されていませんmfa_activeがfalseの場合: そのユーザーにMFAデバイスが設定されていません
ステップ3: MFA未設定ユーザーを洗い出す
セキュリティ監査でよく行われるのが、MFAが有効になっていないIAMユーザーの特定です。
CSVファイルで mfa_active カラムを確認し、false のユーザーを洗い出します。
スプレッドシートでの操作手順は以下の通りです。
mfa_activeカラム(通常はD列付近)にフィルターを設定しますfalseのみを表示するようにフィルタリングします- 表示されたユーザーがMFA未設定のユーザーです

特にルートアカウント(<root_account>)の mfa_active が false の場合は、最優先で対応が必要です。ルートアカウントはアカウント内のすべてのリソースに対するフルアクセス権限を持つため、MFAの設定は必須です。
ステップ4: 未使用のアクセスキーを特定する
長期間使用されていないアクセスキーは、漏洩しても気づきにくく、セキュリティリスクになります。以下の観点でアクセスキーの棚卸しを行います。
有効だが一度も使用されていないアクセスキー
access_key_1_activeがtrueかつaccess_key_1_last_used_dateがN/Aのユーザーを抽出します- 同様に
access_key_2_activeとaccess_key_2_last_used_dateも確認します
これらのアクセスキーは作成後に使用されていないため、不要な可能性が高く、無効化または削除を検討します。
長期間使用されていないアクセスキー
access_key_1_activeがtrueかつaccess_key_1_last_used_dateが90日以上前のユーザーを抽出します- AWSのベストプラクティスでは、90日以上使用されていないアクセスキーは削除が推奨されています
ステップ5: アクセスキーのローテーション状況を確認する
アクセスキーの定期的なローテーションは、認証情報の漏洩リスクを軽減するための重要な対策です。
access_key_1_last_rotatedカラムを確認します- 作成日時から90日以上経過しているアクセスキーは、ローテーションを検討します
監査結果をまとめる際は、以下のような表で整理すると報告しやすくなります。
| 監査項目 | 確認カラム | 判定条件 | リスクレベル |
|---|---|---|---|
| ルートアカウントのMFA未設定 | mfa_active = false(root行) | ルートにMFAなし | 高 |
| IAMユーザーのMFA未設定 | mfa_active = false | MFAなし | 中 |
| 未使用のアクセスキー | access_key_N_active = true かつ last_used_date = N/A | 一度も使用されていない | 中 |
| 長期間未使用のアクセスキー | access_key_N_active = true かつ last_used_date が90日以上前 | 90日以上未使用 | 中 |
| ローテーション未実施のアクセスキー | access_key_N_last_rotated が90日以上前 | 90日以上ローテーションなし | 低〜中 |
ステップ6: AWS CLIでCredential Reportを生成する(補足)
Credential ReportはAWS CLIからも生成・取得できます。定期的な監査を自動化する場合に役立ちます。
レポートの生成をリクエストします。
aws iam generate-credential-reportレポートの生成が完了したら、内容を取得してCSVファイルに保存します。
aws iam get-credential-report --query 'Content' --output text | base64 --decode > credential_report.csvget-credential-report の出力はBase64エンコードされているため、base64 --decode でデコードしてCSVファイルに保存します。
まとめ
本記事のポイントを整理します。
- IAM Credential Reports は、アカウント内のすべてのIAMユーザーの認証情報(パスワード、アクセスキー、MFA)の状態をCSV形式で一括出力するレポートです
- CloudTrail・AWS Config・Credential Reports はそれぞれ異なる役割を持ちます。CloudTrailはAPI呼び出しの記録、AWS Configはリソースの状態把握、Credential Reportsは認証情報の監査に適しています
- MFA未設定ユーザーの洗い出し は
mfa_activeカラムで、未使用アクセスキーの特定 はaccess_key_N_activeとaccess_key_N_last_used_dateカラムで確認できます - アクセスキーのローテーション状況 は
access_key_N_last_rotatedカラムで確認し、90日以上経過している場合はローテーションを検討します - Credential Reportsは 具体的なAPI操作の詳細を含まない ため、操作の履歴を調べたい場合はCloudTrailを使用します
