本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
時間政策
Amazon Bedrock AgentCore 中的政策支援暫時政策:其決策取決於工作階段中客服人員動作的歷史記錄的政策,而非僅取決於目前的請求。您可以使用它們強制執行跨越多個動作的規則,例如在動作之前需要核准、限制動作在時段內執行的次數,或將執行中的總數保持在閾值以下。
暫時政策是包含一或多個暫時運算子的 permit 或 forbid規則。每個條件都會符合依其動作、委託人和動作的輸入或輸出欄位記錄的較早事件,並僅考慮所需時段內的事件。條件可以將相符的事件與目前請求建立關聯,因此規則可能需要,例如,目前請求對先前動作已核准的資源採取行動。政策引擎會記錄每個工作階段的事件,並在每次請求時評估這些條件,因此您可以將工作階段感知規則表達為政策,而不是追蹤客服人員或工具程式碼中的事件。
暫時政策是以 Dogwood 撰寫,與 Cedar 相容,並支援所有現有的 Cedar 政策。標準 Cedar 政策是無狀態的,只考慮目前的請求。暫時政策遵循相同的deny-by-default模型:只有在 permit套用且沒有forbid覆寫時,才允許請求。時間條件與以時間為基礎的條件不同,這會根據時鐘時間 (context.system.now) 而非工作階段歷史記錄來限制存取。您也可以在 LOG_ONLY 模式下執行暫時政策,觀察在將政策提升為 之前會決定什麼ENFORCE;請參閱政策強制執行模式。
重要概念
時間政策建立在兩件事之上:表達工作階段感知規則的 Dogwood 政策語言,以及政策工作階段,其範圍限定規則可以看到的歷史記錄。
Dogwood 政策語言
暫時政策是以 Dogwood 撰寫,這是 AgentCore 中的政策用於工作階段感知授權的開放原始碼政策語言。Dogwood 建置在 Cedar 上,並使用相同的授權模型:您透過委託人、動作和資源撰寫 和 permitforbid規則,而且只有在 permit套用且沒有forbid覆寫它時,才允許請求。Dogwood 與 Cedar 相容,並支援所有現有的 Cedar 政策,因此每個有效的 Cedar 政策也是有效的 Dogwood 政策。您現有的point-in-time政策會繼續運作而不變更,而且只有在規則必須考慮超過目前請求時才新增時間條件。
使用 Dogwood,您可以宣告地表達工作階段感知規則為政策,而不是在代理程式或工具程式碼中實作事件追蹤邏輯。政策引擎會記錄相關事件,並評估每個請求的條件。例如,以下政策只有在前一個小時內發生相符核准時,才允許銷售:
permit ( principal, action == AgentCore::Action::"TradingTarget___SellShares", resource == AgentCore::Gateway::"arn:aws:bedrock-agentcore:us-west-2:123456789012:gateway/my-gateway" ) when temporal { formerly within 1h AgentCore::Action::"TradingTarget___ApproveSale"::response{ eventResource: resource, input.stock: context.input.stock, input.shares: context.input.shares, output.approved: true } };
Dogwood 為常見模式提供暫時運算子: formerly within(視窗稍早發生的相符事件)、 since within(自錨點事件以來已保留的條件),以及視窗中sum相符事件的彙總count和 。
如需完整的暫時語法,請參閱 Dogwood 政策網站上的 Dogwood 語言指南
政策工作階段和工作階段 ID
時間政策會根據政策工作階段進行評估:一系列以一個工作階段 ID 分組的相關閘道調用。時間歷史記錄的範圍是工作階段,因此條件只會考慮與正在授權請求相同的工作階段所記錄的事件。從第一個請求開始,您會產生工作階段 ID,並在 x-amzn-bedrock-agentcore-policy-session-id標頭中的每個請求上傳送。Gateway 不會代表您產生工作階段 ID。如果您省略 標頭,或傳送空值,閘道不會建立工作階段。如果關聯的政策引擎包含暫時政策,則沒有工作階段 ID 的請求會失敗並出現驗證錯誤。
如需傳遞工作階段 ID、工作階段生命週期以及身分如何跨多躍點呼叫傳播的詳細資訊,請參閱政策工作階段和身分傳播。
工作階段失效
時間政策會透過查看先前在相同工作階段中發生的情況,決定是否允許動作。該歷史記錄僅對工作階段開始時生效的暫時政策有意義。如果您在工作階段開啟時變更引擎的暫時政策,記錄的歷史記錄將不再符合目前的規則,因此服務會結束工作階段,而不是對不一致的資料做出決策。
在引擎上新增或更新暫時政策會使引擎的作用中暫時政策工作階段失效。在這類變更之後,下一個重複使用失效工作階段的請求會失敗,並顯示 HTTP 409 ConflictException。
若要復原,請啟動新的工作階段,然後再次傳送請求。新的工作階段會從空的歷史記錄開始,並根據您更新的政策進行評估。
支援 AWS 的區域
暫時政策可在下表中標記的 AWS 區域中使用。
| 區域名稱 | 時間政策 |
|---|---|
|
亞太地區 (海德拉巴) |
否 |
|
亞太地區 (馬來西亞) |
否 |
|
亞太地區 (孟買) |
✓ 是 |
|
亞太地區 (首爾) |
✓ 是 |
|
亞太地區 (新加坡) |
✓ 是 |
|
亞太地區 (悉尼) |
✓ 是 |
|
亞太區域 (泰國) |
否 |
|
亞太地區 (東京) |
✓ 是 |
|
加拿大 (中部) |
✓ 是 |
|
歐洲 (法蘭克福) |
✓ 是 |
|
歐洲 (愛爾蘭) |
✓ 是 |
|
歐洲 (倫敦) |
✓ 是 |
|
歐洲 (米蘭) |
否 |
|
Europe (Paris) |
✓ 是 |
|
歐洲 (西班牙) |
✓ 是 |
|
歐洲 (斯德哥爾摩) |
✓ 是 |
|
南美洲 (聖保羅) |
✓ 是 |
|
美國東部 (維吉尼亞北部) |
✓ 是 |
|
美國東部 (俄亥俄) |
✓ 是 |
|
美國西部 (加利佛尼亞北部) |
否 |
|
美國西部 (奧勒岡) |
✓ 是 |
考量事項
跨帳戶和跨區域請求
暫時政策工作階段不支援跨區域或跨帳戶傳播。當 AgentCore Gateways 及其執行期目標的資源位於不同帳戶或不同 AWS 區域時,暫時政策不會控制這些資源之間的請求。若要讓暫時政策控制代理程式的動作,閘道及其所有目標必須位於相同的 AWS 帳戶和 AWS 區域。
暫時政策僅在工作負載存取字符 (WAT) 通過請求鏈時強制執行存取 (請參閱政策工作階段和身分傳播)。當您的請求鏈完全由 AgentCore Gateway 和執行期元件組成時,AgentCore 會自動將 WAT 標頭從一個躍點傳播到下一個躍點。此傳播發生在單一 AWS 區域和帳戶中。暫時政策適用於整個鏈結。Gateway 到 Runtime 到 Gateway 到 Runtime 等鏈結會讓字符結束,而不需要額外的工作。
包含非閘道或執行期元件的鏈行為不同。請求可能會傳遞您自行操作的基礎設施,例如第三方 API 閘道或 Kubernetes 叢集。該元件必須轉送 WAT 標頭,而且您必須新增自訂邏輯,才能透過這些躍點傳播 WAT。這些非 AgentCore 元件的實體位置不會影響區域和帳戶範圍。只要任一端的 AgentCore 元件返回套用暫時政策的相同 AWS 帳戶和 AWS 區域,它們就可以在任何地方執行。
所需的 IAM 許可
暫時政策也附帶 IAM 先決條件。為閘道設定的 IAM 角色必須允許 bedrock-agentcore:GetWorkloadAccessToken動作。即使您將 IAM 用於傳出授權,此要求仍會保留。WAT 允許時間政策在工作階段之間關聯代理程式的動作。無論您如何驗證外撥通話,閘道都必須能夠取得 WAT。如果角色缺少此許可,時間政策強制執行會失敗。設定時間政策時bedrock-agentcore:GetWorkloadAccessToken授予閘道角色。如需完整的許可政策,包括資源 ARNs 和工作負載身分目錄範圍,請參閱暫時政策的 IAM 許可。
自我參考條件包括目前的請求
當暫時條件參考正在授權的相同動作時,目前請求自己的事件會包含在評估中。例如,計算在視窗中發生動作次數的條件也會計算目前調用。
必須允許先前的動作記錄為回應
工作階段歷史記錄會將每個動作記錄為事件,其類型會反映結果:允許的完成動作會記錄為response事件,而政策拒絕的動作會記錄為error事件。暫時條件僅符合其名稱類型的事件,因此符合response事件的條件只會考慮允許的先前動作。請確定時間政策所依賴的先前動作本身是由政策所允許;如果拒絕,則會將其記錄為 error而非 response,且response條件永遠不會符合。
依先前回應排序動作
工作階段歷史記錄會在動作完成後記錄每個動作response的事件。當政策取決於相同工作階段中先前動作的回應,例如輸出欄位或since條件時,請在您收到先前動作的回應後發出相依請求。在啟動依賴它的動作之前完成每個動作,可讓工作流程的序列與政策評估的歷史記錄保持一致。
配額
下列配額適用於暫時政策:
| 配額 | Value |
|---|---|
|
每個政策引擎的時間政策 |
25 |
|
每個政策的時間運算子 |
3 |
|
每個時間條件的時間範圍上限 |
24 小時 |
可觀測性
Amazon Bedrock AgentCore 會發佈指標和跨度資料,讓您觀察時間政策評估。根據預設,指標會發佈至 AWS/Bedrock-AgentCore CloudWatch 命名空間。啟用所連接 AgentCore Gateway 資源的追蹤後,跨度資料就會變成可用,並且可以在 CloudWatch aws/spans日誌群組中找到。
以下是時間政策特有的訊號:
-
TemporalLatency(指標):評估時間政策所花費的時間,以毫秒為單位。每個時間評估都會發出一個範例,因此您可以使用SampleCount統計資料計算評估。 -
aws.agentcore.policy.temporal.latency_ms(跨屬性):評估請求的時間政策所花費的時間,以毫秒為單位。 -
aws.agentcore.policy.temporal.evaluation_invoked(跨屬性):是否為請求執行時間評估。這不表示時間政策符合或決定了決策。 -
aws.agentcore.policy.temporal.event_timestamp_ns(span 屬性):評估器用來排序請求事件的確切事件時間戳記,以奈秒為單位。
如需政策指標、維度和跨度屬性的完整清單,以及如何啟用可觀測性,請參閱 AgentCore 可觀測性資料中的政策。
安全考量
時間政策的速率限制適用於單一工作階段。由於時間歷史記錄的範圍是工作階段,而且工作階段 ID 是由發起人提供,因此 count型限制,例如「每個工作階段最多 N 次呼叫」只會計算該工作階段記錄的事件。啟動新的工作階段會開始新的計數,因此暫時速率限制會限制工作階段中的活動,而不是限制所有發起人的工作階段。