Esta página aplica-se ao Apigee e ao Apigee Hybrid.
Veja a documentação do
Apigee Edge.
Quando depura chamadas de APIs no Apigee, o conteúdo pode, por vezes, conter dados confidenciais, como cartões de crédito ou informações de saúde de identificação pessoal (PHI) que têm de ser ocultadas.
O Apigee oferece diferentes formas de ocultar ou ocultar dados confidenciais de sessões de depuração. Se usar a ocultação para os dados recolhidos em sessões de depuração, o Apigee executa a ocultação nos nós da gateway, antes de transmitir os dados da sessão de depuração para o plano de controlo.
Ocultar dados confidenciais
O Apigee permite-lhe definir
<ServiceRequest>
<request-id>B540A938-F551</request-id>
<customer-name>**********</customer-name>
</ServiceRequest>
A configuração da máscara é um recurso singleton que define ao nível do ambiente. Por predefinição, a ocultação de dados não está em vigor.
A ocultação de dados aplica-se apenas aos dados capturados numa sessão de depuração para um proxy de API. A ocultação de dados não afeta os dados enviados para destinos ou aplicações cliente. Se alterar a configuração da ocultação de dados, tem de iniciar uma nova sessão de depuração para ver o efeito da alteração.
Estrutura de uma configuração de máscara
As configurações de máscara são ficheiros formatados em JSON que lhe permitem identificar dados confidenciais nas seguintes origens:
- Payloads XML: através do XPath, identifica elementos XML a serem filtrados de payloads de mensagens de pedidos ou respostas.
- Payloads JSON: através do JSONPath, identifica as propriedades JSON a filtrar dos payloads das mensagens de pedido ou de resposta.
- Variáveis de fluxo: pode especificar uma lista de variáveis que devem ser ocultadas na saída de depuração. Quando especifica as variáveis de fluxo
request.content
,response.content
oumessage.content
, o corpo do pedido/resposta também é ocultado.
Segue-se um exemplo da estrutura básica de uma configuração de máscara no formato JSON. Para mais informações sobre os campos de configuração da máscara apresentados no exemplo, consulte DebugMask.
{ "namespaces": { "myco": "http://example.com" }, "requestXPaths": [ "/myco:Greeting/myco:User" ], "responseXPaths": [ "/myco:Greeting/myco:User" ], "faultXPaths": [ "/myco:Greeting/myco:User" ], "requestJSONPaths": [ "$.store.book[*].author" ], "responseJSONPaths": [ "$.store.book[*].author" ], "faultJSONPaths": [ "$.store.book[*].author" ], "variables": [ "request.header.user-name", "request.formparam.password", "myCustomVariable" ] }
Ver a configuração da máscara num ambiente através da API
Para ver a configuração da máscara num ambiente, emita um GET para o seguinte recurso:
/organizations/{org}/environments/{env}/debugmask
Por exemplo:
curl "https://apigee.googleapis.com/v1/organizations/myorg/environments/test/debugmask" \ -X GET \ -H "Authorization: Bearer $TOKEN"
Onde $TOKEN
está definido como a sua chave de acesso OAuth 2.0, conforme descrito em
Obter uma chave de acesso OAuth 2.0. Para informações sobre as opções de curl
usadas neste exemplo, consulte a secção
Usar o curl. Para uma descrição das variáveis de ambiente que pode usar, consulte o artigo
Definir
variáveis de ambiente para pedidos de API Apigee.
Segue-se um exemplo da resposta:
{ "name": "organizations/myorg/environments/test/debugmask" "namespaces": { "myco": "http://example.com" }, "requestXPaths": [ "/myco:Greeting/myco:User" ], "responseXPaths": [ "/myco:Greeting/myco:User" ] }
Atualizar a configuração da máscara num ambiente através da API
Para atualizar o recurso singleton de configuração da máscara num ambiente, emita um PATCH para o seguinte recurso:
/organizations/{org}/environments/{env}/debugmask
Opcionalmente, pode transmitir os seguintes parâmetros de consulta:
- Defina o parâmetro de consulta
updateMask
para especificar uma máscara de campo que inclua uma lista separada por vírgulas de nomes totalmente qualificados de campos na máscara de depuração. Por exemplo:"requestJSONPaths"
- Defina o parâmetro de consulta
replaceRepeatedFields
para especificar se os valores existentes na máscara de depuração devem ser substituídos quando fizer uma atualização. Por predefinição, os valores são anexados (false
)
Por exemplo:
curl "https://apigee.googleapis.com/v1/organizations/myorg/environments/test/debugmask" \ -X PATCH \ -H "Authorization: Bearer $TOKEN" \ -H "Content-type: application/json" \ -d \ '{ "namespaces": { "ns1": "http://example.com" }, "requestXPaths": [ "/ns1:employee/ns1:name" ] }'
Onde $TOKEN
está definido como a sua chave de acesso OAuth 2.0, conforme descrito em
Obter uma chave de acesso OAuth 2.0. Para informações sobre as opções de curl
usadas neste exemplo, consulte a secção
Usar o curl. Para uma descrição das variáveis de ambiente que pode usar, consulte o artigo
Definir
variáveis de ambiente para pedidos de API Apigee.
Máscara de XML com âmbito de espaço de nomes
Se quiser ocultar dados XML e esses dados usarem espaços de nomes XML, a configuração da máscara
tem de fazer referência a esses espaços de nomes com o elemento namespaces
. Isto é verdade quer a carga útil XML use um espaço de nomes predefinido ou um prefixo de espaço de nomes.
Por exemplo, suponhamos que quer ocultar o nome do funcionário no payload do pedido e que o XML não usa espaços de nomes XML:
<employee>
<name>Shanmu Tharman</name>
<age>50</age>
</employee>
Por conseguinte, a configuração debugmask não requer o elemento namespaces
:
{ "requestXPaths": [ "/employee/name" ] }
Se a carga útil XML usar espaços de nomes com prefixos:
<cym:employee xmlns:cym="http://cymbalgroup.com" xmlns:id="http://cymbalgroup.com/identity">
<id:name>Shanmu Tharman</id:name>
<id:age>50</id:age>
</cym:employee>
Em seguida, a configuração da máscara deve conter o elemento namespaces
. Pode escolher qualquer prefixo de espaço de nomes válido na configuração debugmask;
o prefixo de espaço de nomes na configuração debugmask pode ser o mesmo que o prefixo de espaço de nomes
usado no XML, mas não é obrigatório.
{ "namespaces": { "cym": "http://cymbalgroup.com", "idns": "http://cymbalgroup.com/identity" }, "requestXPaths": [ "/cym:employee/idns:name" ] }
Se a carga útil XML usar um espaço de nomes sem prefixo, ou seja, o espaço de nomes predefinido:
<employee xmlns="http://cymbalgroup.com" xmlns:id="http://cymbalgroup.com/identity">
<id:name>Shanmu Tharman</id:name>
<id:age>50</id:age>
</employee>
Em seguida, a configuração debugmask tem de definir um prefixo no elemento namespaces
correspondente a esse espaço de nomes predefinido. Pode usar qualquer prefixo único que quiser.
{ "namespaces": { "p1": "http://cymbalgroup.com", "id": "http://cymbalgroup.com/identity" }, "requestXPaths": [ "/p1:employee/id:name" ] }
Outras notas de configuração
-
Com os elementos de configuração
*XPaths
e*JSONPaths
, pode ocultar dados que aparecem nas mensagensrequest
,response
oufault
. No entanto, o conteúdo completo da mensagem também pode ser capturado por sessões de depuração. Também pode configurarrequest.content
ouresponse.content
na secçãovariables
para impedir a apresentação de dados confidenciais. -
Se usar a política ServiceCallout para fazer um pedido, as informações no pedido e na resposta para esse pedido não vão ser ocultadas com os elementos de configuração, como
requestXPaths
ouresponseJSONPaths
. Se quiser ocultar esses dados, deve especificar um nome de variável para as mensagens de pedido e resposta na política ServiceCallout e, em seguida, especificar essas variáveis na secçãovariables
de debugmask. Por exemplo, se a sua política ServiceCallout usar:<ServiceCallout name='SC-1'> <Request variable='rbacRequest'> <Set> <Payload contentType='application/json'>{ ... }</Payload> ...
Em seguida, deve incluir
rbacRequest.content
no elementovariables
para a configuração de debugmask.{ ... "variables": [ "request.content", "response.content", "rbacRequest.content" ] }
Ocultar dados confidenciais
Além da ocultação, pode impedir que os dados confidenciais apareçam na ferramenta de rastreio e nas sessões de depuração escolhendo um nome que comece por private.
para as suas variáveis personalizadas.
Por exemplo, quando usar a Política de operações de mapeamento de chaves-valores para obter um valor de um mapa de chaves-valores, pode escolher o nome da variável da seguinte forma para garantir que o valor não aparece em sessões de rastreio ou depuração:
<KeyValueMapOperations name='KVM-Get-1'>
<Scope>environment</Scope>
<ExpiryTimeInSecs>300</ExpiryTimeInSecs>
<MapName>settings</MapName>
<Get assignTo='private.privatekey'>
<Key>
<Parameter>rsa_private_key</Parameter>
</Key>
</Get>
</KeyValueMapOperations>
As variáveis sem o prefixo private.
são apresentadas em texto não cifrado nas sessões de rastreio e de depuração, mesmo que os dados tenham origem num arquivo de dados encriptado, como um mapa de chaves-valores. Use a ocultação se quiser ocultar estes valores.