資料遮蓋及隱藏

查看 Apigee Edge 說明文件。
前往 Apigee X說明文件
資訊

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

Edge 提供多種隱藏或遮蓋機密資料的方式 Trace 和偵錯工作階段。

隱藏機密資料

如果不想在 Trace 工具和偵錯工作階段中顯示機密資料,您可以建立 自訂變數加上「private.」前置字元

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

<Get assignTo="private.hiddenData">

隱藏敏感變數是資料遮罩的替代做法,詳情請見下文。 隱藏和遮蓋的差異在於隱藏變數完全不會顯示,並遮蓋 在 Trace 和偵錯工作階段中,系統會將值替換為星號。

不含「private.」的變數前置字串會以明文顯示在 Trace 中 偵錯工作階段 (即使資料來自加密的資料儲存庫等加密金鑰值) 。如要遮蓋這些值,請使用下文的遮罩功能。

遮蓋機密資料

Edge 可讓您定義「遮罩設定」遮蓋追蹤記錄和偵錯工作階段中的特定資料。 遮蓋設定可以全域 (在機構層級) 或本機 (透過 API) 指定 Proxy 層級)。

資料遮蓋後,追蹤記錄輸出內容中的星號就會替換成星號。例如:

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

使用遮罩設定

面具 設定可讓您辨識下列來源中的機密資料:
  • XML 酬載:使用 XPath 即可識別要從要求或篩選中篩除的 XML 元素 回應酬載
  • JSON 酬載:使用 JSONPath 即可找出要篩選的 JSON 屬性 要求或回應訊息酬載的負載
  • 流程變數:您可以指定應在偵錯中遮蓋的變數清單 輸出內容指定 request.contentresponse.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 JSONPath 運算式清單,系統將會根據 JSON 酬載 (如有) 評估, 要求路徑。所有成功解析的 JSONPath 都會產生 JSON 屬性遭到遮蓋。 不適用
JSONPathsResponse JSONPath 運算式清單,系統將會根據 JSON 酬載 (如有) 評估, 回應路徑所有成功解析的 JSONPath 都會產生 JSON 屬性遭到遮蓋。 不適用
XPathsFault 根據 XML 酬載 (如果有的話) 評估的 XPath 運算式清單 錯誤流程 (如果流程中的任何時間點擲回錯誤,就會執行此流程)。任何符合以下條件的 XPath 成功解析後,系統會遮蓋 XML 元素的值。 不適用
JSONPathsFault 一組 JSON 運算式清單,系統會依據 JSON 酬載 (如有) 評估, 錯誤流程 (如果流程中的任何時間點擲回錯誤,就會執行此流程)。任何 JSONPath 系統會遮蓋 JSON 屬性值。 不適用
變數

系統將對其值進行遮蓋的變數 (預先定義或自訂) 清單。換 預設變數清單,請參閱變數參考資料

不適用

遮蓋設定 API

遮罩設定是由您上傳和下載的 XML 或 JSON 格式檔案定義 擷取資訊如需資料遮蓋 API 的完整清單,請參閱資料遮罩

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

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

這個範例說明基本語法 進行驗證。您也可以使用其他類型的驗證方法,例如 Oauth2 或 「SAML」SAML

如要查看為特定 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

這個範例說明基本語法 進行驗證。您也可以使用其他類型的驗證方法,例如 Oauth2 或 「SAML」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>