数据遮盖和隐藏

您正在查看的是 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.contentresponse.contentmessage.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

以下示例展示了身份验证的基本语法。您可以使用其他类型的身份验证,例如 Oauth2SAML

如需查看为特定 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

以下示例展示了身份验证的基本语法。您可以使用其他类型的身份验证,例如 Oauth2SAML

对 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>