您正在查看 Apigee Edge 文档。
前往 Apigee X 文档。 信息
当您在 Edge 中调试 API 调用时,相关内容有时可能包含需要遮盖的敏感数据,例如信用卡或个人健康信息 (PHI)。
Edge 提供了遮盖或隐藏 Trace 和调试会话中的敏感数据的不同方式。
隐藏敏感数据
您可以创建前缀为“private.”的自定义变量,以防止敏感数据显示在 Trace 工具和调试会话中。
例如,在使用键值映射操作政策从已加密的键值映射中检索值时,请将变量名称设置为如下格式,以确保这些值不显示在跟踪或调试会话中:
<Get assignTo="private.hiddenData">
隐藏敏感变量是数据遮盖的一个替代方法,详见下文。隐藏和遮盖之间的区别在于,在跟踪和调试会话中,被隐藏的变量完全不显示,而被遮盖的值将替换为星号。
在跟踪和调试会话中,没有“private.”前缀的变量会以明文形式显示,即使数据来自加密的数据存储区(例如加密的键值映射)也是如此。如果您想遮盖这些值,请使用遮盖(下文)。
遮盖敏感数据
Edge 让您可以定义“遮盖配置”,以在跟踪和调试会话中遮盖特定数据。 遮盖配置可以全局设置(在组织级层),也可以本地设置(在 API 代理级层)。
遮盖数据后,这些数据会在跟踪记录输出中被替换为星号。例如:
<description>**********</description>
使用掩膜配置
遮盖配置可让您标识以下来源中的敏感数据:- XML 载荷:通过 XPath 标识要从请求或响应消息载荷中过滤的 XML 元素。
- JSON 载荷:通过 JSONPath 标识要从请求或响应消息载荷中过滤的 JSON 属性。
- 流变量:您可以指定应在调试输出中遮盖的变量列表。当您指定
request.content、response.content或message.content流变量时,请求/响应正文也会被遮盖。
以下 XML 表示形式展示了遮盖配置的基本结构:
<MaskDataConfiguration name="default"> <Namespaces> <Namespace prefix="myco">http://example.com</Namespace> </Namespaces> <XPathsRequest> <XPathRequest>/myco:Greeting/myco:User</XPathRequest> </XPathsRequest> <XPathsResponse> <XPathResponse>/myco:Greeting/myco:User</XPathResponse> </XPathsResponse> <JSONPathsRequest> <JSONPathRequest>$.store.book[*].author</JSONPathRequest> </JSONPathsRequest> <JSONPathsResponse> <JSONPathResponse>$.store.book[*].author</JSONPathResponse> </JSONPathsResponse> <XPathsFault> <XPathFault>/myco:Greeting/myco:User</XPathFault> </XPathsFault> <JSONPathsFault> <JSONPathFault>$.store.book[*].author</JSONPathFault> </JSONPathsFault> <Variables> <Variable>request.header.user-agent</Variable> <Variable>request.formparam.password</Variable> </Variables> </MaskDataConfiguration>
配置遮盖配置资源
使用以下元素定义遮盖配置。
| 字段名称 | 说明 | 默认值 | 是否必需? |
|---|---|---|---|
| XPathsRequest | 将针对请求路径中的 XML 载荷(如有)进行评估的 XPath 表达式列表。成功解析的任何 XPath 都会导致 XML 元素的值被遮盖。 | 不适用 | 否 |
| XPathsResponse | XPath 表达式列表,将针对响应路径中的 XML 载荷(如有)进行评估。成功解析的任何 XPath 都会导致 XML 元素的值被遮盖。 | 不适用 | 否 |
| JSONPathsRequest | JSONPath 表达式列表,将根据请求路径中的 JSON 载荷(如有)进行评估。成功解析的任何 JSONPath 都会导致 JSON 属性的值被遮盖。 | 不适用 | 否 |
| JSONPathsResponse | JSONPath 表达式列表,将根据响应路径中的 JSON 载荷(如有)对这些表达式求值。成功解析的任何 JSONPath 都会导致 JSON 属性的值被遮盖。 | 不适用 | 否 |
| XPathsFault | 一个 XPath 表达式列表,将针对错误流程(如果在流程中的任何时间点抛出故障,则执行该流程)中的 XML 载荷(如果有)进行评估。成功解析的任何 XPath 都会导致 XML 元素的值被遮盖。 | 不适用 | 否 |
| JSONPathsFault | 一个 JSON 表达式列表,将针对错误流程(如果在流程中的任何时间点抛出故障,则执行该流程)中的 JSON 载荷(如果有)进行评估。成功解析的任何 JSONPath 都会导致 JSON 属性的值被遮盖。 | 不适用 | 否 |
| 变量 |
要屏蔽其值的变量(预定义变量或自定义变量)的列表。如需查看默认变量列表,请参阅变量参考文档。 |
不适用 | 否 |
遮盖配置 API
遮盖配置以 XML 或 JSON 格式的文件定义,您可以使用 RESTful 管理 API 上传和下载这些文件。如需查看数据遮盖 API 的完整列表,请参阅数据遮盖。
如需查看现有的遮盖配置,您只需在组织中调用 API 资源 /maskconfigs:
$ curl https://api.enterprise.apigee.com/v1/o/{org_name}/maskconfigs \
-u email此示例展示了用于身份验证的基本语法。您或许可以使用其他类型的身份验证,例如 Oauth2 或 SAML。
如需查看为特定 API 代理定义的屏蔽配置,您可以调用 /maskconfigs API:
$ curl https://api.enterprise.apigee.com/v1/o/{org_name}/apis/{api_name}/maskconfigs \
-u email
如需查看特定遮盖配置,请指定遮盖的名称:
$ curl https://api.enterprise.apigee.com/v1/o/{org_name}/maskconfigs/default \
-u email
$ curl https://api.enterprise.apigee.com/v1/o/{org_name}/apis/{api_name}/maskconfigs/default \
-u email
如需创建遮盖配置,请使用 POST 动词提交定义遮盖配置的载荷:
$ curl -H "Content-type:text/xml" -X POST -d \
'<MaskDataConfiguration name="default">
<Namespaces>
<Namespace prefix="myco">http://example.com</Namespace>
</Namespaces>
<XPathsRequest>
<XPathRequest>/myco:Greeting/myco:User</XPathRequest>
</XPathsRequest>
<XPathsResponse>
<XPathResponse>/myco:Greeting/myco:User</XPathResponse>
</XPathsResponse>
<JSONPathsRequest>
<JSONPathRequest>$.store.book[*].author</JSONPathRequest>
</JSONPathsRequest>
<JSONPathsResponse>
<JSONPathResponse>$.store.book[*].author</JSONPathResponse>
</JSONPathsResponse>
<XPathsFault>
<XPathFault>/myco:Greeting/myco:User</XPathFault>
</XPathsFault>
<JSONPathsFault>
<JSONPathFault>$.store.book[*].author</JSONPathFault>
</JSONPathsFault>
<Variables>
<Variable>request.header.user-agent</Variable>
<Variable>request.formparam.password</Variable>
</Variables>
</MaskDataConfiguration>' \
https://api.enterprise.apigee.com/v1/o/{org_name}/maskconfigs \
-u email
$ curl -H "Content-type:text/xml" -X POST -d \
'<MaskDataConfiguration name="default">
<Namespaces>
<Namespace prefix="myco">http://example.com</Namespace>
</Namespaces>
<XPathsRequest>
<XPathRequest>/myco:Greeting/myco:User</XPathRequest>
</XPathsRequest>
<XPathsResponse>
<XPathResponse>/myco:Greeting/myco:User</XPathResponse>
</XPathsResponse>
<JSONPathsRequest>
<JSONPathRequest>$.store.book[*].author</JSONPathRequest>
</JSONPathsRequest>
<JSONPathsResponse>
<JSONPathResponse>$.store.book[*].author</JSONPathResponse>
</JSONPathsResponse>
<XPathsFault>
<XPathFault>/myco:Greeting/myco:User</XPathFault>
</XPathsFault>
<JSONPathsFault>
<JSONPathFault>$.store.book[*].author</JSONPathFault>
</JSONPathsFault>
<Variables>
<Variable>request.header.user-agent</Variable>
<Variable>request.formparam.password</Variable>
</Variables>
</MaskDataConfiguration>' \
https://api.enterprise.apigee.com/v1/o/{org_name}/apis/{api_name}/maskconfigs \
-u email
您可以使用 DELETE 动词删除遮盖配置:
$ curl -X DELETE \
https://api.enterprise.apigee.com/v1/o/{org_name}/apis/{api_name}/maskconfigs/{maskconfig_name} \
-u email
此示例展示了用于身份验证的基本语法。您或许可以使用其他类型的身份验证,例如 Oauth2 或 SAML。
对 DELETE 操作的响应是 HTTP 代码 204,没有消息内容。
遮盖 XML 命名空间
遮盖配置在 XPATH 定义中不需要 <Namespace> 元素,除非在 XML 载荷中定义了命名空间。如果 XML 载荷使用了默认命名空间也是如此。
例如,XML 载荷不定义命名空间:
<employee>
<name>abc</name>
<age>50</age>
</employee>因此,遮盖配置不需要 <Namespace> 元素:
<MaskDataConfiguration>
<XPathsRequest>
<XPathRequest>/employee/name</XPathRequest>
<XPathsRequest>
</MaskDataConfiguration>如果 XML 载荷包含命名空间和前缀:
<myco:employee xmlns:myco="http://example.com">
<myco:name>xyz</myco:name>
<myco:age>50</myco:age>
</myco:employee>则遮盖配置定义应包含 <Namespace> 元素:
<MaskDataConfiguration> <Namespaces> <Namespace prefix="myco">http://example.com</Namespace> </Namespaces> <XPathsRequest> <XPathRequest>/myco:employee/myco:name</XPathRequest> <XPathsRequest> </MaskDataConfiguration>
如果 XML 载荷具有命名空间,但没有前缀,即使用默认命名空间:
<employee xmlns="http://example.com">
<name>xyz</name>
<age>50</age>
</employee>则遮盖配置仍应包含 <Namespace> 元素:
<MaskDataConfiguration> <Namespaces> <Namespace prefix="myco">http://example.com</Namespace> </Namespaces> <XPathsRequest> <XPathRequest>/myco:employee/myco:name</XPathRequest> <XPathsRequest> </MaskDataConfiguration>