您正在查看的是 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 | 将根据响应路径中的 XML 载荷(如有)进行评估的 XPath 表达式列表。任何成功解析的 XPath 都将导致 XML 元素的值被遮盖。 | 不适用 | 否 |
JSONPathsRequest | 将根据请求路径中的 JSON 载荷(如果有)进行评估的 JSONPath 表达式列表。任何成功解析的 JSONPath 都将导致 JSON 属性的值被遮盖。 | 不适用 | 否 |
JSONPathsResponse | 将根据响应路径中的 JSON 载荷(如果有)进行评估的 JSONPath 表达式列表。任何成功解析的 JSONPath 都将导致 JSON 属性的值被遮盖。 | 不适用 | 否 |
XPathsFault | 系统将针对错误流中的 XML 载荷(如有)对 XPath 表达式进行求值(如果在流程中的任意时间点抛出故障,将执行该表达式)。任何成功解析的 XPath 都将导致 XML 元素的值被遮盖。 | 不适用 | 否 |
JSONPathsFault | 将根据错误流中的 JSON 载荷(如果有)进行评估的 JSON 表达式列表(如果在流中的任何位置引发了故障,将执行该表达式)。任何成功解析的 JSONPath 将导致 JSON 属性的值被遮盖。 | 不适用 | 否 |
变量 |
一系列变量(预定义或自定义变量),其值将会被遮盖。如需查看默认变量的列表,请参阅变量参考。 |
不适用 | 否 |
Mask 配置 API
掩盖配置是指您使用 RESTful Management API 上传和下载的 XML 或 JSON 格式的文件。如需查看数据遮盖 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如需创建作用域限定为特定 API 代理的掩码配置,请执行以下操作:
$ 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>