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
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
760
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
37
モノレポの型は、そのままつながる 〜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
The Rails Doctrine Decade
koic
2
500
RAG の “R” を Swift で覗いてみる 〜「意味から探す」検索の仕組み〜
nao_randd
0
120
Ghostty + Neovimで作る 透明でカッコ良い開発環境
j341nono
0
150
コードレビューのボトルネックを"する側"と"される側"の両面から解消する
yub0n
2
1.5k
R8 の設定見直しでアプリサイズ削減
andpad
0
180
SREの越境 / SRE Collaboration
y0hgi
2
300
JAWS-UG 東京支部が始める、JAWS-UG支部コラボ / JAWS-UG lunchtime LT Collaboration
y0hgi
0
190
FreeBSDでZabbixを動かす
kenkino
0
360
Verilogで学ぶCPU自作入門.pdf
uyuki234
8
4k
[2026-09-26]空論ジェネリックプロセス~テスト資産とAIで紡ぐ、再現可能なパフォーマンスチューニングの話~
tosite
0
260
Starting & Sustaining Code-Based E2E Testing for Non-Coding QA Teams( #jasstniigata )
teyamagu
PRO
1
910
なぜCTOを降りてFDEを選んだのか?〜なぜプロダクト企業がFDEで顧客の現場に踏み込むのか〜
gonta
1
160
Featured
See All Featured
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
23k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.7k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
Information Architects: The Missing Link in Design Systems
soysaucechin
1
1.2k
Bash Introduction
62gerente
615
220k
A better future with KSS
kneath
240
18k
Facilitating Awesome Meetings
lara
57
7.2k
Git: the NoSQL Database
bkeepers
PRO
433
67k
Optimising Largest Contentful Paint
csswizardry
37
4k
GitHub's CSS Performance
jonrohan
1033
470k
We Analyzed 250 Million AI Search Results: Here's What I Found
joshbly
2
2k
Sam Torres - BigQuery for SEOs
techseoconnect
PRO
0
570
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.