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. 運用上の注意点と制限事項
グループ経由で付与されたポリシーは一覧に表示されない
このポリシーは、あくまで「対象ユーザーに直接(インラインまたは直接アタッチで)紐づいているポリシー」を取得するためのものです。
もし、あなたが Developers や Administrators といった IAMグループに所属しており、そのグループ経由で権限が付与されている場合、上記のアクションを実行してもグループ側のポリシー構成は表示されません。
「権限はあるはずなのに ListAttachedUserPolicies で何も表示されない」という場合は、グループ経由の付与を疑い、必要に応じて所属グループのポリシー構成を管理者に問い合わせてください。
5. まとめ
開発者がセルフサービスで自身の権限やセキュリティ設定(MFA等)をチェックできることは、トラブルシューティングの迅速化やセキュリティ意識の向上に直結します。
他者のリソースを侵害しない ${aws:username} を活用したポリシー設計は、AWSセキュリティのベストプラクティス(最小特権の原則)を体現した非常にスマートなアプローチです。
「自分の権限が見えなくて不便だな」と感じたら、ぜひこのJSONを添えて管理者に申請してみてください。


