IAM ポリシー JSON 完全ガイド|権限定義のベストプラクティス
IAM ポリシーは JSON 形式で書かれた権限ルール集。ユーザー / グループ / ロールに紐付け、`Effect` `Action` `Resource` `Condition` の組み合わせで権限を細かく制御する。AWS のアクセス制御の中核で、ポリシー設計力が AW...
JSON で記述する権限定義文書。誰が・何を・どこに対して・どんな条件で実行できるかを定義する。
1. 概要(端的に)
IAM ポリシーは JSON 形式で書かれた権限ルール集。ユーザー / グループ / ロールに紐付け、Effect Action Resource Condition の組み合わせで権限を細かく制御する。AWS のアクセス制御の中核で、ポリシー設計力が AWS 運用の質を決める。
2. 何ができるか
- 権限の定義:許可 / 拒否を記述
- きめ細かな制御:リソース ARN・条件で絞り込み
- 再利用:管理ポリシーとして複数の ID に紐付け
- 継承:グループ → ユーザー、ロール → 引き受けユーザー
6 種類のポリシー
| 種類 | 適用先 | 用途 |
|---|---|---|
| アイデンティティベース | ユーザー/グループ/ロール | 「この人/サービスができること」 |
| リソースベース | S3 バケット・KMS 鍵等 | 「このリソースにアクセスできる人」 |
| パーミッションズバウンダリー | ユーザー/ロール | 上限権限の設定 |
| SCP(Service Control Policy) | Organizations | 組織全体のガードレール |
| アクセスコントロールリスト(ACL) | S3・VPC 等 | レガシー・限定的 |
| セッションポリシー | AssumeRole 時 | 一時的な権限制限 |
3. 特徴
| 観点 | 特徴 |
|---|---|
| 記述形式 | JSON |
| 追加料金 | 無料 |
| 大きさ制限 | 6,144 文字(管理ポリシー) |
| 数の制限 | 1 ユーザーに 10 管理ポリシーまで |
| 評価ロジック | 明示的拒否 > 明示的許可 > 暗黙拒否 |
| 継承 | グループ・ロールから |
ポリシー構造の基本要素
{
"Version": "2012-10-17",
"Statement": [{
"Sid": "AllowS3Read", ← 識別子(任意)
"Effect": "Allow", ← Allow / Deny
"Action": "s3:GetObject", ← 操作
"Resource": "arn:aws:s3:::*", ← 対象
"Condition": { ← 条件(任意)
"IpAddress": {"aws:SourceIp": "10.0.0.0/8"}
}
}]
}
4. 仕組み
ポリシーは アクセスリクエストごとに評価され、結果として「許可 / 拒否」が決定される。
評価フロー
1. すべてのポリシーを集める(IAM ポリシー + リソースポリシー + SCP 等)
2. 明示的な Deny があるか?
YES → 拒否(最終)
3. 明示的な Allow があるか?
YES → 許可(最終)
4. なければ → 暗黙拒否
主な Condition
- aws:SourceIp:送信元 IP
- aws:CurrentTime:時刻
- aws:MultiFactorAuthPresent:MFA 認証済みか
- aws:RequestTag/…:タグベース
- aws:PrincipalOrgID:Organizations 所属
NotAction / NotResource
- NotAction:「これら以外の操作」
- NotResource:「これら以外のリソース」
- 用途:「S3 以外全部許可」のような書き方
ポリシー設計のベストプラクティス
- 最小権限の原則:必要最小限のみ
- AWS 管理ポリシーから始める
*を避ける:明確に列挙- タグベースの権限制御:リソース増加に強い
- アクセスアナライザー で検証
5. ユースケース
ユースケース 1:開発者用ポリシー
S3 / EC2 / Lambda の開発に必要な権限のみ付与。
ユースケース 2:本番アカウント保護
SCP で root を含む全員から特定操作を禁止。
ユースケース 3:S3 バケット公開
バケットポリシーで特定 IP からの公開アクセスを許可。
ユースケース 4:MFA 強制
Condition で MFA 必須化、ポリシー違反時は全操作拒否。
ユースケース 5:タグベースアクセス制御
「Project=A タグのリソースのみアクセス可」のチームスコープ制御。
6. 関連用語
- IAM — ポリシーの基盤
- IAM-Role — ポリシーを紐付ける主要対象
- Access-Analyzer — ポリシー過剰検知
- SCP — 組織レベル制限
- Organizations — マルチアカウント管理
7. 関連サイト
AWS 公式
参考
🎓 試験での出題傾向
| 試験 | 重要度 | 主な出題パターン |
|---|---|---|
| CLF | 中 | ポリシーの概念 |
| SAA | 高 | 最小権限設計、SCP 連携、Condition 活用 |
| DVA | 高 | ポリシー JSON の読み書き(最頻出) |
| SOA | 高 | ポリシー運用・監査 |