Você está vendo a documentação do Apigee Edge.
Acesse a
documentação da Apigee X. informações
Quando você depura chamadas de APIs no Edge, às vezes 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, na sigla em inglês) que precisam ser mascarados.
O Edge oferece maneiras diferentes de ocultar ou mascarar dados sensíveis de Trace e sessões de depuração.
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 que você defina "configurações de máscara" para mascarar dados específicos em sessões de rastreamento e depuração. As configurações de mascaramento podem ser definidas globalmente (no nível da organização) ou localmente (no nível do proxy da API).
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
As configurações de máscara permitem identificar dados sensíveis nessas fontes:- 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
oumessage.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 um recurso de configuração de máscaras
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 payloads XML (se houver) no caminho da solicitação. Todos os XPaths que forem resolvidos com êxito vão resultar no mascaramento do valor do elemento XML. | N/A | Não |
XPathsResponse | Uma lista de expressões XPath que serão avaliadas em relação a payloads XML (se houver) no caminho de resposta. Todos os XPaths que forem resolvidos com êxito vão resultar no mascaramento do valor do elemento XML. | N/A | Não |
JSONPathsRequest | Uma lista de expressões JSONPath que serão avaliadas em relação aos payloads JSON (se houver) no caminho da solicitação. Qualquer JSONPaths que sejam resolvidos com êxito vão resultar no mascaramento do valor da propriedade JSON. | N/A | Não |
JSONPathsResponse | Uma lista de expressões JSONPath que serão avaliadas em relação a payloads JSON (se houver) no caminho de resposta. Qualquer JSONPaths que sejam resolvidos com êxito vão resultar no mascaramento do valor da propriedade JSON. | N/A | Não |
XPathsFault | Uma lista de expressões XPath que serão avaliadas em relação a payloads XML (se houver) no fluxo de erros, que será executado se uma falha for gerada em qualquer ponto do fluxo. Todos os XPaths que forem resolvidos com êxito vão 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 a payloads JSON (se houver) no fluxo de erros, que será executada se uma falha for gerada em qualquer ponto do fluxo. Qualquer JSONPath que for resolvido com sucesso vai fazer com que o valor da propriedade JSON seja mascarado. | N/A | Não |
Variáveis |
Uma lista de variáveis (predefinidas ou personalizadas) com valores que serão mascarados. Para ver uma lista de variáveis padrão, consulte Referência de variáveis. |
N/A | Não |
API Mask configuration
As configurações de máscara são definidas como arquivos no formato XML ou JSON que podem ser enviados por upload e transferidos por download usando a API de gerenciamento RESTful. Para uma lista completa das APIs de mascaramento de dados, consulte Máscaras de dados.
Para conferir as configurações de máscara atuais, basta chamar o recurso de 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, chame a
API /maskconfigs
:
$ curl https://api.enterprise.apigee.com/v1/o/{org_name}/apis/{api_name}/maskconfigs \ -u email
Para conferir uma configuração específica, defina o nome da máscara:
$ 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 define a configuração da máscara:
$ 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 emailPara 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 para uma operação DELETE é um código HTTP 204
sem conteúdo de mensagem.
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>