您目前查看的是 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.content、response.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 | 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這個範例顯示驗證的基本語法。您或許可以使用其他類型的驗證,例如 Oauth2 或 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
$ 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。
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>