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
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
shiro seike
PRO
July 18, 2026
Programming
640
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
Seeing Through Serverless: Observability for AWS Lambda with ADOT and CloudWatch Application Signals
seike460
PRO
1
140
Seeing Through Serverless: ADOT と CloudWatch Application Signals で実現する AWS Lambda のオブザーバビリティ(日本語版)/ Seeing Through Serverless (Japanese Edition)
seike460
PRO
1
23
モノレポの型は、そのままつながる 〜Hono RPCで型を素通しする開発体験〜 / Monorepo Types Connect As-Is: Passing Types Through with Hono RPC
seike460
PRO
1
29
OSSのコンセプトを知る / Understanding the Concept Behind an OSS
seike460
PRO
1
29
コミュニティの有益性 ~JAWS Days 2026 での体験を通して~ / The Benefits of a Community ~Through My Experience at JAWS Days 2026~
seike460
PRO
0
460
実行委員長目線で振り返る JAWS DAYS 2026 / JAWS DAYS 2026 from the Chair's Perspective
seike460
PRO
1
27
SLO から始める SRE / Starting SRE with SLO
seike460
PRO
1
100
Architecture as SteeringOn-Ramp to AI-DLC
seike460
PRO
0
65
KiroでのAIコーディング実践 / AI Coding in Practice with Kiro
seike460
PRO
1
25
Other Decks in Programming
See All in Programming
WebMCP Challenge に星空観察アプリで参加した話
okajun35
0
160
Go × SIMDで高速化するベクトル検索 ~ルーフラインモデルでSIMDが効く境界を探れ! ~
po3rin
1
530
LoopHub - ローカルで動く GitHub で、AI と共同開発
jugyo
1
540
Foundry Localでエージェント開発
seosoft
0
190
20260914 AIエージェント時代のPlatform Engineering LLM基盤とプロダクトの責務境界線
kanfab1
6
1.8k
モバイル交通系ICへのチャージ実例から考える、クロスプラットフォーム開発におけるiOS実機テスト設計とCI運用
yusuga
1
450
AI × TiDD / 2026.09.05 Redmine 大阪
tokudiro
1
150
AWS DevOps Agentで インシデント対応をAIに任せたい
honmarkhunt
7
2.8k
変化を抱擁するドキュメントの作り方 - ビジネスルール駆動開発がもたらす、コードとの新しい関係
ioki
2
200
Heart of Swift Concurrency
koher
0
590
数年滞っていたダークモード対応をおよそ2週間で完了させる
chigichan24
0
710
GraphRAGのKnowledge Graphを 直接!見る/View-GraphRAG's-KnowledgeGraph-directly!
tyumugi1113
1
310
Featured
See All Featured
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
2.1k
Highjacked: Video Game Concept Design
rkendrick25
PRO
1
460
Paper Plane
katiecoart
PRO
3
53k
How to audit for AI Accessibility on your Front & Back End
davetheseo
0
540
Stewardship and Sustainability of Urban and Community Forests
pwiseman
0
520
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
12
1.3k
Into the Great Unknown - MozCon
thekraken
41
2.7k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
202
76k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
32
3k
Leo the Paperboy
mayatellez
9
2.3k
The Curious Case for Waylosing
cassininazir
1
510
End of SEO as We Know It (SMX Advanced Version)
ipullrank
3
4.4k
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.