認証情報レポートで不要なIAMユーザー・アクセスキーを棚卸ししてみた
こんにちは!AWS事業本部のおつまみです。
みなさん、IAMユーザー・アクセスキーを棚卸ししたいと思ったことはありますか?私はあります。
検証をしていると、いつの間にか溜まってしまうIAMユーザーやアクセスキー。
不要なIAMユーザー・アクセスキーを放置することはセキュリティ的に危険です。
特にアクセスキー漏洩は不正利用に繋がる恐れがあります。
そこで今回はIAMの認証情報レポートを使用し、不要なIAMユーザー・アクセスキーを棚卸しする方法をご紹介します。
IAMロールやIAMポリシーの棚卸方法を知りたい方はこちらのブログもご参考ください。
AWSアカウントの認証情報レポートとは
AWSアカウントの認証情報レポートは、IAMで管理されているユーザ認証情報の一覧を提供する機能です。 これにより、ユーザーの資格情報やパスワード、アクセスキー、MFA(多要素認証)設定などを確認することができます。
注意点としては、認証情報レポートは、4時間ごとに1回しか生成できません。
やってみた
認証情報レポートの出力・ダウンロード
まずは、認証情報レポートを出力します。
必要なアクセス許可
レポートを作成してダウンロードするには、以下のアクセス許可が必要です。権限が足りない場合は追加ください。
- 認証情報レポートを作成生成するには:
iam:GenerateCredentialReport
- レポートをダウンロードするには:
iam:GetCredentialReport
レポートの出力とダウンロード
- IAM コンソールを開きます。
- ナビゲーションペインで、[認証情報レポート] を選択し、[レポートをダウンロード] を選択します。
- CSVファイルがダウンロードされるので、Microsoft Excelやスプレッドシート等の表計算ソフトを使ってファイルを開きます。
レコードの詳細はこちらからご確認ください。
IAMユーザーの棚卸し
不要かどうかを判断する基準として、今回は以下の観点で棚卸しします。
- 90日間以上ログインされていない
- 退職・異動、一時的に作成したユーザー等、不要となっているユーザーがいないか目視による確認
- IAMユーザーの棚卸し観点で必要な項目は以下です。
- user:IAMユーザー名
- password_enabled:パスワード有無、「TRUE」の場合、AWSマネージメントコンソールにログインできるIAMユーザーと判断できます
- password_last_used:パスワードを使って最後にログインした日時(UTC)
- mfa_active:複数要素認証(MFA)が有効かどうか
- フィルタリング機能やソート機能を使って不要ユーザーを洗い出します。参考までにフィルタ・ソートの例を示します。
- 90日間以上ログインされていないIAMユーザーを洗い出す場合の例
- password_enabledが「TRUE」である行のみ表示
- password_last_usedを昇順や降順でソートする
- 90日間以上ログインされていないIAMユーザーを洗い出す場合の例
- 上記の方法で、90日間以上ログインされていないIAMユーザーや社員の退職等で不要となっていると思われるIAMユーザーをリストアップします。
-
リストアップしたIAMユーザーについて削除してもよいかどうかを関係者(インフラ担当者、セキュリティ担当者、アプリケーションの管理者等)間で認識合わせします。
-
洗い出したIAMユーザーを削除します。IAM コンソールを開き、ナビゲーションペインで、[ユーザー] を選択し、不要なユーザーを選択後、[削除] を選択します。
-
IAMユーザー名をテキストフィールドに入力し、[削除] を選択します。
-
IAMユーザーが削除されたことを確認します。削除後に業務影響が出ていないことを確認して下さい。
アクセスキーの棚卸し
IAMユーザー同様、不要かどうかを判断する基準として、今回は以下の観点で棚卸しします。
- 90日間以上使用されていない
- 退職・異動、一時的に作成したアクセスキー等、不要となっているアクセスキーがいないか目視による確認
- アクセスキーの棚卸し観点で必要な項目は以下です。
- 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が列として存在
- フィルタリング機能やソート機能を使って不要アクセスキーを洗い出します。参考までにフィルタ・ソートの例を示します。
- 90日間以上使用されていないアクセスキーを洗い出す場合の例
- access_key_1_activeが「TRUE」である行のみ表示
- access_key_1_last_used_dateを昇順や降順でソートする
- access_key_2_activeが「TRUE」である行のみ表示
- access_key_2_last_used_dateを昇順や降順でソートする
- 90日間以上使用されていないアクセスキーを洗い出す場合の例
- 上記の方法で、90日間以上使用されていないアクセスキーや社員の退職等で不要となっていると思われるアクセスキーをリストアップします
-
リストアップしたアクセスキーについて削除してもよいかどうかを関係者(インフラ担当者、セキュリティ担当者、アプリケーションの管理者等)間で認識合わせします
-
洗い出したアクセスキーを無効化・削除します。手順については、下記のブログをご参考ください。
最後に
今回は認証情報レポートでIAMユーザー・アクセスキーを棚卸しする方法をご紹介しました。
冒頭でもお伝えした通り、不要なIAMユーザー・アクセスキーの放置はセキュリティ的に危険です。
色々なプロジェクトや関係者が多くなると、不要なIAMユーザー・アクセスキーが増えがちです。
そのため、定期的な棚卸しをすることでセキュリティを向上させましょう!
最後までお読みいただきありがとうございました!
どなたかのお役に立てれば幸いです。
以上、おつまみ(@AWS11077)でした!
参考
AWS アカウント の認証情報レポートの取得 - AWS Identity and Access Management
[AWS]認証情報レポートを出力してIAMユーザーの棚卸しをする | DevelopersIO
IAMユーザを棚卸して安全なAWSアカウント管理を! | DevelopersIO