LOG_ONLY 모드에서 정책 테스트
정책 수준 적용 모드를 사용하면 ACTIVE와 간에 전환LOG_ONLY하여 "이 정책이 적용된 경우 내 트래픽에 어떻게 되나요?"라는 질문에 답할 수 있습니다. 정책별 LOG_ONLY 모드를 사용하면 권한 부여 결정에 영향을 주지 않고 실제 트래픽에 대한 정책을 테스트할 수 있습니다. 이 정책은 모든 요청을 적용한 것처럼 평가하지만 로그에 결과만 기록합니다. 적용 모드가 인 정책의 결과로 차단되거나 허용되는 것은 없습니다LOG_ONLY. 결과를 신뢰하면 로 승격합니다ACTIVE.
주제
LOG_ONLY 모드 작동 방식
정책 엔진의 모든 정책에는 ACTIVE 또는의 적용 모드가 있습니다LOG_ONLY. 기본값은 ACTIVE이므로 기존 정책 및 필드를 지정하지 않고 생성하는 모든 새 정책은 이전과 같이 계속 적용됩니다. 정책 엔진은 요청을 평가할 때 ACTIVE 정책과 LOG_ONLY 정책을 나란히 평가하지만 ACTIVE 정책에만 적용합니다.
ACTIVE 정책에 따라 AgentCore Gateway로 반환되고 적용되는 결정이 결정됩니다. 정책 엔진은 "default-deny" 및 "forbid-wins" 시맨틱을 적용합니다. 즉, 정책이 이를 허용하고 활성 정책의 단일 금지가 이를 거부하는 경우에만 요청이 허용됩니다.
LOG_ONLY 정책은 동일한 요청에 대해 평가되지만 결과는 별도로 유지됩니다. 추적으로 보고되고 Amazon CloudWatch 지표로 내보내집니다. 이는 강제 결정으로 결합되지 않습니다.
| 적용 모드 | 각 요청에 대해 평가되었나요? | 반환된 결정에 영향을 미치나요? |
|---|---|---|
|
|
예 |
예 |
|
|
예 |
아니요 |
요청은 두 단계로 평가됩니다.
-
정책 엔진은 결정을 계산합니다.
ACTIVE정책만 이에 기여합니다.LOG_ONLY정책은 별도로 평가 및 보고되지만 고려되지는 않습니다. -
엔진이
ENFORCE모드에서 게이트웨이에 연결된 경우 게이트웨이는 정책 엔진의 결정에 따라 작업을 허용하거나 거부합니다. 엔진이LOG_ONLY모드의 게이트웨이에 연결된 경우 게이트웨이는 아무런 조치도 취하지 않습니다. 결정은 기록되지만 적용되지 않습니다.
ACTIVE 및 LOG_ONLY는 두 개의 격리된 세트로 취급됩니다. LOG_ONLY 정책은 호출자의 경험을 변경할 수 없습니다. 요청이 수신하는 결정은 LOG_ONLY 정책의 영향을 받지 않습니다.
요청과 일치하는 LOG_ONLY 정책을 기록하는 것 외에도 정책 엔진은 해당 정책 중 어떤 정책이 인 경우 결정을 변경했는지 보고합니다ACTIVE. 이는 정책의 유효성 및 안전성(즉, 로 승격할 수 있는지 여부ACTIVE)을 평가할 때 사용할 주요 신호입니다. 예를 들어, 자주 일치하고 의사 결정 플립 세트에 나타나는 LOG_ONLY 정책은 관찰 기간 동안 트래픽을 차단했을 것입니다. 각 LOG_ONLY 정책은 다른 모든 LOG_ONLY 정책과 독립적으로 평가되어 의사 결정 전환 정책 세트를 결정합니다. 그러나 각 LOG_ONLY 정책 평가는 모든 현재 ACTIVE 정책을 고려합니다.
LOG_ONLY 정책 및 LOG_ONLY 정책 엔진
AgentCore의 정책에는 LOG_ONLY 값을 사용하는 두 개의 개별 제어가 있습니다. 서로 다른 계층에서 작동하고 서로 다른 질문에 답하므로 어떤 계층을 설정 중인지 이해하는 것이 중요합니다.
정책 엔진 적용 모드: 엔진의 전체 동작을 제어합니다. 로 설정하면 개별 정책 모드에 관계없이 엔진의 정책이 적용되지 LOG_ONLY않습니다. 모든 결정이 기록됩니다. 또는 CreateGateway UpdateGateway 작업을 사용하여 정책 엔진을 게이트웨이와 연결할 policyEngineConfiguration 때의 mode 필드를 사용하여 설정됩니다. 에서 mode 허용하는 두 값은 ENFORCE (기본값) 및 입니다LOG_ONLY.
정책 모드는 적용 엔진 내에서 단일 정책의 동작을 제어합니다. LOG_ONLY로 설정하면 해당 정책은 여전히 평가되지만 적용이 아닌 결정이 기록됩니다. 엔진의 다른 모든 ACTIVE 정책은 정상적으로 계속 적용됩니다. 에서 enforcementMode 허용하는 두 값은 ACTIVE (기본값) 및 입니다LOG_ONLY.
정책 수준 LOG_ONLY를 사용하여 트래픽에 영향을 주지 않고 프로덕션 환경에서 새 가드레일을 섀도우 테스트합니다. 엔진 수준 LOG_ONLY를 사용하여 적용을 활성화하기 전에 모든 정책의 동작을 관찰합니다.
|
정책 적용 모드 |
|||
|
|
|
||
|
정책 엔진 적용 모드 |
|
평가 및 시행됨. 요청을 차단하거나 수정할 수 있습니다. |
평가되었지만 적용되지 않았습니다. 결정은 로깅만 되며 엔진의 다른 |
|
|
평가되었지만 적용되지 않았습니다. 결정만 로깅됩니다. |
평가되었지만 적용되지 않았습니다. 결정만 로깅됩니다. |
|
참고
정책 엔진 적용 모드가 우선합니다. 정책 엔진이 LOG_ONLY 모드에서 연결된 경우 게이트웨이가 정책 엔진의 결정에 전혀 작용하지 않기 때문에 정책이 ACTIVE 적용 모드의 정책이 아니라 게이트웨이 작업을 거부할 수 없습니다. 엔진은 여전히 결정을 계산하며 사용자는 여전히 LOG_ONLY 원격 측정을 받습니다. 결정은 단순히 적용되지 않습니다.
정책의 적용 모드 설정
정책을 생성하거나 업데이트할 때 정책에서 enforcementMode 필드를 설정할 수 있으며(예: CreatePolicy 및 UpdatePolicy) GetPolicy 및에서 반환됩니다ListPolicies.
LOG_ONLY 모드에서 정책 생성 LOG_ONLY CreatePolicy 요청에서를 enforcementMode로 설정하여 LOG_ONLY 모드에서 정책을 생성합니다. 다음 예제에서는 신뢰도 임계값을 초과하는 폭력적인 콘텐츠를 금지하지만 이를 관찰하는 가드레일을 정책에 생성합니다. 정책의 가드레일에 대한 자세한 내용은 정책의 가드레일을 참조하세요.
aws bedrock-agentcore-control create-policy \ --policy-engine-id my-policy-engine-id \ --name "LogOnlyViolenceFilter" \ --enforcement-mode LOG_ONLY \ --validation-mode IGNORE_ALL_FINDINGS \ --definition '{"policy":{"statement":"forbid (principal, action == AgentCore::Action::\"MyTarget\", resource == AgentCore::Gateway::\"arn:aws:bedrock-agentcore:us-east-1:111122223333:gateway/my-gateway\") when guardrails { BedrockGuardrails::ContentFilter([\"VIOLENCE\"], [context.input.userMessage])[\"VIOLENCE\"].confidenceScore.greaterThan(decimal(\"0.7\")) };"}}'
응답은 "enforcementMode": "LOG_ONLY"로 정책을 에코합니다. 정책은 트래픽에 대해 평가를 시작하며, 그 시점부터 일치하는 항목이 트레이스 및 CloudWatch 지표에 표시되므로 결정에 영향을 주지 않습니다.
정책 및 적용 모드 나열
ListPolicies는 각 정책 요약enforcementMode에서를 반환하므로 어떤 정책이 준수되고 어떤 정책이 적용되는지 한눈에 확인할 수 있습니다.
aws bedrock-agentcore-control list-policies \ --policy-engine-id my-policy-engine-id \ --query 'policies[].{name:name,enforcementMode:enforcementMode,status:status}'
응답
[ { "name": "LogOnlyViolenceFilter", "enforcementMode": "LOG_ONLY", "status": "ACTIVE" }, { "name": "RefundLimit", "enforcementMode": "ACTIVE", "status": "ACTIVE" } ]
LOG_ONLY 결과 관찰
호출자가 AgentCore Gateway를 통해 도구/통화 요청을 하면 게이트웨이는 MCP 응답을 호출자에게 반환하기 전에 정책을 포함한 모든 LOG_ONLY 정책을 평가합니다. 호출자의 응답은 LOG_ONLY 정책의 영향을 받지 않으며, 이러한 결과는 관찰성만을 통해 보고됩니다.
추적 및 Amazon CloudWatch 지표를 통해 LOG_ONLY 정책 동작을 관찰합니다.
추적 및 범위: 게이트웨이에서 추적을 활성화하면 정책 평가 범위에 LOG_ONLY 일치 정보가 포함됩니다. AgentCore 관찰성 콘솔에서 이러한 범위를 검사하여 지정된 요청에 대해 어떤 LOG_ONLY 정책이 실행되었는지, 그리고 해당 정책이 결정을 뒤집았는지 확인할 수 있습니다. 자세한 내용은 Amazon Bedrock AgentCore 관찰성에서 에이전트 애플리케이션 관찰을 참조하세요.
CloudWatch 지표: AgentCore의 정책은 AWS/Bedrock-AgentCore 네임스페이스에서 지표를 내보냅니다. 다음 지표는 LOG_ONLY 평가에 고유합니다.
| 지표 | 지시 사항 |
|---|---|
|
|
일치하는 |
|
|
|
|
|
|
|
|
승격될 경우 |
|
|
|
모든 지표에는 필터링을 위한 PolicyEngine 및 OperationName 차원이 포함됩니다. 정책별 지표에는 정책 ID가 있는 정책 차원이 추가로 포함됩니다.
AgentCore 리소스에 대한 지표 보기에 대한 자세한 내용은 Bedrock AgentCore에서 생성한 관찰성 데이터를 참조하세요.
정책을 적용으로 승격
LOG_ONLY 정책에 확신이 있는 경우를 사용하여 정책을 적용으로 승격하고를 enforcementMode로 UpdatePolicy설정합니다ACTIVE. 다른 변경 사항은 필요하지 않으며 정책은 ID, 이름 및 정의를 유지합니다.
aws bedrock-agentcore-control update-policy \ --policy-engine-id my-policy-engine-id \ --policy-id LogOnlyViolenceFilter-a1b2c3d4e5 \ --enforcement-mode ACTIVE
역방향도 지원됩니다. ACTIVE 정책을 다시 LOG_ONLY 로 이동하여 정책을 적용하지 않고 그대로 유지하고 계속 관찰할 수 있습니다.
따라서 일반적인 수명 주기는에서 정책을 생성하고LOG_ONLY, 트래픽 및 지표를 관찰한 다음 로 승격하고, 필요한 ACTIVE 경우 정책을 삭제하고 다시 생성LOG_ONLY하지 않고 로 다시 강등하는 것입니다.
LOG_ONLY 모드에서 임계값 선택
LOG_ONLY 모드는 보안과 합법적인 트래픽 중단의 균형을 맞추는 신뢰도 점수 임계값을 선택해야 하는 가드레일 정책에 특히 유용합니다. 임계값이 너무 낮으면 합법적인 요청이 차단됩니다. 임계값이 너무 높으면 위협이 통과할 수 있습니다.
권장 워크플로: 합리적이라고 생각되는 임계값(예: 0.7)을 사용하여 가드레일을 LOG_ONLY 모드로 배포합니다. 이 정책은 모든 요청을 평가하고 CloudWatch 지표에 대한 신뢰도 점수를 내보내지만 트래픽을 차단하지는 않습니다.
실제 프로덕션 트래픽이 며칠 또는 몇 주인 대표 기간 동안 데이터를 누적합니다. ConfidenceScore 지표( PolicyEnforcementMode=LOG_ONLY 사용)는 트래픽이 생성하는 점수의 분포를 제공합니다.
실측과 비교하여 점수를 분석합니다. 레이블이 지정된 테스트 세트(양성 또는 악성으로 표시된 프롬프트)가 있는 경우 각 임계값에서 정밀도와 재현율을 계산하고 목표에 가장 적합한 테스트 세트를 선택할 수 있습니다. 레이블이 지정된 데이터가 없는 경우 높은 점수 범위(예: 0.8~1.0), 낮은 점수 범위(0~0.2), 모호한 중간 영역(0.4~0.7)의 샘플 프롬프트를 분류하여 임계값 선택에 대한 신뢰도를 구축합니다. 선택한 임계값으로 정책을 업데이트하고 로 승격합니다ACTIVE.
aws bedrock-agentcore-control update-policy \ --policy-engine-id my-policy-engine-id \ --policy-id LogOnlyViolenceFilter-a1b2c3d4e5 \ --enforcement-mode ACTIVE \ --definition '{"policy":{"statement":"forbid (principal, action == AgentCore::Action::\"MyTarget\", resource == AgentCore::Gateway::\"arn:aws:bedrock-agentcore:us-east-1:111122223333:gateway/my-gateway\") when guardrails { BedrockGuardrails::ContentFilter([\"VIOLENCE\"], [context.input.userMessage])[\"VIOLENCE\"].confidenceScore.greaterThan(decimal(\"0.65\")) };"}}'
이 워크플로는 임곗값이 일반 기본값이 아닌 실제 트래픽 패턴을 반영하도록 합니다.
고려 사항 및 제한 사항
LOG_ONLY 정책은 결정에 영향을 미치지 않습니다. LOG_ONLY 정책은 작업을 허용하거나 거부할 수 없습니다. 요청이 수신하는 결정은 LOG_ONLY 정책이 없는 경우 받게 되는 결정과 동일합니다. 이는 기능의 핵심 보증입니다.
변경 사항은 최종적으로 일관됩니다. 정책 생성, 업데이트 또는 승격은 몇 초 내에 평가 경로에 적용됩니다. 즉각적인 전환을 기대하지 않고 그에 따라 관찰 기간과 승격 단계를 계획합니다.
결과 목록은 제한되어 있습니다. LOG_ONLY 일치 및 의사 결정 플립 목록은 각각 요청당 1,000개의 항목으로 제한됩니다. LOG_ONLY 정책 수가 매우 많은 엔진의 경우 CloudWatch 지표를 사용하여 전체 집계 수를 확인합니다.
평가는 부분적일 수 있습니다. 요청에 대한 LOG_ONLY 평가가 완료되지 않은 경우 해당 요청에 대한 LOG_ONLY 신호에 항목이 누락되었을 수 있습니다. 강제 결정은 영향을 받지 않습니다.