Mascaramento e ocultação de dados

Esta é a documentação do Apigee Edge.
Acesse Documentação da Apigee X.
informações

Quando você depura chamadas de API no Edge, o conteúdo pode conter dados sensíveis, como: cartões de crédito ou informações de saúde de identificação pessoal (PHI) que precisam ser mascaradas.

O Edge oferece diferentes maneiras de ocultar ou mascarar dados sensíveis Trace e depurar sessões.

Como ocultar dados confidenciais

É possível impedir que dados confidenciais apareçam na ferramenta de rastreamento e em sessões de depuração criando variáveis personalizadas prefixadas com "private.".

Por exemplo, ao usar a política de operações de mapa de chave-valor para recuperar valores de um mapa de chave-valor criptografados, formate os nomes das variáveis da seguinte maneira para garantir que eles não apareçam nas sessões de rastreamento ou depuração:

<Get assignTo="private.hiddenData">

Ocultar variáveis confidenciais é uma alternativa ao uso de mascaramento de dados, descrito a seguir. A diferença entre ocultar e mascarar é que as variáveis ocultas não aparecem e os valores mascarados são substituídos por asteriscos no Trace e em sessões de depuração.

As variáveis sem o prefixo "private." são exibidas em texto não criptografado nas sessões de rastreamento e de depuração, mesmo que os dados sejam provenientes de um armazenamento de dados criptografados, como um mapa de chave-valor criptografado. Use o mascaramento (abaixo) se quiser mascarar esses valores.

Como mascarar dados confidenciais

O Edge permite definir "configurações de máscara" para mascarar dados específicos em sessões de trace e depuração. As configurações de mascaramento podem ser definidas globalmente (no nível da organização) ou localmente (na API). nível de proxy).

Quando os dados são mascarados, eles são substituídos por asteriscos na saída de trace. Exemplo:

<description>**********</description>

Como usar configurações de máscara

Máscara permitem identificar dados sensíveis nestas origens:
  • Payloads XML: usando o XPath, é possível identificar elementos XML que serão filtrados dos payloads das mensagens de solicitação ou resposta.
  • Payloads JSON: usando o JSONPath, é possível identificar propriedades JSON a serem filtradas dos payloads das mensagens de solicitação ou resposta.
  • Variáveis de fluxo: é possível especificar uma lista de variáveis que precisam ser mascarados na saída de depuração. Quando você especifica as variáveis de fluxo request.content, response.content ou message.content, o corpo da solicitação/resposta também é mascarado.

A estrutura básica de uma configuração de máscara é mostrada pela seguinte representação 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>

Como configurar uma máscara recurso de configuração

Defina uma configuração de máscara usando os elementos a seguir.

Nome do campo Descrição Padrão Obrigatório?
XPathsRequest Uma lista de expressões XPath que serão avaliadas em relação a cargas úteis de XML (se houver) no caminho da solicitação. Quaisquer XPaths que forem resolvidos com êxito resultarão no valor do XML elemento que está sendo mascarado. N/A Não
XPathsResponse Uma lista de expressões XPath que serão avaliadas em relação a cargas úteis de XML (se houver) no caminho de resposta. Quaisquer XPaths que forem resolvidos com êxito resultarão no valor do XML elemento que está sendo mascarado. N/A Não
JSONPathsRequest Uma lista de expressões JSONPath que serão avaliadas em relação a payloads JSON (se houver) em o caminho da solicitação. Quaisquer JSONPaths que forem resolvidos com êxito resultarão no valor do A propriedade JSON que está sendo mascarada. N/A Não
JSONPathsResponse Uma lista de expressões JSONPath que serão avaliadas em relação a payloads JSON (se houver) em o caminho de resposta. Quaisquer JSONPaths que forem resolvidos com êxito resultarão no valor do A propriedade JSON que está sendo mascarada. N/A Não
XPathsFault Uma lista de expressões XPath que serão avaliadas em relação a cargas úteis de XML (se houver) no Fluxo de erro, que é executado se uma falha for lançada em qualquer ponto no fluxo. Todos os XPaths que resolvido com sucesso resultará no mascaramento do valor do elemento XML. N/A Não
JSONPathsFault Uma lista de expressões JSON que serão avaliadas em relação aos payloads JSON (se houver) no Fluxo de erro, que é executado se uma falha for lançada em qualquer ponto no fluxo. Qualquer JSONPaths resolvidas com sucesso vão resultar no mascaramento do valor da propriedade JSON. N/A Não
Variáveis

