View a markdown version of this page

策略创建和更新:每个策略的引擎验证 - Amazon Bedrock AgentCore

策略创建和更新:每个策略的引擎验证

当直接创建或更新策略(而不是通过生成)时,验证和分析会考虑新策略及其与策略引擎中所有先前存在的策略的交互。

工作原理

  1. 对于与策略引擎关联的所有网关,将根据 Cedar 架构检查该策略。无论验证模式如何,架构检查始终运行。

  2. 如果将验证模式设置为FAIL_ON_ANY_FINDINGS,则语义验证将在整个策略引擎的上下文中运行,检查是否存在过于宽松、过于严格和无效的策略。如果架构检查或语义验证得出结果,则策略将被拒绝。有关每项检查的详细信息,请参阅验证和分析概述

注意

使用IGNORE_ALL_FINDINGS时,仅运行架构检查。只要策略通过架构检查,就可以被接受。有关更多信息,请参阅向策略引擎添加策略

示例:创建带有验证的策略

创建经过严格验证的策略,拒绝包含任何发现的策略:

aws bedrock-agentcore-control create-policy \ --policy-engine-id MyEngine-abc123 \ --name RestrictRefunds \ --validation-mode FAIL_ON_ANY_FINDINGS \ --definition '{ "cedar": { "statement": "forbid(\n principal,\n action == Action::\"processRefund\",\n resource\n) when {\n context.amount > 1000\n};" } }'

响应表示策略正在创建中:

{ "policyId": "RestrictRefunds-ghi789", "status": "CREATING" }

检查策略状态以确认验证通过:

aws bedrock-agentcore-control get-policy \ --policy-engine-id MyEngine-abc123 \ --policy-id RestrictRefunds-ghi789

验证通过后,策略将变为活动状态:

{ "policyId": "RestrictRefunds-ghi789", "status": "ACTIVE", "statusReasons": [] }

示例:验证失败

如果策略引用的操作不存在于任何关联网关的架构中,则验证失败:

aws bedrock-agentcore-control create-policy \ --policy-engine-id MyEngine-abc123 \ --name InvalidPolicy \ --validation-mode FAIL_ON_ANY_FINDINGS \ --definition '{ "cedar": { "statement": "permit(\n principal,\n action == Action::\"nonExistentTool\",\n resource\n);" } }'

当您检查策略状态时,响应会显示验证失败:

aws bedrock-agentcore-control get-policy \ --policy-engine-id MyEngine-abc123 \ --policy-id InvalidPolicy-jkl012
{ "policyId": "InvalidPolicy-jkl012", "status": "CREATE_FAILED", "statusReasons": [ "Validation failed: Action 'nonExistentTool' is not defined in the schema for any associated gateway" ] }