🎯 パーミッションバウンダリーとは?
パーミッションバウンダリー = 権限の「上限」を決める柵(フェンス)
IAMポリシーで「これができるよ」と権限を与えても、
パーミッションバウンダリーで「でもここまでね」と
上限を設定
できます。
🔑
ポイント:
両方で許可された権限だけが実際に使える!
🏠 身近な例えで理解しよう!
遊園地の例え
IAMポリシー = 買ったチケット
「ジェットコースターに乗れる」「観覧車に乗れる」
パーミッションバウンダリー = 年齢・身長制限
「身長120cm以上限定」「18歳以上限定」
→ チケットを持っていても、制限をクリアしないと乗れない!
会社のセキュリティカードの例え
IAMポリシー = 部署ごとのアクセス権
「経理部なので経理フロアに入れる」
パーミッションバウンダリー = ビル全体のセキュリティルール
「でも夜間は全フロア立入禁止」
→ 部署の権限があっても、ビル全体のルールを超えられない!
子供の行動範囲の例え
IAMポリシー = 子供がやりたいこと
「公園で遊びたい」「友達の家に行きたい」
パーミッションバウンダリー = 親が決めたルール
「この町内だけね」「暗くなる前に帰ってきてね」
→ やりたいことがあっても、親のルールの範囲内だけ!
クレジットカードの例え
IAMポリシー = カードで買いたいもの
「パソコンを買いたい」「旅行代金を払いたい」
パーミッションバウンダリー = 利用限度額
「月30万円まで」
→ 買いたいものがあっても、限度額を超えたら買えない!
📊 権限の計算方法を図解!
(与えられた権限)
(許可される上限)
(両方の重なり)
🔑 超重要ポイント
パーミッションバウンダリーは 「AND条件」 で評価されます。
つまり、IAMポリシーで許可されていて、 かつ パーミッションバウンダリーでも許可されている場合のみ、その権限が有効になります。
(両方で許可された部分だけ)
🔄 権限チェックの流れ
チェック
チェック
→ 許可!
💡 どんな時に使うの?
開発者への権限委任
開発者に「自分でIAMロールを作成できる」権限を与えたいけど、 管理者権限は絶対に作らせたくない 場合に使用。 バウンダリーで「Admin権限は除外」と設定しておけば安心!
マルチアカウント環境
複数のAWSアカウントを持つ組織で、各アカウントの管理者が 自由にIAMを作れるけど、組織のルールは守らせたい 場合。 バウンダリーで「特定リソースへのアクセスは禁止」と制限!
セキュリティガードレール
「本番環境のデータベースは絶対に削除できない」など、 取り返しのつかない操作を防ぐ 安全装置として利用。 どんな権限を持っていても、バウンダリーで守られる!
📝 具体的なシナリオで理解しよう
シナリオ:開発者の太郎さん
📋 IAMポリシー(与えられた権限)
- ✅ S3のすべての操作
- ✅ EC2のすべての操作
- ✅ RDSのすべての操作
- ✅ IAMロールの作成
🚧 パーミッションバウンダリー(上限)
- ✅ S3のすべての操作
- ✅ EC2のすべての操作
- ❌ RDSは読み取りのみ
- ❌ IAMロール作成は禁止
✅ 太郎さんが実際にできること
- ✅ S3のすべての操作 → OK (両方で許可)
- ✅ EC2のすべての操作 → OK (両方で許可)
- ⚠️ RDSは読み取りのみ → 制限あり (バウンダリーで制限)
- ❌ IAMロール作成 → 不可 (バウンダリーで禁止)
📊 IAMポリシーとバウンダリーの違い
| 項目 | 📋 IAMポリシー | 🚧 パーミッションバウンダリー |
|---|---|---|
| 役割 | 権限を「与える」 | 権限の「上限」を設定 |
| たとえ | お小遣い(使える金額) | 貯金箱の蓋(取り出せる上限) |
| 設定対象 | ユーザー、グループ、ロール | ユーザー、ロールのみ |
| 必須? | はい(権限がないと何もできない) | いいえ(オプション) |
| 単独で権限付与 | できる | できない(制限のみ) |
| 主な用途 | 日常的な権限管理 | 委任・ガードレール |
💻 実際のポリシー例
⭐ ベストプラクティス
🎯 最小権限の原則を維持
バウンダリーがあるからといって、IAMポリシーを緩くしない。 両方で最小権限を心がけることで、二重の安全を確保!
📋 命名規則を統一
バウンダリーポリシーは「〇〇-Boundary」など、 一目で分かる命名規則を使用。管理が楽になる!
🔄 継承を活用
ロールを作成する際に、バウンダリーも一緒に設定するルールを作る。 CloudFormationやTerraformでテンプレート化がおすすめ!
📊 定期的な監査
バウンダリーが設定されていないユーザー/ロールがないか、 AWS ConfigやIAM Access Analyzerで定期チェック!
⚠️ よくある落とし穴・注意点
-
バウンダリー単独では権限を与えられない
バウンダリーは「上限」を設定するだけ。IAMポリシーも必要! -
グループには設定できない
バウンダリーはユーザーとロールにのみ設定可能。グループはNG! -
バウンダリーを外すには権限が必要
バウンダリー自体の変更・削除権限を適切に管理しないと、設定した意味がなくなる! -
リソースベースポリシーには影響しない
S3バケットポリシーなど、リソース側のポリシーはバウンダリーの影響を受けない!
❓ よくある質問
💭 SCPとバウンダリーの違いは?
+
SCP(サービスコントロールポリシー)
はOrganizations全体に適用される組織レベルの制限。
バウンダリー
は個別のユーザー/ロールに設定する個人レベルの制限。
例えると、SCPは「会社全体のルール」、バウンダリーは「個人の行動制限」です。
両方使えば、組織と個人の両方でガードレールを設定できます!
💭 バウンダリーを設定しないとどうなる?
+
バウンダリーを設定しなくても、普通にIAMは動作します。
その場合、IAMポリシーで許可された権限がそのまま有効になります。
ただし、「委任」シナリオ(開発者が自分でIAMを作れる場合など)では、
バウンダリーがないと権限昇格のリスクがあるので注意!
💭 複数のバウンダリーを設定できる?
+
いいえ、1つのユーザー/ロールには
1つのバウンダリー
しか設定できません。
複数の制限が必要な場合は、1つのバウンダリーポリシー内に
すべての条件をまとめて記述する必要があります。
💭 バウンダリーでAllow/Denyどちらを使うべき?
+
基本は
「許可するものをAllowで列挙」
するスタイルがおすすめ。
これにより、明示的に許可していないサービスは自動的に使えなくなります。
ただし、特定の危険な操作だけを確実にブロックしたい場合は、
Denyを追加で使用するのも有効です。