|
| 1 | +direction: down |
| 2 | + |
| 3 | +classes: { |
| 4 | + human: {style: {fill: "#fef3c7"; stroke: "#b45309"; stroke-width: 2; font-color: "#0a0f25"}} |
| 5 | + idp: {style: {fill: "#fde68a"; stroke: "#92400e"; stroke-width: 2; font-color: "#0a0f25"}} |
| 6 | + agent: {style: {fill: "#dbeafe"; stroke: "#2563eb"; stroke-width: 2; font-color: "#0a0f25"}} |
| 7 | + resource: {style: {fill: "#dcfce7"; stroke: "#16a34a"; stroke-width: 2; font-color: "#0a0f25"}} |
| 8 | + llm: {style: {fill: "#fce7f3"; stroke: "#be185d"; stroke-width: 2; font-color: "#0a0f25"}} |
| 9 | + service: {style: {fill: "#e0e7ff"; stroke: "#4338ca"; stroke-width: 2; font-color: "#0a0f25"}} |
| 10 | + layerbox: {style: {fill: "transparent"; stroke: "#94a3b8"; stroke-width: 2; stroke-dash: 5; font-color: "#0f172a"; font-size: 22; bold: true}} |
| 11 | +} |
| 12 | + |
| 13 | +layerC: "Layer C: Agent (workload) → LLM\nRFC 7523 jwt-bearer + 各社 WIF" { |
| 14 | + class: layerbox |
| 15 | + |
| 16 | + agentC: "AI Agent" {class: agent} |
| 17 | + llm: "LLM Provider\n(Anthropic / OpenAI / Google)" {class: llm} |
| 18 | + |
| 19 | + agentC -> llm: "k8s SA / SPIFFE / GHA の JWT を\nshort-lived sk-ant-oat01-... に交換" {style.stroke: "#be185d"; style.stroke-width: 3} |
| 20 | +} |
| 21 | + |
| 22 | +layerA: "Layer A: Human → Agent → External Resource\nID-JAG / XAA / OAuth Identity Chaining" { |
| 23 | + class: layerbox |
| 24 | + |
| 25 | + human: "Human (Alice)" {class: human; shape: person} |
| 26 | + idp: "IdP\n(Okta / Entra ID / Google Workspace)" {class: idp} |
| 27 | + agentA: "AI Agent" {class: agent} |
| 28 | + resource: "External Resource\n(GitHub / Slack / DB)" {class: resource} |
| 29 | + |
| 30 | + human -> idp: "1. SSO" {style.stroke: "#b45309"; style.stroke-width: 2} |
| 31 | + idp -> agentA: "2. identity assertion JWT" {style.stroke: "#b45309"; style.stroke-width: 2} |
| 32 | + agentA -> resource: "3. RFC 8693 Token Exchange で\nAlice 用 scope-narrow token に交換\n→ API 呼び出し" {style.stroke: "#b45309"; style.stroke-width: 3} |
| 33 | +} |
| 34 | + |
| 35 | +layerB: "Layer B: Agent → Internal Service Chain\nTransaction Tokens for Agents (act + sub)" { |
| 36 | + class: layerbox |
| 37 | + |
| 38 | + agentB: "AI Agent" {class: agent} |
| 39 | + s1: "Order Service" {class: service} |
| 40 | + s2: "Risk Service" {class: service} |
| 41 | + s3: "Payment Service" {class: service} |
| 42 | + |
| 43 | + agentB -> s1: "Txn-Token\n(act=agent, sub=alice)" {style.stroke: "#4338ca"; style.stroke-width: 3} |
| 44 | + s1 -> s2: "Txn-Token を propagate" {style.stroke: "#4338ca"; style.stroke-width: 2} |
| 45 | + s2 -> s3: "監査ログに\n「agent が alice の取引を実行」" {style.stroke: "#4338ca"; style.stroke-width: 2} |
| 46 | +} |
0 commit comments