Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
型も通る、synthも通る、それでも危ない 〜AIのCDKの権限とコストを機械で検証する〜 /...
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
shiro seike
PRO
July 18, 2026
Programming
670
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
型も通る、synthも通る、それでも危ない 〜AIのCDKの権限とコストを機械で検証する〜 / It Passes Type Checks, It Passes Synth Checks, but It’s Still Risky — Automatically Verifying Permissions and Costs in AI’s CDK —
AWS CDK Conference Japan 2026
https://jawsug-cdk.connpass.com/event/393595/
shiro seike
PRO
July 18, 2026
More Decks by shiro seike
See All by shiro seike
Everything will be SERVERLESS — 信じて運用した10年の経験値 / Everything Will be Serverless — Lessons Learned from 10 Years of Operational Experience
seike460
PRO
1
720
Seeing Through Serverless: Observability for AWS Lambda with ADOT and CloudWatch Application Signals
seike460
PRO
1
160
Seeing Through Serverless: ADOT と CloudWatch Application Signals で実現する AWS Lambda のオブザーバビリティ(日本語版)/ Seeing Through Serverless (Japanese Edition)
seike460
PRO
1
36
モノレポの型は、そのままつながる 〜Hono RPCで型を素通しする開発体験〜 / Monorepo Types Connect As-Is: Passing Types Through with Hono RPC
seike460
PRO
1
45
OSSのコンセプトを知る / Understanding the Concept Behind an OSS
seike460
PRO
1
40
コミュニティの有益性 ~JAWS Days 2026 での体験を通して~ / The Benefits of a Community ~Through My Experience at JAWS Days 2026~
seike460
PRO
0
490
実行委員長目線で振り返る JAWS DAYS 2026 / JAWS DAYS 2026 from the Chair's Perspective
seike460
PRO
1
38
SLO から始める SRE / Starting SRE with SLO
seike460
PRO
1
120
Architecture as SteeringOn-Ramp to AI-DLC
seike460
PRO
0
75
Other Decks in Programming
See All in Programming
[2026-09-26]空論ジェネリックプロセス~テスト資産とAIで紡ぐ、再現可能なパフォーマンスチューニングの話~
tosite
0
250
残高管理から台帳サービスへの進化
artoy
0
140
JAWS-UG 東京支部が始める、JAWS-UG支部コラボ / JAWS-UG lunchtime LT Collaboration
y0hgi
0
180
動作中のプログラムの中身をリアルタイムに覗く / Realtime Debugger for CSharp with Roslyn
prota
1
1.8k
ソニーのクラウド共通基盤の変遷とAI時代の開発スタイルに合わせた進化 / The Journey of Sony’s Common Cloud Platform and Its Evolution for AI-Native Development
kenjiyoneyama
0
230
モバイル交通系ICへのチャージ実例から考える、クロスプラットフォーム開発におけるiOS実機テスト設計とCI運用
yusuga
1
580
半永久的に提供し続けられるプライベートクラウドを目指して ― 利用者の認知負荷を抑えるAPI抽象化とハードウェア世代交代の基盤設計
tomokon
0
430
マイコン向けの軽量Ruby「PicoRuby」で各種デバイスを制御するネイティブアプリの実現手法
bash0c7
0
470
Streamlitで実現する自然言語データアプリ開発
ayumu_yamaguchi
1
340
カツオ、ご期待ください
suneo3476
0
140
Augmenting AI with the Power of Jakarta EE
ivargrimstad
0
430
AWS CDKのカスタムリソースでContinuum(旧Security Agent)を実装した話 | Implementing Continuum (formerly Security Agent) via AWS CDK Custom Resource
akihisaikeda
2
130
Featured
See All Featured
Making the Leap to Tech Lead
cromwellryan
135
10k
Highjacked: Video Game Concept Design
rkendrick25
PRO
1
470
How People are Using Generative and Agentic AI to Supercharge Their Products, Projects, Services and Value Streams Today
helenjbeal
1
350
Neural Spatial Audio Processing for Sound Field Analysis and Control
skoyamalab
0
540
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
2.1k
brightonSEO & MeasureFest 2025 - Winning Strategies for Black Friday CRO & PPC - Christian Goodrich
cargoodrich
3
860
Stop Working from a Prison Cell
hatefulcrawdad
274
21k
Designing Experiences People Love
moore
143
24k
Being A Developer After 40
akosma
91
590k
Prompt Engineering for Job Search
mfonobong
0
480
Scaling GitHub
holman
464
140k
Agile that works and the tools we love
rasmusluckow
331
22k
Transcript
型も通る、synthも通る、 それでも危ない 〜AIのCDKの権限とコストを機械で検証する〜 AWS CDK Conference Japan 2026 2026/07/18(土) Fusic
Co.,Ltd. 清家 史郎 (@seike460) OSEKKAI × TECHNO LOGY
清家 史郎 (@seike460) SHIRO SEIKE 技術コミュニティ室長 / シニアエバンジェリスト ・AWS Ambassador
・2025-2026 Japan AWS Top Engineers ・AWS Community Builder Serverless — コミュニティ ・JAWS-UG 福岡 運営 / JAWS DAYS 2026 実行委員長 — 最近の登壇 ・AWS Community Day Hong Kong 2025 ・AWS Summit Hong Kong 2026 ・AWS Summit Japan 2026 ・AWS Community Day Singapore 2026 自己紹介 OSEKKAI × TECHNOLOGY ©Fusic Co., Ltd. 2
値の参照 利⽤者 / CI API Gateway JWT (IdP 連携) Lambda
(api) DynamoDB メタデータ Parameter Store 値の実体 KMS 暗号化 危険① 広すぎる権限 Lambda ・SSM ・KMS の 権限が広がりやすい 監査の複線 DynamoDB Streams EventBridge Pipes Data Firehose S3 (WORM 監査ログ) 危険② 公開設定 外部への同期 EventBridge SQS Lambda (worker) 他のAWS アカウント / GitHub NAT Gateway 危険③ 増えるコスト 破線 = 実機に無い。追加されがち ©Fusic Co., Ltd. 3 あるCDK Stackの構成と、3つの確認箇所
lib/hello-stack.ts const key = new kms.Key(this, "HelloKey", { enableKeyRotation: true,
// ローテーション有効 removalPolicy: RemovalPolicy.RETAIN, }); const logGroup = new logs.LogGroup(this, "HelloLogGroup", { retention: logs.RetentionDays.ONE_YEAR, encryptionKey: key, // CMK で保管時暗号化 }); // 実プロダクトのCDK をAI で実装。型チェックとsynth は通る ©Fusic Co., Ltd. 4 AIは動くCDKを速く書ける
new iam.Role(this, "AgentRole", { assumedBy: new ServicePrincipal("lambda.amazonaws.com"), inlinePolicies: { wildcard:
new iam.PolicyDocument({ statements: [new iam.PolicyStatement({ actions: ["iam:*"], // 全IAM 操作 resources: ["*"], // 全リソース })], }), }, }); // このコードも型チェックとsynth を通る ©Fusic Co., Ltd. 5 AIは危険なCDKも同じように生成する
4,118行 実プロダクトをsynthした実測値 ©Fusic Co., Ltd. 6 4,118行のCloudFormationを、人だけでは確認しきれない
権限・公開設定・コストをCIで検証する 生成されたCloudFormationをCIで自動検査する
1 cdk-nag × Control Tower proactive rules synth時に検出する ©Fusic Co.,
Ltd. 8
synthで生成した CloudFormation cdk-nag (cdklabs OSS) ⛔ 違反時はsynth失敗 値の参照 利⽤者 /
CI API Gateway JWT (IdP 連携) Lambda (api) DynamoDB メタデータ Parameter Store 値の実体 KMS 暗号化 危険① 広すぎる権限 Lambda ・SSM ・KMS の 権限が広がりやすい 監査の複線 DynamoDB Streams EventBridge Pipes Data Firehose S3 (WORM 監査ログ) 危険② 公開設定 外部への同期 EventBridge SQS Lambda (worker) 他のAWS アカウント / GitHub NAT Gateway 危険③ 増えるコスト 破線 = 実機に無い。追加されがち synth が吐くテンプレート全体を⾛査 ① 権限 ② 公開設定 ©Fusic Co., Ltd. 9 cdk-nagでsynth結果を検査する
bin/app.ts // bin/app.ts — CDK app のエントリポイント const plugins: IPolicyValidationPlugin[]
= [ new AwsSolutionsChecks(app, { verbose: true }), ...(cfnGuardValidator ? [cfnGuardValidator] : []), ]; Validations.of(app).addPlugins(...plugins); // 違反時はexit 1 。資格情報不要でfork PR でも実行できる ©Fusic Co., Ltd. 10 違反があればsynthを失敗させる
$ cdk synth -c stage=preview -c DEMO_VIOLATION=l1 ERROR The IAM
entity contains wildcard permissions and does not have a cdk-nag rule suppression ... app-preview-hello/DemoL1WildcardRole/Resource Acknowledge with 'AwsSolutions-IAM5[Action::iam:*]' ERROR [CT.IAM.PR.5] inline policies do not have wildcard service actions (cdk-validator-cfnguard) Synthesis finished with errors exit 1 — 両方の検査で違反を検出 ©Fusic Co., Ltd. 11 iam:*をsynth時に検出する
policy/suppressions.ts // suppress はこの関数だけから設定する suppress(bucket, [{ id: "AwsSolutions-S1", reason: "
デモ用の使い捨て。ログは主題ではない", expiry: "2026-12-31", // 期限切れは再レビュー }]); // 理由または期限がなければthrow する ©Fusic Co., Ltd. 12 suppressには理由と期限を必須にする
2 policy-as-code × IAM Access Analyzer デプロイ前に検証する ©Fusic Co., Ltd.
13
📜 policy-as-code (YAML / rego) IAM Access Analyzer ⛔ 違反時はfail
値の参照 利⽤者 / CI API Gateway JWT (IdP 連携) Lambda (api) DynamoDB メタデータ Parameter Store 値の実体 KMS 暗号化 危険① 広すぎる権限 Lambda ・SSM ・KMS の 権限が広がりやすい 監査の複線 DynamoDB Streams EventBridge Pipes Data Firehose S3 (WORM 監査ログ) 危険② 公開設定 外部への同期 EventBridge SQS Lambda (worker) 他のAWS アカウント / GitHub NAT Gateway 危険③ 増えるコスト 破線 = 実機に無い。追加されがち ポリシーの意味をデプロイ前に判定 ① 権限の意味 ② 公開の意味 ©Fusic Co., Ltd. 14 組織ルールをコード化し、Access Analyzerで検証する
policy-as-code (YAML) entries: - id: kms-decrypt-except-api-worker actions: [kms:Decrypt] exceptRoles: [api,
worker] # これ以外は失敗 reason: >- 値を復号できるのはapi/worker のみ。 それ以外への漏れをfail-closed で検査 # Access Analyzer が宣言どおりかを検査する ©Fusic Co., Ltd. 15 組織の権限ルールをYAMLで定義する
$ cdk synth -c stage=preview -c DEMO_VIOLATION=l2 ERROR The S3
Bucket does not have public access restricted and blocked (AwsSolutions-S2) exit 1 — cdk-nag が公開設定を検出(実測) suppress を設定すると… exit 0 (実測) ©Fusic Co., Ltd. 16 suppressを設定すると、公開バケットもsynthを通る
$ cfn-policy-validator check-no-public-access FAIL The resource policy grants public access
resourceName: DemoL2PublicBucket exit 2 — Access Analyzer 側で公開設定を検出(実測) ©Fusic Co., Ltd. 17 cdk-nagをsuppressしても、Access Analyzerで検出できる
3 Infracost × OPA (conftest) コスト増を検出する ©Fusic Co., Ltd. 18
Infracost — IaC差分を月額に換算 / OPA (conftest) — ポリシーでJSONを判定 値の参照 利⽤者
/ CI API Gateway JWT (IdP 連携) Lambda (api) DynamoDB メタデータ Parameter Store 値の実体 KMS 暗号化 危険① 広すぎる権限 Lambda ・SSM ・KMS の 権限が広がりやすい 監査の複線 DynamoDB Streams EventBridge Pipes Data Firehose S3 (WORM 監査ログ) 危険② 公開設定 外部への同期 EventBridge SQS Lambda (worker) 他のAWS アカウント / GitHub NAT Gateway 危険③ 増えるコスト 破線 = 実機に無い。追加されがち 構成の差分を⽉額に換算して判定 ③ 増えるコスト ©Fusic Co., Ltd. 19 Infracostで費用を計算し、OPAで閾値を判定する
$ cdk synth -c stage=preview -c DEMO_VIOLATION=l3 $ infracost scan
cdk.out/app-preview-hello.template.json Monthly cost: $67 → 変更前のscan は $1 (実測) → 合計差を diff.json に書き出す (jq) $ conftest test --all-namespaces \ --policy policy/rego diff.json FAIL - terraform.cost - Cost gate violated: monthly cost diff +$65.7 exceeds the +$50 threshold (ADR-005 / NFR-COST-2) ©Fusic Co., Ltd. 20 NAT追加による月額増をマージ前に検出する
synth-gate cdk-nag / cfn-guard iam-gate Access Analyzer cost-gate Infracost ×
OPA deploy 最終判断は人間 各層が異なる方法で検証し、互いに補う ©Fusic Co., Ltd. 21 3層を通して、権限・公開設定・コストを確認する
AIの実装速度を保ち、 リスクを検出する 自動検証があると、 AIに任せる範囲を広げやすい ©Fusic Co., Ltd. 22
ルールを守ること自体が目的になると、ビジネスの速度を落とすことがある 検出 ルールが違反を知らせる 確認 リスクとビジネス上の目的を見る 判断 例外を認めるか人が決める ▶ 例外には理由と期限を残す —
後から見直せる状態にする ©Fusic Co., Ltd. 23 ベストプラクティスを絶対視しない
ま と め — 3 層 で 検 証 す
る Point.01 cdk-nagがsynth時に違反を検出する Point.02 Access Analyzerが権限と公開設定を検証する Point.03 InfracostがCDKのコスト増を閾値で判定 ▶ まずはcdk-nagから — 数行の設定でCIに追加できます ©Fusic Co., Ltd. 24
Thank You AIの実装速度を保ち、リスクを機械で検証する OSEKKAI × TECHNOLOGY ココロと技術で、ぴったりも、びっくりも。 We are Hiring!
カジュアル面接 — Let's Talk! https://fusic.co.jp/recruit/lets_talk/44 ©Fusic Co., Ltd.