[IAMスペシャル!]Security-JAWS 第39回に登壇しました『CDKにおけるPermissions Boundaryの適用と運用時の課題』
こんにちは、エヌデーデーの池ノ上です。
11/8(土)に開催された [IAMスペシャル!]Security-JAWS 第39回 に登壇させていただきましたので、セッション資料を公開いたします。
Contents
セッション資料
セッション動画
要約
NotebookLMによる要約です。
1. キーワードと背景
主要なキーワード
- CDK: プログラミング言語でAWSリソースを定義し、CloudFormationを通じてプロビジョニングするオープンソースのフレームワーク
- Permissions Boundary (PB): 「権限の境界」を意味し、これ自体は権限を付与しないが、Identity-based policyと組み合わせて利用することで、権限の最大範囲を設定できる
- 境界を設ける方法:
- SCP (Service Control Policy): AWSアカウントに適用
- Permissions Boundary: IAMユーザーやロールに適用
PBの利用背景
目的: 「開発スピード」と「セキュリティ担保」の両立
従来のゲートキーパー方式の問題点
- 事前承認、一元管理が必要
- 開発スピードを阻害
- ボトルネックになりやすい
ガードレール方式のメリット
- はみ出してはいけない境界を定める
- 境界内で自由に動ける
- 自律性を保ちながら安全性を確保
実現したかった構成
- 管理者がアプリに必要な制限を設定
- 開発者がアプリに必要なロールを自身で作成可能
- 権限昇格ができない
2. CDKに関連するロールとPBの適用方法
CDKに関連する3種類のロール
1. CDKが使うロール
- 初期セットアップ(Bootstrap)で作成される5種類のロール
- 例: CloudFormation Executionロール
適用方法:
cdk bootstrap実行時にオプション(--custom-permissions-boundary)で指定- Bootstrapテンプレートをカスタマイズ
2. CDK利用者が作るロール
- Lambdaなどに付与するロール
適用方法:
- 個々のIAMエンティティに直接適用
cdk.jsonやAppコンストラクターのコンテキストでグローバルにCDKアプリ全体へ適用3. CDKが暗黙的に作るロール
- CloudFormationカスタムリソース用のロールなど
適用方法:
- Aspectsを利用: 明示的に作成されたロールと暗黙的に作成されたロールの区別なく、一律でPBを適用可能
運用時の課題と例外
CrossRegionReferenceの問題:
- リージョンを跨いでスタック間の値を参照する機能によって暗黙的に作られるカスタムリソース用ロールには、Aspectsを使ってもPBを適用できない
- GitHubのIssueで未解決
- 回避策: Permissions Boundary未設定ロールに対してPBを設定するベーススタッククラスの利用
適用方法のシンプルさ比較
方法 シンプル度 CDK利用者が作るロール CDKが暗黙的に作るロール CrossRegion Reference cdk.json 高 ⚪︎ ✕ ✕ Aspects 中 ⚪︎ ⚪︎ ✕ 回避策 低 ⚪︎ ⚪︎ ⚪︎ 3. Permissions Boundary適用パターンの課題と解決策
ブラックリスト方式(当初の試み)
アプローチ:
- 最大限(AdminやPowerUser+IAM Full)を許可
- 必要最小限の拒否事項をリストアップ
- PBなしロールの作成禁止
- PB自体の削除禁止など
重大な問題点:
iam:PassRoleアクションは、条件キーでPermissions Boundaryを指定することができない- PassRoleは、AWSサービスにロールを渡すために必要な権限
- 適切に制限できないとセキュリティ担保が困難
PassRoleの制限策
ロールのパスを利用する方法:
- ロール作成時にパスを設定
- 特定のパス(例:
/app/*)を持つロールのみPassRoleを許可- メリット: 新規アプリには有効
- デメリット: 既存アプリにはロールの再作成と差し替えが必要
ハイブリッド方式(改善策)
アプローチ:
- IAM以外を許可
- IAMについては個別にホワイトリストで許可
- その他制限したい操作をブラックリストで拒否
4. まとめ
得られた知見
- CDKでPBを適用し始めたところ、多くの壁にぶつかった
- PBの運用は容易ではない
- 未だに最善策はわかっていない
- IAMは奥が深い
代替アプローチ
- AWSアカウントという境界を利用: SCPでアカウント外から制限を加える構成がシンプルでバランスが取れている
- 重要: 場面に応じて、SCPやPBといった境界防御の方式を使い分けることが重要
感想
半日かけて総勢13名が様々な角度からIAMをテーマに発表を行うとても興味深いイベントでした。IAMはAWSを利用するうえで必ず付いて回る重要な要素で、多くの学びがある会でした。運営のみなさま、ありがとうございました。
私も自身の発表の準備を通して、これまでいろいろと苦闘してきたPermissions Boundaryについて、まだまだ最善策はわからないものの、いったん現時点の理解を整理できたような気がしており、良い機会になりました。
関連記事

AWS CDK Conference Japan 2025 に登壇しました『CDKで挑むIdentity Centerの運用改善』
こんにちは、エヌデーデーの池ノ上です。 7/12(土) に開催された AWS C ...

サービス アカウント キーを作らずに Google ドライブ にアクセスする
エヌデーデー関口です。 Google Cloud のサービスから Google ...

JAWS DAYS 2025 に登壇しました『生成AI×財務経理:PoCで挑むSlack AI Bot開発と現場巻き込みのリアル』
こんにちは、エヌデーデーの池ノ上です。 3/1(土)に池袋で開催された JAWS ...

初めての AWS re:Invent (2024)
こんにちは、エヌデーデーの池ノ上です。普段はAWSを主に利用し、CCoEの推進業 ...

生成AIは情報処理技術者試験に合格できるのか?
3月になり、まだ寒い日も多いですが、日差しが少しずつ暖かくなってきた気がします。 ...











