Upgrade to Pro — share decks privately, control downloads, hide ads and more …

【AWS Dogwood入門】一語だけ違うポリシー

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.

【AWS Dogwood入門】一語だけ違うポリシー

Avatar for 赤神青空

赤神青空 PRO

August 23, 2026

Video

More Decks by 赤神青空

Other Decks in Programming

Transcript

  1. ▪sum_within 一語だけ違うポリシー の1語を response に変えただけ すでに着金した額が $5,000 を超えていたら拒む。そう読めます。一見よさそうです。 dogwood forbid

    (principal, action == AgentCore::Action::"Transfer", resource) when temporal { sum_within(a, 1h, AgentCore::Action::"Transfer"::response{ input.amount: a }) > 5000 }; 今ココ 落とし穴 3/9
  2. ▪判定が起きるのは、送金を頼んだ時点 返事を待たずに投げると素通りする 上限は直近1時間で $5,000。2,000ドルの送⾦を、返事を待たずに3回頼む ← ここまでで3件とも判定ずみ。返事はまだ1件も返っていない 返事 1件⽬ 2件⽬ 3件⽬

    ✕ 返事 判定が起きるのは、この3か所(送⾦を頼んだ時点) 返事 sum_within( ... ::response ) ◯ sum_within( ... ::request ) 1件⽬ 合計 $0 → ALLOW 2件⽬ 合計 $0 → ALLOW 3件⽬ 合計 $0 → ALLOW 1件⽬ 合計 $2,000 → ALLOW 2件⽬ 合計 $4,000 → ALLOW 3件⽬ 合計 $6,000 → DENY 着⾦が済んだ送⾦だけを⾜す 頼んだ送⾦を全部⾜す(返事待ちも含む) 実際には $6,000 が出ていく 返事を待たずに投げれば、上限は素通りできる 3件⽬で⽌まる いま頼んでいる送⾦も、合計に⼊るため 違いは1語だけ。::response と書くか、::request と書くか 3件とも「まだ何も着金していない」状態で判定される 今ココ 落とし穴 4/9
  3. ▪同じトレースに、1語だけ違う2本を当てる 実際に replay した 1件目 2件目 3件目 4件目 結論 $2,000

    $2,000 $2,000 $2,000 3件目で割れた 今ココ 落とし穴 request版 ALLOW / response版 ALLOW request版 ALLOW / response版 ALLOW request版 DENY / response版 ALLOW request版 DENY / response版 ALLOW 説明どおりに再現できた 6/9
  4. ▪同じ理由で起きる、もう一つのずれ 自分も1回と数える 集計はいま判定中のリクエストも含む。だから数が1つずれます。 つい書いてしまう 「3回まで許可」のつもりで >= 3 と 書く 実際に起きること

    3回目の要求そのもので止まる 対処 しきい値の境界は replay で確かめ てから出す 返事待ちを数に入れるからこそ、境界が1つずれます。原因は同じです。 今ココ 落とし穴 7/9
  5. ▪同じトレースにしきい値だけ変えて当てる 境界を振ってみた >3 >= 3 >2 結論 4回目で DENY 3回目で

    DENY 3回目で DENY 自分も1回と数える 今ココ 落とし穴 実質3回まで許可 実質2回まで許可 実質2回まで許可 境界は replay で確かめてから出す 8/9
  6. ▪この回の持ち帰り まとめ 01 数えるなら request を数える 着金した分だけ数えると、着金する前に次が通ってしまいます。 02 自分も1回と数える 「3回まで」のつもりで

    >= 3 と書くと、3回目で止まります。 03 境界は replay で確かめる しきい値は机上で振ってから本番に出すのが安全です。 今ココ おわりに 9/9