本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
記憶體的政策範例
此頁面提供 Amazon Bedrock AgentCore 記憶體特有的 Cedar 政策模式:將發起人隔離給自己的演員、自己的命名空間,以及一組所選的記憶體操作。如需這些政策參考的記憶體動作 ID 和context.input欄位,請參閱記憶體動作和請求屬性。如需一般 Cedar 模型和更廣泛的模式程式庫 (OAuth 範圍和角色檢查、IAM 主體比對、forbid使用 和輸入驗證)unless,請參閱了解 Cedar 政策和範例政策。
您可以使用 CreatePolicy 操作將每個 Cedar 政策新增至閘道的政策引擎,並將 Cedar 陳述式作為政策 傳遞definition。如需設定順序,請參閱設定記憶體的精細存取控制。
在每個 Cedar 範例中,將 取代<target-name>為您的連接器目標名稱,將 <gw-arn>取代為您的閘道 ARN。
每個使用者隔離 — actorId 必須等於 JWT 主體
只有在請求actorId等於其 JWT sub宣告時,才允許 OAuth 使用者存取工作階段。這是記憶體的每個使用者核心隔離模式:每個使用者只能存取自己的演員資料。
permit( principal is AgentCore::OAuthUser, action == AgentCore::Action::"<target-name>___POST:/memories/{memoryId}/actor/{actorId}/sessions/{sessionId}", resource == AgentCore::Gateway::"<gw-arn>" ) when { principal.hasTag("sub") && context has input && context.input has actorId && context.input.actorId == principal.getTag("sub") };
命名空間隔離 — 呼叫者只能在自己的命名空間下擷取記錄
此政策允許 OAuth 發起人僅在請求的 namespacePath符合發起人自己的命名空間路徑時擷取記憶體記錄,該路徑在權杖宣告中攜帶。
Cedar 不支援字串串連 – +運算子僅適用於整數運算元,且like萬用字元模式必須是字串常值。因此,您無法從政策內的宣告建置命名空間值 (例如, ("/actors/" + principal.getTag("sub") + "/") 不是有效的 Cedar)。反之,請讓您的身分提供者發出已保留發起人完整命名空間路徑的宣告,將其映射到委託人標籤,並與該標籤namespacePath進行比較。在此範例中,字符提供包含呼叫者命名空間路徑的namespace宣告 (例如 /actors/<sub>/)。
permit( principal is AgentCore::OAuthUser, action == AgentCore::Action::"<target-name>___POST:/memories/{memoryId}/retrieve", resource == AgentCore::Gateway::"<gw-arn>" ) when { principal.hasTag("namespace") && context has input && context.input has namespacePath && context.input.namespacePath == principal.getTag("namespace") };
動作範圍:僅允許一組記憶體操作
授予記憶體操作的固定清單,例如允許列出事件和擷取記錄,但不允許其他動作。使用 將多個記憶體動作分組action in […];不支援 action-id 萬用字元。
permit( principal, action in [ AgentCore::Action::"<target-name>___POST:/memories/{memoryId}/actor/{actorId}/sessions/{sessionId}", AgentCore::Action::"<target-name>___POST:/memories/{memoryId}/retrieve" ], resource == AgentCore::Gateway::"<gw-arn>" );
為了確保記憶體只能透過閘道到達,而不是直接呼叫記憶體資料平面的委託人,請參閱限制直接存取記憶體。