Presidio 安全护栏
Presidio 安全护栏使用 Presidio 检测和匿名化敏感数据。Presidio 是开源 PII 引擎,需要由你自行运行。AISIX 会为每个请求或响应调用 Presidio analyzer。检测到的实体可以被阻断,也可以按你选择的操作方式匿名化后继续转发。
与内置 pii 安全护栏相比,Presidio 增加了:
- NER/ML 实体:可识别正则难以表达的实体,例如
PERSON、LOCATION、NRP以及其它 Presidio 识别器实体。 - 匿名化操作方式:可替换为实体占位符、用星号遮盖、用 SHA-256 哈希,或直接删除片段。
- 在你自己的网络内分析:无需 Presidio 供应商 Key。发送用于 PII 分析的文本会留在你的 Presidio 部署中;发送给所配置模型服务提供方的请求仍会离开你的基础设施,发生脱敏时会先完成匿名化。
Presidio 由两个独立的 HTTP 服务组成,AISIX 分别通过 base URL 访问:
- analyzer 响应
POST /analyze,返回文本中检测到的实体类型、偏移量和置信度分数。对于配置的每个检查位置,AISIX 都会为每个文本片段调用一次。 - anonymizer 响应
POST /anonymize,返回改写后的文本。只有当片段中存在生效动作为mask的检测结果时,AISIX 才会调用它,因此仅阻断的安全护栏永远不会用到 anonymizer。但无论如何,配置中都必须填写它的 URL。
Presidio 最初是 Microsoft 项目,现已转为由 Data Privacy Stack 组织进行社区治理。发行镜像发布在 ghcr.io/data-privacy-stack/。mcr.microsoft.com/presidio-* 上已有的标签仍然可用,但不再发布新版本,因此新部署请使用 ghcr.io 镜像。
本指南将介绍如何部署两个 Presidio 服务,创建带有按实体动作配置的 Presidio 安全护栏,并验证匿名化和阻断行为。
前提条件
开始前请准备:
- 阅读安全护栏行为,了解检查位置、执行模式和远程故障处理方式。
- 以下配置路径之一:
- AISIX Enterprise 或 AISIX Cloud,其中包含环境、已接入的网关和具有写权限范围的 Admin Token。对于 AISIX Enterprise,请按照 AISIX Enterprise 快速入门操作。如需申请 AISIX Cloud 访问权限,请联系 API7。
- 加载声明式
resources.yaml文件的开源 AISIX 网关。
- 可以发送 Chat Completions 请求的模型别名和调用方 API Key。
- Docker 或 Kubernetes 集群,用于运行 Presidio analyzer 和 anonymizer。
curl。控制面路径还会使用jq。
在本地评估 Presidio
两个服务都监听 PORT 环境变量指定的端口(默认 3000),并且都提供 GET /health。它们都以 Gunicorn 运行各自的 Flask 应用,进程数由 WORKERS 决定,WORKERS 默认为 1。
两个服务都不对调用方做任何认证。只要能访问 analyzer,就能向它提交文本,因此请把两个服务部署在只有网关可以访问的内部网络中。参见限制 Presidio 的访问范围。
使用 Docker 运行服务
在本地评估时,创建网络并在其中启动两个 Presidio 服务:
docker network create aisix-guardrails
docker run -d --name presidio-analyzer --network aisix-guardrails \
-p 127.0.0.1:5002:3000 ghcr.io/data-privacy-stack/presidio-analyzer:latest
docker run -d --name presidio-anonymizer --network aisix-guardrails \
-p 127.0.0.1:5001:3000 ghcr.io/data-privacy-stack/presidio-anonymizer:latest
把网关容器连接到 aisix-guardrails,或在部署中提供等效网络连通性:
# 开源快速入门容器:aisix-quickstart
# AISIX Enterprise 快速入门容器:aisix-dp
docker network connect aisix-guardrails YOUR_AISIX_GATEWAY_CONTAINER
从主机确认 analyzer 可响应:
curl -sS -X POST "http://127.0.0.1:5002/analyze" \
-H "Content-Type: application/json" \
-d '{
"text": "my email is alice@example.com",
"language": "en"
}'
响应会列出检测到的 EMAIL_ADDRESS 实体及其偏移量和置信度分数。