数据遮盖和隐藏

<ph type="x-smartling-placeholder"></ph> 您正在查看 Apigee Edge 文档。
转到 Apigee X 文档
信息

在 Edge 中调试 API 调用时,内容有时可能包含敏感数据,例如 需要遮盖的信用卡信息或个人健康信息 (PHI)。

Edge 提供多种隐藏或遮盖敏感数据的方法, Trace和调试会话。

隐藏敏感数据

您可以创建前缀为“private.”的自定义变量,以防止敏感数据显示在 Trace 工具和调试会话中。

例如,在使用键值映射操作政策从已加密的键值映射中检索值时,请将变量名称设置为如下格式,以确保这些值不显示在跟踪或调试会话中:

<Get assignTo="private.hiddenData">

隐藏敏感变量是数据遮盖的一个替代方法,详见下文。隐藏和遮盖之间的区别在于,在跟踪和调试会话中,被隐藏的变量完全不显示,而被遮盖的值将替换为星号。

在跟踪和调试会话中,没有“private.”前缀的变量会以明文形式显示,即使数据来自加密的数据存储区(例如加密的键值映射)也是如此。如果您想遮盖这些值,请使用遮盖(下文)。

遮盖敏感数据

利用 Edge,您可以定义“蒙版配置”来遮盖轨迹和调试会话中的特定数据。 您可以在全局(组织级别)或本地(通过 API)设置遮盖配置 代理级别)。

遮盖数据后,这些数据会在跟踪记录输出中被替换为星号。例如:

<description>**********</description>

使用遮盖配置

蒙版 配置可让您识别以下来源中的敏感数据: <ph type="x-smartling-placeholder">
    </ph>
  • 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 将在 请求路径。任何成功解析的 JSONPath 都会生成 已遮盖的 JSON 属性。 不适用
JSONPathsResponse 将在 响应路径。任何成功解析的 JSONPath 都会生成 已遮盖的 JSON 属性。 不适用
XPathsFault 将根据 XML 有效负载(如果有)评估的 XPath 表达式 错误流程(如果在流程中的任何时间点抛出故障就执行该流程)。任何存在 将导致 XML 元素的值被掩盖。 不适用
JSONPathsFault 将针对 错误流程(如果在流程中的任何时间点抛出故障就执行该流程)。任何 JSONPath 将导致 JSON 属性的值被遮盖。 不适用
变量

将对其值进行遮盖的变量列表(预定义或自定义)。对于 默认变量列表,请参阅变量参考

不适用

Mask configuration API

掩码配置是指您上传和下载的 XML 或 JSON 格式的文件 使用 RESTful 管理 API如需查看数据遮盖 API 的完整列表,请参阅数据遮盖

要查看现有掩码配置,只需调用 API 资源 贵组织中的/maskconfigs

$ curl https://api.enterprise.apigee.com/v1/o/{org_name}/maskconfigs \
-u email

此示例展示了 Basic 语法 进行身份验证。您也许可以使用其他类型的身份验证,例如 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

此示例展示了 Basic 语法 进行身份验证。您也许可以使用其他类型的身份验证,例如 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>