Вы просматриваете документацию по Apigee Edge.
Перейдите к документации по Apigee X. Информация
При отладке вызовов API в Edge их содержимое иногда может содержать данные деликатного характера, например номера кредитных карт или закрытую информацию о состоянии здоровья (PHI), позволяющую идентифицировать личность. Такие данные необходимо деидентифицировать.
В Edge есть разные способы скрыть или замаскировать данные деликатного характера в трассировке и сеансах отладки.
Как скрыть данные деликатного характера
Чтобы данные деликатного характера не появлялись в инструменте трассировки и сеансах отладки, создайте пользовательские переменные с префиксом "private.".
Например, при использовании правила Key Value Map Operations для получения значений из зашифрованной карты "ключ-значение" отформатируйте имена переменных следующим образом, чтобы значения не отображались в сеансах трассировки или отладки:
<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 (если таковые имеются) в потоке ошибок (который выполняется, если в любой точке потока возникает ошибка). Если JSONPath будет успешно разрешен, значение свойства JSON будет замаскировано. | Н/Д | Нет |
| Переменные |
Список переменных (стандартных или пользовательских), значения которых будут маскироваться. Список переменных по умолчанию приведен в справочнике по переменным. |
Н/Д | Нет |
API для настройки маскировки
Конфигурации масок определяются как файлы в формате XML или JSON, которые можно загружать и скачивать с помощью API управления RESTful. Полный список 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>