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.
Máscara de 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 de mensagens de pedido ou resposta.
- Variáveis de fluxo: pode especificar uma lista de variáveis que devem ser ocultadas no resultado da depuração. Quando especifica as variáveis de fluxo
request.content,response.contentoumessage.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 que usa a API
Para ver a configuração da máscara num ambiente, emita um GET para o seguinte recurso:
/organizations/{org}/environments/{env}/debugmaskPor 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}/debugmaskOpcionalmente, pode transmitir os seguintes parâmetros de consulta:
- Defina o parâmetro de consulta
updateMaskpara 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
replaceRepeatedFieldspara 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
*XPathse*JSONPaths, pode ocultar dados que aparecem nas mensagensrequest,responseoufault. No entanto, o conteúdo completo da mensagem também pode ser capturado por sessões de depuração. Também pode configurarrequest.contentouresponse.contentna secçãovariablespara 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 destaque não são ocultadas com os elementos de configuração, como
requestXPathsouresponseJSONPaths. 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çãovariablesde 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.contentno elementovariablespara 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 de valores para obter um valor de um mapeamento de chaves de 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.