Маскирование и сокрытие данных

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