数据遮盖和隐藏

您正在查看 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 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

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