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
【AWS Dogwood入門】イベントと演算子
Search
赤神青空
August 22, 2026
Programming
11
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
【AWS Dogwood入門】イベントと演算子
赤神青空
August 22, 2026
More Decks by 赤神青空
See All by 赤神青空
【AWS Dogwood入門】手元で動かしてみた
akagami
0
7
【AWS Dogwood入門】Dogwoodって何?
akagami
0
9
AWSのデータの選び方
akagami
0
18
Auroraは速いRDSではない
akagami
0
43
MySQLとPostgreSQLって何が違うの?
akagami
0
120
第何正規形かを判定する
akagami
0
29
なぜ正規化するのか
akagami
0
31
1NFから3NF
akagami
0
27
3NFの先にあるもの
akagami
0
24
Other Decks in Programming
See All in Programming
Go を使い始めて 2 ヶ月の学び / My first two months with Go
contour_gara
0
340
Dockerfile CMD for Node.js
grazie1999
0
110
初めての模倣学習とVLA
natsutan
0
130
Android CLI
fornewid
0
230
言葉の格闘技のススメ~紙とペンと言葉から始める、キャリアの描き方~
progresscicada
2
170
自動化したのに回らない テスト運用の壁―AI時代の品質責任と生産性
mfunaki
0
360
Claude Code全社展開のためにやったことn選~プラグイン302個・コミッター271人を支えるために~
kenchan
5
1.6k
Japan Community Day at Kubecon + CloudNativeCon Japan 2026: Learning Container Privilege Control by Building My Own Low-Level Container Runtime
ternbusty
1
170
改善しないと、タスクが回らない。 “てんこ盛りポジション” を引き継いだ情シスの、入社3ヶ月の業務改善録
krm963
0
280
AIを紡ぐPMのお話
swdtkuy
0
120
Oxlintはいいぞ(続)
yug1224
1
320
仕様駆動開発の消費期限
watany
20
8.8k
Featured
See All Featured
The Curse of the Amulet
leimatthew05
2
14k
Optimizing for Happiness
mojombo
378
71k
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
2
470
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
550
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
Stop Working from a Prison Cell
hatefulcrawdad
274
21k
How to Grow Your eCommerce with AI & Automation
katarinadahlin
PRO
1
250
Docker and Python
trallard
47
4.1k
Code Review Best Practice
trishagee
74
20k
Building Flexible Design Systems
yeseniaperezcruz
330
40k
Building AI with AI
inesmontani
PRO
1
1.1k
WENDY [Excerpt]
tessaabrams
11
39k
Transcript
2026年8月 イベントと演算子 AWS Dogwood 入門②(全7回)── 何を材料に、何が書けるのか 赤神 青空
▪概要から、言語の中身へ 前回までのおさらい 前回はDogwoodが何者かを通しで見ました。今回は中身です。 まず、条件の材料になるイベントの種類 次に、条件そのものの3つの系統 最後に、演算子をひと通り触ります 今ココ おさらい 2/16
▪ポリシーが参照できる「過去」の正体 何がイベントになるか イベントは3種類。判定を求められるのは request だけ ::request 呼び出しが投げられた時点 判定あり ::response 呼び出しが成功して返った時点
input.*, principal, resource input.* に加えて output.* 判定中のリクエスト⾃⾝も履歴に⼊る 「成功したもの」だけが⼊る ALLOW / DENY が返る 履歴のみ 判定は付かないが後続を変える ::error 呼び出しが失敗した時点 履歴のみ ゲートウェイ側∕ツール側のエラー ::response を参照する条件は error にはマッチしない アクションスキーマ = ポリシーが名前を呼べるツールの集合 MCP の tools/list マニフェストから、1ツール=1アクションで⽣成できる(dogwood schema mcp) ポリシーによる DENY は error ではない。DENY は request イベントに付く判定 失敗した呼び出しは error になり、response には残らない 今ココ Dogwoodとは 3/16
▪temporal条件は3系統ある だけが増えたわけではない 【1】現在のリクエストを見る/【2】過去のイベント列を見る Cedar temporal 素の点認可 履歴を条件にする when { }
when temporal 【3】外から事実を持ち込む 情報提供 例 判定材料を外から供給 現在時刻もここ 小さな関数を呼ぶ Guardrails・分類器 context.system.now も、この3つ目の系統として供給される 今ココ Dogwoodとは 4/16
▪窓の中で一度でも起きたか formerly ── 有無を見る 後ろ向きの演算子です。within 1h が遡る幅を決めます。 dogwood permit (principal,
action == AgentCore::Action::"SellShares", resource) when temporal { formerly within 1h AgentCore::Action::"ApproveSale"::response{ input.stock: context.input.stock, input.shares: context.input.shares, output.approved: true } }; 今ココ 演算子 5/16
▪承認は20分後に1回だけ下りている 同じ頼みが、後から落ちる 条件:直近1時間に、同じ銘柄‧同じ株数の承認があること 承認が下りた(20分後) ここで売却を頼む 窓の中に承認がある 30分後の売却が⾒る「直近1時間」 ALLOW 承認はもう、この窓に⼊らない リクエストの中⾝は、上とまったく同じ
DENY 120分後の売却が⾒る「直近1時間」 (開始前) 0分 30分 60分 90分 120分 窓は「何時から何時まで」ではなく「いまから1時間前まで」。判定のたびに測り直される だから、同じ内容のリクエストでも、遅れて来ると落ちる 窓が動くので、リクエストが同じでも答えが変わる 今ココ 演算子 6/16
▪temporal素のCedarと混ぜる は式なので when の中に置ける 「小口であること」かつ「承認があること」の両方を要求します。 dogwood permit (principal, action ==
AgentCore::Action::"SellShares", resource) when { context.input.shares <= 100 && temporal { formerly within 1h AgentCore::Action::"ApproveSale"::response{ input.stock: context.input.stock, output.approved: true } } }; 今ココ 演算子 7/16
▪レートリミットはこれで書く count_within ── 回数 _ はワイルドカードで、「金額は問わない」という意味になります。 dogwood forbid (principal, action
== AgentCore::Action::"Transfer", resource) when temporal { count_within(1h, AgentCore::Action::"Transfer"::request{ input.amount: _ }) > 5 }; 今ココ 演算子 8/16
▪件数ではなく、異なる値の個数を見る 種類を数える 「1時間に3人までしか送金先を増やせない」。同じ相手への2回は1と数えます。 dogwood forbid (principal, action == AgentCore::Action::"Transfer", resource)
when temporal { count_distinct_within(u, 1h, AgentCore::Action::"Transfer"::request{ input.user: u }) > 3 }; 今ココ 演算子 9/16
▪件数ではなく金額の総量に蓋をする sum_within ── 合計 「何回に分けようと、1時間で $5,000 まで」。a に各件の金額が束ねられます。 dogwood forbid
(principal, action == AgentCore::Action::"Transfer", resource) when temporal { sum_within(a, 1h, AgentCore::Action::"Transfer"::request{ input.amount: a }) > 5000 }; 今ココ 演算子 10/16
▪固定値ではなく、集計そのものと比べる bind ── 集計に名前 「直近の実績を突然上回る1件」だけを拒む、いわゆるスパイク検知です。 dogwood forbid (principal, action ==
AgentCore::Action::"Transfer", resource) when temporal { bind(prior, sum_within(a, 1h, AgentCore::Action::"Transfer"::response{ input.amount: a }), context.input.amount > prior) }; 今ココ 演算子 11/16
▪上3つが言語のプリミティブ、下4つが標準マクロ 演算子の早見表 有無 直前 継続 回数 種類 合計 変数 formerly
previous since count_within count_distinct sum_within bind 今ココ 演算子 窓の中で一度でも起きたか ひとつ前の時点を見る ある事象からの継続を見る 窓の中のイベント数 束ねた値の異なり数(_within) 束ねた値の合計 集計に名前を付けて比較する 12/16
▪3つの修飾が、そのまま書き味になっている MFOTL を名前で割る Metric First-Order Temporal Logic。後ろから読むと構造が見えます。 Temporal ── 「いつ」を式に書ける
formerly / previous / since がこれにあたる 未来を見る演算子は、まだ入っていない First-Order ── 値を変数で束ねられる sum_within の a や count_distinct_within の u 引数を条件に使えるのは、この性質のおかげ Metric ── 演算子に時間の幅が付く within 1h。窓の指定は省略できない 有界だから、有限の状態で監視を回せる 今ココ Dogwoodとは 13/16
▪認可の話であると同時に、形式手法の話でもある 実行時検証という文脈 土台は MFOTL(Metric First-Order Temporal Logic)です。 便利な演算子はプリミティブではない count /
sum / bind は標準ライブラリのマクロ 素の MFOTL も直接書ける runtime verification という分野に由来する 動いている系を、仕様と突き合わせ続ける営み 認可を置き換えるのではなく一般化している 著者に Aurora DSQL を率いた Marc Brooker が入っている 今ココ Dogwoodとは 14/16
▪Cedar を拡張しなかったことの説明 新言語にした理由 時相条件は、Cedar が提供する自動推論の解析ツールを今のところ使えない。 — AWS Open Source Blog(要旨)
今ココ Dogwoodとは 15/16
▪この回の持ち帰り まとめ 01 材料はイベント3種 判定を受けるのは request だけ。あとの2つは履歴に残ります。 02 プリミティブ3つとマクロ4つ formerly・previous・since
が土台。count 等はその上。 03 素のCedarと混ぜられる temporal は式なので、ふつうの when の中に置けます。 今ココ おわりに 16/16