5
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【AWS】使ってない(はずの)IAMユーザを慎重に削除する

Last updated at Posted at 2025-12-11

この記事はトラストバンクAdventCalendar 12日目になります

トラストバンク SREグループの @kgkukoaoisi です

IAMユーザの一覧を見たとき、「ぱっと見、使ってなさそう」なユーザっていますよね。
でも、「えいや」で削除して、実は重要なバッチ処理が動いていてサービス影響が…なんて事故は絶対に起こしたくありません。

使っていないことを確認しつつ、慎重にIAMユーザを削除した方法をご紹介します!

なんでIAMユーザーを消すの?

結論から言うと、セキュリティリスクを抱え続けないためです。

例えば、
GitHub ActionsやJenkinsなどのCI/CDツールからAWSリソースを操作するために、
IAMユーザーを使っているケースがあります。

また、dev/stg/prdのAWSアカウントごとに別々のIAMユーザでコンソールにログインするという経験もしてます
(インフラ担当だったので割と強めの権限をもらっていました。。。弊社はIdentity Center使っているのでご安心ください)

万が一そのアクセスキーが流出したらどうなるでしょう。

  • データの削除・持ち出し
  • 環境の破壊
  • 不正な高額インスタンスの大量起動(クリプトジャッキング) などなど

こういったリスクを避けるため、以下のような使い分けが推奨されています。

  1. 人間が使う場合: IAMユーザーではなく、AWS IAM Identity Center を使う。
  2. システムが使う場合: 永続的なアクセスキーではなく、IAMロール を使う。

つまり、「IAMユーザー(永続的な鍵)」を減らすこと自体がセキュリティ対策になります。

利用状況を確認するステップ

「じゃあ消そう!」といって削除ボタンを即クリックするのは現実的には難しいです。
まずは、以下の3箇所で利用状況を確認しました。

1. IAMコンソール

まずはAWSマネジメントコンソールのIAMユーザーにて対象ユーザの利用状況を確認します。

  • 最近使われている: → 即座に削除NG。利用者や用途の特定へ。
  • 「なし」または数年前: → 削除候補。

コンソールへのアクセスがあるか
スクリーンショット 2025-12-08 15.25.11.png

アクセスキーの利用があるか (セキュリティ認証情報のタブで見れます)
スクリーンショット 2025-12-08 15.25.04.png

💡 Tips: IAM Access Analyzer
IAM Access Analyzer の「未使用のアクセスの分析」機能を使うと、長期間使用されていないIAMユーザーやロールをリストアップしてくれるので便利です。
https://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/what-is-access-analyzer.html

お金がかかるのでご注意ください!
https://aws.amazon.com/jp/iam/access-analyzer/pricing/

2. CloudTrail

Cloudtrailで対象IAMユーザが何か操作をしていないか確認します
IAMユーザ名を元に検索します

スクリーンショット 2025-12-08 15.15.05.png

S3のオブジェクト操作(GetObject など)

標準のCloudTrailログには記録されず、有料の データイベント が有効でないと見えません。
有効にして一定期間データを取得した後、Amazon Athena を使ってクエリをかけ、該当ユーザ(アクセスキーID)のアクセス履歴を検索する必要があります。

3. コードベースとCI/CD設定を確認

今回削除したユーザはCI/CDで使われているものだったので、
ソースコードやGitHub Actions、Jenkinsを一通り確認しました

ユーザ名やIAMユーザが行っている操作を元に、探す場所にあたりをつけると良いと思います

IAMユーザの移行と削除

1. IAMロールなどへの移行

もし使われているユーザが見つかったら、削除の前にIAMロールなどへ移行します。

  • GitHub Actions / GitLab CI など
    • アクセスキーをSecretsに埋めるのをやめ、OIDC (OpenID Connect) プロバイダーを設定してIAMロールを引き受ける(AssumeRole)形に書き換え
  • EC2上のアプリケーション
    • 設定ファイルにキーを書くのをやめ、EC2インスタンスにIAMロール(インスタンスプロファイル)をアタッチ
  • ローカル開発環境やコンソールへのアクセス
    • ~/.aws/credentials にキーを置くのをやめ、AWS IAM Identity Center 経由でのログインに切り替え

2. 削除の前に無効化

念のため、削除の前に 無効化 してみます。

  • コンソールへのログインを無効化
  • アクセスキーを「非アクティブ」にする

スクリーンショット 2025-12-08 15.25.22.png

スクリーンショット 2025-12-08 15.25.28.png

アクセスキーのステータスが Inactive に変わります
スクリーンショット 2025-12-08 15.27.44.png

このアクセスキーを使うと下記のようにエラーが返ってくるようになります

% aws s3 ls

An error occurred (InvalidAccessKeyId) when calling the ListBuckets operation: The AWS Access Key Id you provided does not exist in our records.

この状態で1〜2週間ほど放置します。
もし誰かが使っていれば、「繋がらないんですけど!」と連絡が来るはずです。
無効化ならすぐに戻せるのでこれで様子見しましょう。

3. 削除

無効化して一定期間(2週間〜1ヶ月程度)誰からも連絡がなければ、削除します。

最後に

IAMユーザーの棚卸しは地味で神経を使う作業ですが、セキュリティインシデントを防ぐためには避けて通れません。

「不要なものは消す」が鉄則ですが、サービス影響がないよう慎重に行う必要があります。
今回はIAMユーザですが、他のリソースも使ってないかしっかり確認して安全に削除をしていきます!

トラストバンクでは、一緒に働く仲間を絶賛募集しています。

AdventCalendar を見て、少しでも気になった方は、是非ご連絡ください。

5
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?