Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
形式手法特論:SMT ソルバで解く認可ポリシの静的解析 #kernelvm / Kernel ...
Search
y_taka_23
March 20, 2026
Technology
1k
1
Share
形式手法特論:SMT ソルバで解く認可ポリシの静的解析 #kernelvm / Kernel VM Study Tsukuba No3
Kernel/VM 探検隊@つくば No3 で使用したスライドです。
y_taka_23
March 20, 2026
More Decks by y_taka_23
See All by y_taka_23
形式手法特論:コンパイラの「正しさ」は証明できるか? #burikaigi / BuriKaigi 2026
ytaka23
17
7.6k
形式手法特論:CEGAR を用いたモデル検査の状態空間削減 #kernelvm / Kernel VM Study Hokuriku Part 8
ytaka23
3
820
形式手法特論:位相空間としての並行プログラミング #kernelvm / Kernel VM Study Tokyo 18th
ytaka23
3
2.3k
AWS と定理証明 〜ポリシー言語 Cedar 開発の舞台裏〜 #fp_matsuri / FP Matsuri 2025
ytaka23
11
6k
問 1:以下のコンパイラを証明せよ(予告編) #kernelvm / Kernel VM Study Kansai 11th
ytaka23
3
1.1k
AWS のポリシー言語 Cedar を活用した高速かつスケーラブルな認可技術の探求 #phperkaigi / PHPerKaigi 2025
ytaka23
15
4.8k
NilAway による静的解析で「10 億ドル」を節約する #kyotogo / Kyoto Go 56th
ytaka23
7
980
形式手法の 10 メートル手前 #kernelvm / Kernel VM Study Hokuriku Part 7
ytaka23
7
1.6k
普通の Web エンジニアのための様相論理入門 #yapcjapan / YAPC Hakodate 2024
ytaka23
12
4.2k
Other Decks in Technology
See All in Technology
How to learn AWS Well-Architected with AWS BuilderCards: Security Edition
coosuke
PRO
0
140
「QA=テスト」「シフトレフト=スクラムイベントの参加者の一員」の呪縛を解く。アジャイルな開発を止めないために、10Xで挑んだ「右側のしわ寄せ」解消記 #scrumniigata
nihonbuson
PRO
5
1.4k
O'Reilly Infrastructure & Ops Superstream: Platform Engineering for Developers, Architects & the Rest of Us
syntasso
0
150
写真で見るAWS Summit Singapore 2026
k_adachi_01
0
110
AI対話分析の夢と、汚いデータの現実 Looker / Dataplex / Dataform で実現する品質ファーストな基盤設計
waiwai2111
0
520
Redmine次期バージョン7.0の注目新機能解説 — UI/UX強化と連携強化を中心に
vividtone
1
110
「背中を見て育て」からの卒業 〜専門技術としてのテスト設計を軸に、品質保証のバトンを繋ぐ〜 #genda_tech_talk
nihonbuson
PRO
3
1.4k
SLI/SLO、「完全に理解した」から「チョットデキル」へ
maruloop
5
480
Oracle AI Database@AWS:サービス概要のご紹介
oracle4engineer
PRO
4
2.6k
オライリーイベント登壇資料「鉄リサイクル・産廃業界におけるAI技術実応用のカタチ」
takarasawa_
0
400
AI-Assisted Contributions and Maintainer Load - PyCon US 2026
pauloxnet
1
140
AWSアップデートから考える継続的な運用改善
toru_kubota
2
140
Featured
See All Featured
Exploring anti-patterns in Rails
aemeredith
3
350
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
130
State of Search Keynote: SEO is Dead Long Live SEO
ryanjones
0
190
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2.2k
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
0
500
A designer walks into a library…
pauljervisheath
211
24k
The innovator’s Mindset - Leading Through an Era of Exponential Change - McGill University 2025
jdejongh
PRO
1
170
Prompt Engineering for Job Search
mfonobong
0
300
Impact Scores and Hybrid Strategies: The future of link building
tamaranovitovic
0
270
The Pragmatic Product Professional
lauravandoore
37
7.3k
The World Runs on Bad Software
bkeepers
PRO
72
12k
SEO Brein meetup: CTRL+C is not how to scale international SEO
lindahogenes
1
2.6k
Transcript
形式手法特論 SMTソルバで解く 認可ポリシの静的解析 #kernelvm チェシャ猫 (@y_taka_23) Kernel/VM 探検隊@つくば No3 (20th
Mar. 2026)
卒業式といえば SMT ソルバ
我々は「幼年期の終り」にいる
生成 AI 時代の仕様記述 • 仕様を「記述すること」への重心の移動 ◦ AI はそれらしい実装を高速・大量に生成できる ◦ 明示されたコンテキスト外の事情は汲んでくれない
• 今後は仕様の「検証可能性」がより問われる時代に ◦ まずい実装を機械的に弾ける、白黒が決まる仕様 ◦ リッチな型システムや静的解析の利用
理解は全てに先立つ そして理解とは記述である
Cedar Policy Language https://github.com/cedar-policy
認可エンジン Cedar • AWS 製の認可判定エンジン ◦ Principal / Action /
Resource + α でポリシを記述 ◦ リクエストに対し許可 or 拒否を返す • いわばジェネリック IAM 的な立ち位置 ◦ Rust で実装され、OSS として公開されている ◦ マネージド版の Amazon Verified Permissions も
None
持ち主が操作主
持ち主が操作主 拡張子が .png private でない
閲覧操作 持ち主が操作主 拡張子が .png 許可 private でない
構造化・リファクタリングも可能
None
持ち主が操作主 拡張子が .png private なら拒否
「リファクタリング」?
リファクタリングとは 観測可能な挙動を保つ変更のこと!
Cedar Analysis による解析 • 複雑なポリシは最終的な結果が分かりづらい ◦ デプロイ前に「検証可能性」が欲しい • Cedar では静的解析ツールが提供されている
◦ ふたつのポリシ間に強弱の違いがあるか? ◦ 自明・冗長なポリシがないか? ◦ 許可を拒否で上書きして潰していないか?
None
一つ目の方が許可範囲が広い
Cedar Analysis の特徴 • リクエストを与えずとも、ポリシのみで検査 ◦ 単体テストと違い具体的なテストケースが不要 ◦ 真に「任意のリクエスト」を検査する全称形の仕様 •
内部では SMT ソルバが使用されている ◦ 比較するポリシを SMT エンコード ◦ 一方で Allow、他方で Deny となるリクエストを探索
None
最終的な assert 条件は 「t10 と t12 が等しくない」
最終的な assert 条件は 「t10 と t12 が等しくない」 t10 は「t4 または
t9」
最終的な assert 条件は 「t10 と t12 が等しくない」 t10 は「t4 または
t9」 t4 は「t0 と t3 が等しい」
最終的な assert 条件は 「t10 と t12 が等しくない」 t10 は「t4 または
t9」 t4 は「t0 と t3 が等しい」 t3 は t2 の owner (R1_a1)
最終的な assert 条件は 「t10 と t12 が等しくない」 t10 は「t4 または
t9」 t4 は「t0 と t3 が等しい」 t0 はリクエストの principal t3 は t2 の owner (R1_a1) t2 はリクエストの resource
t4
Cedar: A new language for expressive, fast, safe, and analyzable
authorization J. W. Cutler et al. (OOPSLA 2024) https://doi.org/10.1145/3649835
Cedar 式から Option 付き SMT 式への コンパイル規則
地味に厄介な in 演算子 • リソースの包含関係は in で記述できる ◦ 未解釈関数として SMT
エンコード • 推移性・非巡回性を制約として SMT に伝えたい ◦ しかし全称量化を許すと SMT の決定性が失われる • 判定問題に対して必要十分な有限制約集合を生成 ◦ このエンコードの健全性・完全性が論文の貢献
None
操作対象が term フォルダに含まれる term フォルダが shared フォルダに含まれる shared フォルダが 操作主アカウントに含まれる
None
t24は team が shared に含まれるなら shared の祖先は team の祖先でもある
(人間の仕事じゃねぇ〜)
だからこそ機械が理解する形で 仕様が定式化される意味がある
本日のまとめ • 仕様記述の「検証可能性」の重要性 • 認可エンジン Cedar ◦ IAM と同様、Principal /
Action / Resource で指定 • Cedar Analysis ◦ ポリシの意味を静的に検査できる ◦ 内部では SMT ソルバで充足可能性を検査
Solve Smart Policies With SMT Solvers! Presented By チェシャ猫 (@y_taka_23)