AWSで作業をしている際、「自分にどんなIAMポリシーがアタッチされているか確認したい」「MFAやアクセスキーの設定状況をセルフチェックしたい」と思うことはよくあります。

しかし、セキュリティが厳格に管理されている環境では、デフォルトで iam:List*iam:Get* といった参照権限が一般ユーザーに開放されていないケースがほとんどです。

「確認したいだけなので、一時的に ReadOnlyAccess をください」と管理者に申請しても、他人の情報まで見えてしまう汎用的な参照権限は、セキュリティポリシー上却下されがちです。

そこで今回は、「自分自身の情報(ポリシー、アクセスキー、MFA等)の参照」だけに限定し、管理者側も安心して一発で承認できる最小特権のIAMポリシーをご紹介します。

スポンサーリンク

1. 解決したい課題

  • AWSコンソールやCLIから、自分自身のIAMユーザー情報を確認したい(GetUser
  • 自分にアタッチされている管理ポリシーやインラインポリシーの一覧を確認したい(ListAttachedUserPolicies, ListUserPolicies
  • 自分のアクセスキーやMFA(多要素認証)デバイスの登録状況を確認したい(ListAccessKeys, ListMFADevices
  • 【重要】セキュリティの観点から、他人の情報には一切アクセスさせず、自分自身の情報のみに限定したい

2. 解決するためのIAMポリシー(JSON)

以下のポリシーを対象のIAMユーザー(またはグループ)にアタッチ、あるいは管理者へ提示して作成を依頼します。

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "AllowSelfServiceView",
      "Effect": "Allow",
      "Action": [
        "iam:ListAttachedUserPolicies",
        "iam:ListUserPolicies",
        "iam:GetUser",
        "iam:ListAccessKeys",
        "iam:ListMFADevices"
      ],
      "Resource": "arn:aws:iam::600000000000:user/${aws:username}"
    }
  ]
}

(※ 600000000000 部分は、対象となるAWSアカウントIDに書き換えてください。アカウントID部分もワイルドカード * にすることは可能ですが、明示的に指定した方がより堅牢です)

スポンサーリンク

3. このポリシーの優れたポイント

${aws:username} ポリシー変数による動的なターゲット制限

最大のポイントは、Resource セクションで指定している ${aws:username} というポリシー変数です。

AWSはリクエストを評価する際、この変数を「現在リクエストを実行しているIAMユーザーのフレンドリー名(ユーザー名)」に動的に置き換えます。これによって、「ログインしている本人自身のIAMリソース」に対してのみアクションが許可されます。

他人のユーザー情報を覗き見ようとしても、このリソース制限によって確実に拒否(Implicit Deny)されるため、管理者は安心してこの権限をメンバーに付与できます。

② 各アクション(Action)の役割

アクションコンソールやCLIで確認できるようになること
iam:GetUser自身のIAMユーザー名、作成日、ARN(リソースの識別子)などの基本メタ情報
iam:ListAttachedUserPolicies自身に直接アタッチされている「AWS管理ポリシー」および「カスタマー管理ポリシー」の一覧
iam:ListUserPolicies自身に直接埋め込まれている「インラインポリシー」の一覧
iam:ListAccessKeys自身が発行しているアクセスキーのステータス(Active/Inactive)や作成日(※秘密鍵自体の参照は不可)
iam:ListMFADevices自身のアカウントにMFA(多要素認証)デバイスが正しく紐づけられているかどうかの状況

4. 運用上の注意点と制限事項

グループ経由で付与されたポリシーは一覧に表示されない

このポリシーは、あくまで「対象ユーザーに直接(インラインまたは直接アタッチで)紐づいているポリシー」を取得するためのものです。

もし、あなたが DevelopersAdministrators といった IAMグループに所属しており、そのグループ経由で権限が付与されている場合、上記のアクションを実行してもグループ側のポリシー構成は表示されません。

「権限はあるはずなのに ListAttachedUserPolicies で何も表示されない」という場合は、グループ経由の付与を疑い、必要に応じて所属グループのポリシー構成を管理者に問い合わせてください。

5. まとめ

開発者がセルフサービスで自身の権限やセキュリティ設定(MFA等)をチェックできることは、トラブルシューティングの迅速化やセキュリティ意識の向上に直結します。

他者のリソースを侵害しない ${aws:username} を活用したポリシー設計は、AWSセキュリティのベストプラクティス(最小特権の原則)を体現した非常にスマートなアプローチです。

「自分の権限が見えなくて不便だな」と感じたら、ぜひこのJSONを添えて管理者に申請してみてください。


この記事が気に入ったら『目黒で働く分析担当の作業メモ』ご支援をお願いします!

※OFUSEに飛びます


おすすめの記事