認証情報レポートで不要なIAMユーザー・アクセスキーを棚卸ししてみた

不要なIAMユーザー・アクセスキーの放置はセキュリティ的に危険です。今すぐ棚卸しましょう。
2023.06.21

こんにちは!AWS事業本部のおつまみです。

みなさん、IAMユーザー・アクセスキーを棚卸ししたいと思ったことはありますか?私はあります。

検証をしていると、いつの間にか溜まってしまうIAMユーザーやアクセスキー。
不要なIAMユーザー・アクセスキーを放置することはセキュリティ的に危険です。
特にアクセスキー漏洩は不正利用に繋がる恐れがあります。

そこで今回はIAMの認証情報レポートを使用し、不要なIAMユーザー・アクセスキーを棚卸しする方法をご紹介します。

IAMロールやIAMポリシーの棚卸方法を知りたい方はこちらのブログもご参考ください。

AWSアカウントの認証情報レポートとは

AWSアカウントの認証情報レポートは、IAMで管理されているユーザ認証情報の一覧を提供する機能です。 これにより、ユーザーの資格情報やパスワード、アクセスキー、MFA(多要素認証)設定などを確認することができます。

注意点としては、認証情報レポートは、4時間ごとに1回しか生成できません。

やってみた

認証情報レポートの出力・ダウンロード

まずは、認証情報レポートを出力します。

必要なアクセス許可

レポートを作成してダウンロードするには、以下のアクセス許可が必要です。権限が足りない場合は追加ください。

  • 認証情報レポートを作成生成するには: iam:GenerateCredentialReport
  • レポートをダウンロードするには: iam:GetCredentialReport

 レポートの出力とダウンロード

  1. IAM コンソールを開きます。
  2. ナビゲーションペインで、[認証情報レポート] を選択し、[レポートをダウンロード] を選択します。  
  3. CSVファイルがダウンロードされるので、Microsoft Excelやスプレッドシート等の表計算ソフトを使ってファイルを開きます。

レコードの詳細はこちらからご確認ください。

IAMユーザーの棚卸し

不要かどうかを判断する基準として、今回は以下の観点で棚卸しします。

  • 90日間以上ログインされていない
  • 退職・異動、一時的に作成したユーザー等、不要となっているユーザーがいないか目視による確認
  1. IAMユーザーの棚卸し観点で必要な項目は以下です。
    • user:IAMユーザー名
    • password_enabled:パスワード有無、「TRUE」の場合、AWSマネージメントコンソールにログインできるIAMユーザーと判断できます
    • password_last_used:パスワードを使って最後にログインした日時(UTC)
    • mfa_active:複数要素認証(MFA)が有効かどうか
  2. フィルタリング機能やソート機能を使って不要ユーザーを洗い出します。参考までにフィルタ・ソートの例を示します。
    • 90日間以上ログインされていないIAMユーザーを洗い出す場合の例
      1. password_enabledが「TRUE」である行のみ表示
      2. password_last_usedを昇順や降順でソートする
  3. 上記の方法で、90日間以上ログインされていないIAMユーザーや社員の退職等で不要となっていると思われるIAMユーザーをリストアップします。

  4. リストアップしたIAMユーザーについて削除してもよいかどうかを関係者(インフラ担当者、セキュリティ担当者、アプリケーションの管理者等)間で認識合わせします。

  5. 洗い出したIAMユーザーを削除します。IAM コンソールを開き、ナビゲーションペインで、[ユーザー] を選択し、不要なユーザーを選択後、[削除] を選択します。

  6. IAMユーザー名をテキストフィールドに入力し、[削除] を選択します。

  7. IAMユーザーが削除されたことを確認します。削除後に業務影響が出ていないことを確認して下さい。

アクセスキーの棚卸し

IAMユーザー同様、不要かどうかを判断する基準として、今回は以下の観点で棚卸しします。

  • 90日間以上使用されていない
  • 退職・異動、一時的に作成したアクセスキー等、不要となっているアクセスキーがいないか目視による確認
  1. アクセスキーの棚卸し観点で必要な項目は以下です。
    • user:IAMユーザー名
    • access_key_N_active:アクセスキーがアクティブであるかどうか、IAMユーザごとにアクセスキーは2つまで持てるので、access_key_1_activeとaccess_key_2_activeが列として存在
    • access_key_N_last_used_date:アクセスキーを使って最後にログインした日時(UTC)。こちらもaccess_key_1_last_used_dateとaccess_key_2_last_used_dateが列として存在
    • access_key_N_last_used_service:対象のアクセスキーを使って、最後に使用したAWSサービス。こちらもaccess_key_1_last_used_serviceとaccess_key_2_last_used_serviceが列として存在
  2. フィルタリング機能やソート機能を使って不要アクセスキーを洗い出します。参考までにフィルタ・ソートの例を示します。
    • 90日間以上使用されていないアクセスキーを洗い出す場合の例
      1. access_key_1_activeが「TRUE」である行のみ表示
      2. access_key_1_last_used_dateを昇順や降順でソートする
      3. access_key_2_activeが「TRUE」である行のみ表示
      4. access_key_2_last_used_dateを昇順や降順でソートする
  3. 上記の方法で、90日間以上使用されていないアクセスキーや社員の退職等で不要となっていると思われるアクセスキーをリストアップします

  4. リストアップしたアクセスキーについて削除してもよいかどうかを関係者(インフラ担当者、セキュリティ担当者、アプリケーションの管理者等)間で認識合わせします

  5. 洗い出したアクセスキーを無効化・削除します。手順については、下記のブログをご参考ください。

最後に

今回は認証情報レポートでIAMユーザー・アクセスキーを棚卸しする方法をご紹介しました。

冒頭でもお伝えした通り、不要なIAMユーザー・アクセスキーの放置はセキュリティ的に危険です。
色々なプロジェクトや関係者が多くなると、不要なIAMユーザー・アクセスキーが増えがちです。
そのため、定期的な棚卸しをすることでセキュリティを向上させましょう!

最後までお読みいただきありがとうございました!
どなたかのお役に立てれば幸いです。

以上、おつまみ(@AWS11077)でした!

参考

AWS アカウント の認証情報レポートの取得 - AWS Identity and Access Management

[AWS]認証情報レポートを出力してIAMユーザーの棚卸しをする | DevelopersIO

IAMユーザを棚卸して安全なAWSアカウント管理を! | DevelopersIO

AWS IAMリソースの棚卸し方法をまとめてみた | DevelopersIO

[AWS利用者必読] アクセスキー漏洩による不正利用について | DevelopersIO