資料遮蓋及隱藏

您目前查看的是 Apigee Edge 說明文件。
前往 Apigee X 說明文件
info

在 Edge 中偵錯 API 呼叫時,內容有時可能包含需要遮蓋的私密資料,例如信用卡或個人識別健康資訊 (PHI)。

Edge 提供多種方式,可在追蹤和偵錯工作階段中隱藏或遮蓋機密資料。

隱藏機密資料

如要避免機密資料顯示在追蹤工具和偵錯工作階段中,請建立前置字元為「private.」的自訂變數。

舉例來說,使用「鍵/值對應表作業」政策從加密的鍵/值對應表擷取值時,請按照下列格式設定變數名稱,確保值不會顯示在追蹤或偵錯工作階段中:

<Get assignTo="private.hiddenData">

隱藏機密變數是資料遮蓋的替代做法,詳情請見下文。隱藏和遮蓋的差異在於,隱藏的變數完全不會顯示,而遮蓋的值在追蹤和偵錯工作階段中會替換為星號。

即使資料來自加密資料儲存庫 (例如加密鍵/值對應),沒有「private.」前置字元的變數仍會以明文顯示在追蹤記錄和偵錯工作階段中。如要遮蓋這些值,請使用遮蓋功能 (如下所述)。

遮蓋機密資料

Edge 可讓您定義「遮罩設定」,在追蹤和偵錯工作階段中遮蓋特定資料。 遮蓋設定可全域設定 (機構層級),也可在本機設定 (API Proxy 層級)。

資料經過遮蓋後,追蹤輸出內容會以星號取代資料。例如:

<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 XPath 運算式清單,將針對要求路徑中的 XML 酬載 (如有) 進行評估。如果 XPath 成功解析,系統就會遮蓋 XML 元素的值。 N/A
XPathsResponse XPath 運算式清單,將針對回應路徑中的 XML 酬載 (如有) 進行評估。如果 XPath 成功解析,系統就會遮蓋 XML 元素的值。 N/A
JSONPathsRequest JSONPath 運算式清單,將針對要求路徑中的 JSON 酬載 (如有) 進行評估。如果 JSONPath 成功解析,系統會遮蓋 JSON 屬性的值。 N/A
JSONPathsResponse JSONPath 運算式清單,將根據回應路徑中的 JSON 酬載 (如有) 進行評估。如果 JSONPath 成功解析,系統會遮蓋 JSON 屬性的值。 N/A
XPathsFault XPath 運算式清單,將針對錯誤流程中的 XML 酬載 (如有) 進行評估 (如果流程中的任何時間點擲回錯誤,就會執行此流程)。如果 XPath 成功解析,系統就會遮蓋 XML 元素的值。 N/A
JSONPathsFault 系統會根據錯誤流程中的 JSON 酬載 (如有),評估 JSON 運算式清單 (如果流程中的任何時間點擲回錯誤,就會執行錯誤流程)。如果 JSONPath 成功解析,系統就會遮蓋 JSON 屬性的值。 N/A
變數

要遮蓋值的變數清單 (預先定義或自訂)。如需預設變數清單,請參閱「變數參考資料」。

N/A

遮蓋設定 API

遮蓋設定定義為 XML 或 JSON 格式的檔案,您可以使用 RESTful 管理 API 上傳及下載這些檔案。如需完整的資料遮蓋 API 清單,請參閱「資料遮蓋」。

如要查看現有的遮蓋設定,只要在貴機構中呼叫 API 資源 /maskconfigs 即可:

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

這個範例顯示驗證的基本語法。您或許可以使用其他類型的驗證,例如 Oauth2SAML

如要查看為特定 API Proxy 定義的遮罩設定,可以呼叫 /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 Proxy 範圍的遮蓋設定:
$ 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 命名空間的遮蓋

除非 XML 酬載中定義了命名空間,否則遮罩設定不需要 XPATH 定義中的 <Namespace> 元素。如果 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>