IAM Credential Reportsによる認証情報の監査 ── アクセスキー棚卸しとMFA未設定ユーザーの洗い出し

目次

概要

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には多数のカラムが含まれています。監査でよく使用するカラムを以下に整理します。

ユーザー基本情報

カラム名説明
userIAMユーザー名(ルートアカウントは <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_activeMFAデバイスが有効か(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:GenerateCredentialReportiam:GetCredentialReport の権限が必要

ステップ1: Credential Reportを生成・ダウンロードする

IAMコンソールからCredential Reportを生成し、CSVファイルとしてダウンロードします。

  • AWSマネジメントコンソールにログインし、リージョンがap-northeast-1(東京)であることを確認します
  • 上部の検索バーにIAMと入力し、表示された「IAM」を選択します
  • 左側ナビゲーションの「認証情報レポート」を選択します
  • 「レポートをダウンロード」をクリックします
IAMコンソールの「認証情報レポート」画面(レポートのダウンロードボタンが表示された状態)

初回アクセス時や前回の生成から4時間以上経過している場合は「レポートを生成」ボタンが表示されることがあります。その場合は「レポートを生成」をクリックしてから「レポートをダウンロード」をクリックします。

CSVファイルがダウンロードされます。ファイル名は status_reports_<日時>.csv の形式です。

ステップ2: CSVの内容を確認する

ダウンロードしたCSVファイルをスプレッドシートアプリケーション(Excel、Google Sheetsなど)で開きます。

ダウンロードしたCredential ReportのCSVをスプレッドシートで開いた状態(カラム名と数行分のデータが確認できる状態)

CSVの1行目はヘッダー行で、2行目以降に各IAMユーザーのデータが記載されています。最初の行はルートアカウント(<root_account>)です。

各カラムの値を確認する際のポイントは以下の通りです。

  • password_enablednot_supported の場合: ルートアカウントの行に表示されます。ルートアカウントのパスワードはIAMでは管理されないため、この値になります
  • access_key_1_last_used_dateN/A の場合: そのアクセスキーはまだ一度も使用されていません
  • mfa_activefalse の場合: そのユーザーにMFAデバイスが設定されていません

ステップ3: MFA未設定ユーザーを洗い出す

セキュリティ監査でよく行われるのが、MFAが有効になっていないIAMユーザーの特定です。

CSVファイルで mfa_active カラムを確認し、false のユーザーを洗い出します。

スプレッドシートでの操作手順は以下の通りです。

  • mfa_active カラム(通常はD列付近)にフィルターを設定します
  • false のみを表示するようにフィルタリングします
  • 表示されたユーザーがMFA未設定のユーザーです
スプレッドシートで mfa_active が false のユーザーをフィルタリングした状態

特にルートアカウント(<root_account>)の mfa_activefalse の場合は、最優先で対応が必要です。ルートアカウントはアカウント内のすべてのリソースに対するフルアクセス権限を持つため、MFAの設定は必須です。

ステップ4: 未使用のアクセスキーを特定する

長期間使用されていないアクセスキーは、漏洩しても気づきにくく、セキュリティリスクになります。以下の観点でアクセスキーの棚卸しを行います。

有効だが一度も使用されていないアクセスキー

  • access_key_1_activetrue かつ access_key_1_last_used_dateN/A のユーザーを抽出します
  • 同様に access_key_2_activeaccess_key_2_last_used_date も確認します

これらのアクセスキーは作成後に使用されていないため、不要な可能性が高く、無効化または削除を検討します。

長期間使用されていないアクセスキー

  • access_key_1_activetrue かつ 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 = falseMFAなし
未使用のアクセスキー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.csv

get-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_activeaccess_key_N_last_used_date カラムで確認できます
  • アクセスキーのローテーション状況access_key_N_last_rotated カラムで確認し、90日以上経過している場合はローテーションを検討します
  • Credential Reportsは 具体的なAPI操作の詳細を含まない ため、操作の履歴を調べたい場合はCloudTrailを使用します

参照先

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

株式会社Luxy(https://luxy-inc.com)の代表取締役.

2018年〜インフラエンジニアとしてキャリアをスタートし、オンプレミスのネットワーク・サーバ環境で3年半、クラウド環境で4年半の8年間エンジニアとして従事。
2021年に佐藤氏の創業した会社を引き継ぎ、代表に就任。

目次