Uma lista de variáveis (predefinidas ou personalizadas) com valores que serão mascarados. Para um lista de variáveis padrão, consulte a Referência de variáveis.

N/A Não

API Mask Configuration

As configurações de máscara são definidas como arquivos formatados em XML ou JSON que você envia e baixa por upload usando a API de gerenciamento RESTful. Para uma lista completa de APIs de mascaramento de dados, consulte Máscaras de dados.

Para acessar as configurações de máscara atuais, basta chamar o recurso da API /maskconfigs na sua organização:

$ curl https://api.enterprise.apigee.com/v1/o/{org_name}/maskconfigs \
-u email

Este exemplo mostra a sintaxe Basic para autenticação. Você pode usar outros tipos de autenticação, como Oauth2 ou SAML:

Para ver as configurações de máscara definidas para proxies de API específicos, você pode chamar o método API /maskconfigs:

$ curl https://api.enterprise.apigee.com/v1/o/{org_name}/apis/{api_name}/maskconfigs \
-u email

Para consultar uma configuração de máscara específica, especifique o nome dela:

$ 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

Para criar uma configuração de máscara, use o verbo POST para enviar um payload que defina a máscara configuração:

$ 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
Para criar uma configuração de máscara com escopo para um proxy de API específico:
$ 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

É possível excluir uma configuração de máscara usando o verbo DELETE:

$ curl -X DELETE \
https://api.enterprise.apigee.com/v1/o/{org_name}/apis/{api_name}/maskconfigs/{maskconfig_name} \
-u email

Este exemplo mostra a sintaxe Basic para autenticação. Você pode usar outros tipos de autenticação, como Oauth2 ou SAML:

A resposta a uma operação DELETE é um código HTTP 204 sem mensagem. conteúdo.

Como usar máscara para namespaces XML

Uma configuração de máscara não requer o elemento <Namespace> em uma definição de XPATH, a menos que um namespace seja definido no payload XML. Isso também acontece se o payload XML usar um namespace padrão.

Por exemplo, o payload XML não define um namespace:

<employee>
    <name>abc</name>
    <age>50</age>
</employee>

Portanto, a configuração da máscara não exige o elemento <Namespace>:

<MaskDataConfiguration>
    <XPathsRequest>
        <XPathRequest>/employee/name</XPathRequest>
    <XPathsRequest>
</MaskDataConfiguration>

Se o payload XML contiver um namespace e um prefixo:

<myco:employee xmlns:myco="http://example.com">
    <myco:name>xyz</myco:name>
    <myco:age>50</myco:age>
</myco:employee>

Em seguida, a definição da configuração da máscara precisa conter o elemento <Namespace>:

<MaskDataConfiguration>
    <Namespaces>
        <Namespace prefix="myco">http://example.com</Namespace>
    </Namespaces>
    <XPathsRequest>
        <XPathRequest>/myco:employee/myco:name</XPathRequest>
    <XPathsRequest>
</MaskDataConfiguration>

Se o payload de XML tiver um namespace, mas nenhum prefixo, o que significa o namespace padrão:

<employee xmlns="http://example.com">
    <name>xyz</name>
    <age>50</age>
</employee>

Em seguida, a configuração da máscara ainda precisa conter o elemento <Namespace>:

<MaskDataConfiguration>
    <Namespaces>
        <Namespace prefix="myco">http://example.com</Namespace>
    </Namespaces>
    <XPathsRequest>
        <XPathRequest>/myco:employee/myco:name</XPathRequest>
    <XPathsRequest>
</MaskDataConfiguration>