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
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
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
要件定義の精度を高めるための型と生成AIの活用 / Using Types and Generative AI to Improve the Accuracy of Requirements Definition
haru860
0
320
自動テストだけで リリース判断できるチームへ - 鍵はテストの量ではなくリリース判断基準の再設計にあった / Redesigning Release Criteria for Lightweight Releases
ewa
7
3.7k
The 7 pitfalls of AI
ufried
0
210
CyberAgent YJC Connect
shimaf4979
1
180
データモデリング通り #5オンライン勉強会: AIに『ビジネスの文脈』を教え込むデータモデリング
datayokocho
0
260
QAエンジニアはどうやって プロダクト議論の場に入れるのか?
moritamasami
2
420
PdM・Eng・QAで進めるAI駆動開発の現在地/aidd-with-pdm-eng-qa
shota_kusaba
0
210
ブラウザの投機的読み込みと投機ルールAPIを理解し、Webサービスのパフォーマンスを最適化する
shuta13
3
300
全社統制を維持しながら現場負担をどう減らすか〜プラットフォームチームとセキュリティチームで進めたSecurity Hub活用によるAWS統制の見直し〜/secjaws-security-hub-custom-insights
mhrtech
1
410
変化の激しい時代をゴキゲンに生き抜くために 〜ストレスマネジメントのススメ〜
kakehashi
PRO
5
1.3k
生成AIはソフトウェア開発の革命か、ソフトウェア工学の宿題再提出なのか -ソフトウェア品質特性の追加提案-
kyonmm
PRO
2
880
『生成AI時代のクレデンシャルとパーミッション設計 — Claude Code を起点に』の執筆企画
takuros
3
2.3k
Featured
See All Featured
Thoughts on Productivity
jonyablonski
76
5.1k
Mind Mapping
helmedeiros
PRO
1
190
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.3k
Conquering PDFs: document understanding beyond plain text
inesmontani
PRO
4
2.7k
Writing Fast Ruby
sferik
630
63k
Six Lessons from altMBA
skipperchong
29
4.2k
Between Models and Reality
mayunak
3
280
How to Get Subject Matter Experts Bought In and Actively Contributing to SEO & PR Initiatives.
livdayseo
0
110
The agentic SEO stack - context over prompts
schlessera
0
770
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
133
19k
Balancing Empowerment & Direction
lara
6
1.1k
Scaling GitHub
holman
464
140k
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)