Деидентификация и скрытие данных

Вы просматриваете документацию по 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
Чтобы создать конфигурацию маски, которая относится к определенному прокси API:
$ 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>