本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
策略创建和更新:每个策略的引擎验证
当直接创建或更新策略(不是通过生成)时,验证和分析会考虑新策略及其与策略引擎中所有先前存在的策略的相互作用。
工作原理
-
对照与策略引擎关联的所有网关的 Cedar 架构来检查该策略。无论使用哪种验证模式,架构检查始终运行。
-
如果将验证模式设置为
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" ] }