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
【AWS Dogwood入門】イベントと演算子
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
赤神青空
PRO
August 22, 2026
Video
Programming
39
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
【AWS Dogwood入門】イベントと演算子
赤神青空
PRO
August 22, 2026
Video
More Decks by 赤神青空
See All by 赤神青空
【基本情報対策】CPU・メモリ・キャッシュ
akagami
PRO
0
10
【AIニュース】Anthropic が Git から Scion に移った理由
akagami
PRO
0
16
【AIニュース】Grok Voice 3.0 とは何か
akagami
PRO
0
18
【基本情報対策】探索・整列と計算量
akagami
PRO
0
14
【AIニュース】GPT-6 の Intelligent UI とは何か
akagami
PRO
0
21
【基本情報対策】スタック・キュー・木
akagami
PRO
0
16
【基本情報対策】AI・機械学習の基礎
akagami
PRO
0
22
【基本情報対策】浮動小数点と誤差
akagami
PRO
0
23
【AIニュース】Claude for Google Workspace とは何か
akagami
PRO
0
33
Other Decks in Programming
See All in Programming
Vue Fes Japan の “作る側”に関わってみて
naokihaba
0
160
Everything will be SERVERLESS — 信じて運用した10年の経験値 / Everything Will be Serverless — Lessons Learned from 10 Years of Operational Experience
seike460
PRO
1
1.1k
Jetpack Compose Mechanisms
skydoves
3
820
RAG の “R” を Swift で覗いてみる 〜「意味から探す」検索の仕組み〜
nao_randd
0
160
外から家のPCの電源入れたい!をPHPで解決する
kawashimo0
1
130
R8 の設定見直しでアプリサイズ削減
andpad
0
220
[2026-09-26]空論ジェネリックプロセス~テスト資産とAIで紡ぐ、再現可能なパフォーマンスチューニングの話~
tosite
0
270
Event is what happens
moro
2
780
Kotlinの15年とServer-Side Kotlin
n_takehata
1
150
UPDATE をやめる — EF Core でマスタをバージョン管理する
panda728
PRO
0
1.2k
dotNET_vulnclicker_intro.pdf
deka_morita
0
140
UnityでSystem.Net.WebSocketsなWebSocketサーバが動かないのでUnity Monoのコードを覗いてみた / about implementing websocket server with unity mono
drumath2237
1
610
Featured
See All Featured
Data-driven link building: lessons from a $708K investment (BrightonSEO talk)
szymonslowik
1
1.4k
世界の人気アプリ100個を分析して見えたペイウォール設計の心得
akihiro_kokubo
PRO
74
43k
Reflections from 52 weeks, 52 projects
jeffersonlam
356
22k
Chasing Engaging Ingredients in Design
codingconduct
0
360
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
1
630
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
68
58k
Thoughts on Productivity
jonyablonski
76
5.4k
Why Your Marketing Sucks and What You Can Do About It - Sophie Logan
marketingsoph
0
430
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
8.4k
The Illustrated Children's Guide to Kubernetes
chrisshort
51
53k
How STYLIGHT went responsive
nonsquared
100
6.3k
Designing for humans not robots
tammielis
254
26k
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