Con Presidio real (imagen Docker) y `en_core_web_sm`, el recognizer de PERSON daba falsos positivos sobre los textos de los escenarios (técnicos, en español, analizados con el modelo `en`) → `01_sip` y `02_mos` salían `blocked_by_guardrail` en lugar de `awaiting_approval`/`completed`. Se quitan `PERSON` y `PHONE_NUMBER` de `detect_pii.entities` (input) y `PHONE_NUMBER` de `pii_leakage.entities` (output); quedan los recognizers puramente de patrón (`EMAIL_ADDRESS`, `ES_NIF`, `IP_ADDRESS`, `IBAN_CODE`), fiables. El bloqueo por NIF/email del demo sigue funcionando. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
66 lines
2.2 KiB
YAML
66 lines
2.2 KiB
YAML
name: default
|
|
version: v1
|
|
description: Política base aplicada a agentes de operación de plataforma de voz.
|
|
input_validators:
|
|
- type: detect_pii
|
|
config:
|
|
# Solo recognizers de patrón fiables: el modelo spaCy en_core_web_sm que usa
|
|
# Presidio en la imagen Docker da falsos positivos de PERSON sobre los textos
|
|
# técnicos de los escenarios (que están en español y se analizan con el modelo
|
|
# en). PERSON/PHONE_NUMBER necesitarían en_core_web_lg o un modelo es_*.
|
|
entities: [EMAIL_ADDRESS, ES_NIF, IP_ADDRESS, IBAN_CODE]
|
|
severity_on_match: block
|
|
- type: prompt_injection
|
|
config:
|
|
severity_on_match: block
|
|
- type: toxic_language
|
|
config:
|
|
threshold: 0.7
|
|
severity_on_match: warning
|
|
- type: forbidden_topics
|
|
config:
|
|
topics: ["instrucciones de explotación", "credenciales", "código malicioso"]
|
|
severity_on_match: block
|
|
|
|
output_validators:
|
|
- type: schema_match
|
|
config:
|
|
severity_on_mismatch: block
|
|
schema:
|
|
type: object
|
|
required: [severity, root_cause_hypothesis, proposed_actions]
|
|
properties:
|
|
severity:
|
|
type: string
|
|
enum: [low, medium, high, critical]
|
|
root_cause_hypothesis:
|
|
type: string
|
|
proposed_actions:
|
|
type: array
|
|
items:
|
|
type: object
|
|
required: [id, action, target, risk_score, rollback_plan, requires_approval]
|
|
properties:
|
|
id: {type: string}
|
|
action: {type: string}
|
|
target: {type: string}
|
|
risk_score: {type: integer, minimum: 1, maximum: 5}
|
|
rollback_plan: {type: string}
|
|
requires_approval: {type: boolean}
|
|
- type: pii_leakage
|
|
config:
|
|
entities: [EMAIL_ADDRESS, ES_NIF, IP_ADDRESS]
|
|
severity_on_match: block
|
|
- type: forbidden_action_keywords
|
|
config:
|
|
keywords: ["DROP TABLE", "rm -rf", "shutdown -h now", "delete production", "format c:"]
|
|
severity_on_match: block
|
|
- type: telco_safety_rules
|
|
config:
|
|
rules:
|
|
- never_propose_action_targeting_production_without_rollback
|
|
- never_propose_mass_action_without_canary
|
|
severity_on_violation: block
|
|
|
|
on_validator_error: fail_closed
|