Вы просматриваете документацию Apigee Edge .
Перейдите в документацию Apigee X.info
При отладке вызовов API в Edge иногда может обнаруживаться конфиденциальная информация, например, данные кредитных карт или персональные медицинские данные, которые необходимо скрыть.
Edge предоставляет различные способы сокрытия или маскировки конфиденциальных данных из сеансов трассировки и отладки.
Скрытие конфиденциальных данных
Вы можете предотвратить отображение конфиденциальных данных в инструменте трассировки и сеансах отладки, создав пользовательские переменные с префиксом " private. "
Например, при использовании политики операций с картой ключ-значение для извлечения значений из зашифрованной карты ключ-значение, отформатируйте имена переменных следующим образом, чтобы гарантировать, что значения не будут отображаться в сеансах трассировки или отладки:
<Get assignTo="private.hiddenData">
Скрытие конфиденциальных переменных — это альтернатива использованию маскирования данных, описанная далее. Разница между сокрытием и маскированием заключается в том, что скрытые переменные вообще не отображаются, а замаскированные значения заменяются звездочками в сеансах трассировки и отладки.
Переменные без префикса " private. " отображаются в открытом виде в сеансах трассировки и отладки, даже если данные поступают из зашифрованного хранилища данных, например, из зашифрованной карты ключ-значение. Используйте маскирование (см. ниже), если хотите замаскировать эти значения.
Маскировка конфиденциальных данных
Edge позволяет определять «конфигурации маскировки» для сокрытия определенных данных в сеансах трассировки и отладки. Настройки маскировки могут быть заданы глобально (на уровне организации) или локально (на уровне API-прокси).
Если данные замаскированы, в выходных данных трассировки они заменяются звездочками. Например:
<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-элемента. | Н/Д | Нет |
| XPathsResponse | Список выражений XPath, которые будут оцениваться по XML-данным (если таковые имеются) в пути ответа. Любые успешно разрешенные выражения XPath приведут к тому, что значение XML-элемента будет замаскировано. | Н/Д | Нет |
| JSONPathsRequest | Список выражений JSONPath, которые будут оцениваться по отношению к JSON-данным (если таковые имеются) в пути запроса. Любые успешно разрешенные выражения JSONPath приведут к тому, что значение свойства JSON будет замаскировано. | Н/Д | Нет |
| JSONPathsResponse | Список выражений JSONPath, которые будут оцениваться по отношению к JSON-данным (если таковые имеются) в пути ответа. Любые успешно разрешенные JSONPath приведут к тому, что значение свойства JSON будет замаскировано. | Н/Д | Нет |
| XPathsFault | Список выражений XPath, которые будут оцениваться по XML-данным (если таковые имеются) в потоке обработки ошибок (который выполняется, если ошибка возникает в любой точке потока). Любые выражения XPath, которые успешно разрешатся, приведут к маскированию значения XML-элемента. | Н/Д | Нет |
| JSONPathsFault | Список выражений JSON, которые будут оцениваться на основе данных JSON (если таковые имеются) в потоке обработки ошибок (который выполняется, если ошибка возникает в любой точке потока). Любые JSONPaths, которые успешно разрешаются, приведут к тому, что значение свойства JSON будет замаскировано. | Н/Д | Нет |
| Переменные | Список переменных (предопределенных или пользовательских), значения которых будут скрыты. Список переменных по умолчанию см. в справочнике по переменным . | Н/Д | Нет |
API конфигурации маски
Конфигурации масок определяются в виде файлов в формате XML или JSON, которые вы загружаете и скачиваете с помощью RESTful API управления. Полный список API для маскирования данных см. в разделе «Маски данных» .
Чтобы просмотреть существующие конфигурации масок, вы можете просто вызвать ресурс API /maskconfigs в вашей организации:
$ curl https://api.enterprise.apigee.com/v1/o/{org_name}/maskconfigs \
-u emailВ этом примере показан базовый синтаксис аутентификации. Вы можете использовать и другие типы аутентификации, такие как OAuth2 или SAML .
Чтобы просмотреть конфигурации масок, определенные для конкретных API-прокси, вы можете вызвать API-функцию /maskconfigs :
$ 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
Для конфигурации маски не требуется элемент <Namespace> в определении XPATH, если пространство имен не определено в 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>