Questa pagina si applica ad Apigee e Apigee hybrid.
Visualizza la documentazione di
Apigee Edge.
Quando esegui il debug delle chiamate API in Apigee, a volte i contenuti possono contenere dati sensibili, come carte di credito o informazioni sanitarie che consentono l'identificazione personale (PHI) che devono essere mascherate.
Apigee offre diversi modi per mascherare o nascondere i dati sensibili dalle sessioni di debug. Se utilizzi il mascheramento per i dati raccolti nelle sessioni di debug, Apigee esegue il mascheramento nei nodi gateway prima di trasmettere i dati della sessione di debug al control plane.
Mascheramento dei dati sensibili
Apigee ti consente di definire
<ServiceRequest>
<request-id>B540A938-F551</request-id>
<customer-name>**********</customer-name>
</ServiceRequest>
La configurazione della maschera è una risorsa singleton che definisci a livello di ambiente. Per impostazione predefinita, non è attivo alcun mascheramento dei dati.
Il mascheramento dei dati si applica solo ai dati acquisiti in una sessione di debug per un proxy API. Il mascheramento dei dati non influisce sui dati inviati alle destinazioni o alle applicazioni client. Se modifichi la configurazione della maschera dei dati, devi avviare una nuova sessione di debug per visualizzare l'effetto della modifica.
Struttura di una configurazione della maschera
Le configurazioni di mascheramento sono file in formato JSON che ti consentono di identificare i dati sensibili nelle seguenti origini:
- Payload XML: utilizzando XPath, identifichi gli elementi XML da filtrare dai payload dei messaggi di richiesta o di risposta.
- Payload JSON:utilizzando JSONPath, identifichi le proprietà JSON da filtrare dai payload dei messaggi di richiesta o risposta.
- Variabili di flusso:puoi specificare un elenco di variabili da mascherare nell'output di debug. Quando specifichi le variabili di flusso
request.content
,response.content
omessage.content
, viene mascherato anche il corpo della richiesta/risposta.
Di seguito è riportato un esempio della struttura di base di una configurazione della maschera in formato JSON. Per ulteriori informazioni sui campi di configurazione della maschera mostrati nell'esempio, consulta 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" ] }
Visualizzazione della configurazione della maschera in un ambiente utilizzando l'API
Per visualizzare la configurazione della maschera in un ambiente, invia una richiesta GET alla seguente risorsa:
/organizations/{org}/environments/{env}/debugmask
Ad esempio:
curl "https://apigee.googleapis.com/v1/organizations/myorg/environments/test/debugmask" \ -X GET \ -H "Authorization: Bearer $TOKEN"
Dove $TOKEN
è impostato sul tuo token di accesso OAuth 2.0, come descritto in
Ottenere un token di accesso OAuth 2.0. Per informazioni sulle opzioni curl
utilizzate in questo esempio, consulta la sezione
Utilizzare curl. Per una descrizione delle variabili di ambiente che puoi utilizzare, consulta
Impostazione
delle variabili di ambiente per le richieste API Apigee.
Di seguito è riportato un esempio di risposta:
{ "name": "organizations/myorg/environments/test/debugmask" "namespaces": { "myco": "http://example.com" }, "requestXPaths": [ "/myco:Greeting/myco:User" ], "responseXPaths": [ "/myco:Greeting/myco:User" ] }
Aggiornamento della configurazione della maschera in un ambiente utilizzando l'API
Per aggiornare la risorsa singleton di configurazione della maschera in un ambiente, invia una PATCH alla seguente risorsa:
/organizations/{org}/environments/{env}/debugmask
Se vuoi, puoi passare i seguenti parametri di ricerca:
- Imposta il parametro di query
updateMask
per specificare una maschera di campo che includa un elenco separato da virgole di nomi completi dei campi nella maschera di debug. Ad esempio:"requestJSONPaths"
- Imposta il parametro di query
replaceRepeatedFields
per specificare se sostituire i valori esistenti nella maschera di debug durante l'aggiornamento. Per impostazione predefinita, i valori vengono aggiunti (false
)
Ad esempio:
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" ] }'
Dove $TOKEN
è impostato sul tuo token di accesso OAuth 2.0, come descritto in
Ottenere un token di accesso OAuth 2.0. Per informazioni sulle opzioni curl
utilizzate in questo esempio, consulta la sezione
Utilizzare curl. Per una descrizione delle variabili di ambiente che puoi utilizzare, consulta
Impostazione
delle variabili di ambiente per le richieste API Apigee.
Mascheramento di XML con ambito a livello di spazio dei nomi
Se vuoi mascherare i dati XML e questi utilizzano spazi dei nomi XML, la configurazione della maschera
deve fare riferimento a questi spazi dei nomi con l'elemento namespaces
. Ciò vale sia che
il payload XML utilizzi uno spazio dei nomi predefinito o un prefisso dello spazio dei nomi.
Ad esempio, supponiamo di voler mascherare il nome del dipendente nel payload della richiesta e che l'XML non utilizzi spazi dei nomi XML:
<employee>
<name>Shanmu Tharman</name>
<age>50</age>
</employee>
Pertanto, la configurazione di debugmask non richiede l'elemento namespaces
:
{ "requestXPaths": [ "/employee/name" ] }
Se il payload XML utilizza spazi dei nomi con prefissi:
<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>
La configurazione della maschera deve quindi contenere l'elemento namespaces
. Puoi scegliere qualsiasi prefisso dello spazio dei nomi valido nella configurazione debugmask;
il prefisso dello spazio dei nomi nella configurazione debugmask può essere uguale a quello
utilizzato nell'XML, ma non è obbligatorio.
{ "namespaces": { "cym": "http://cymbalgroup.com", "idns": "http://cymbalgroup.com/identity" }, "requestXPaths": [ "/cym:employee/idns:name" ] }
Se il payload XML utilizza uno spazio dei nomi senza prefisso, ovvero lo spazio dei nomi predefinito:
<employee xmlns="http://cymbalgroup.com" xmlns:id="http://cymbalgroup.com/identity">
<id:name>Shanmu Tharman</id:name>
<id:age>50</id:age>
</employee>
Quindi, la configurazione debugmask deve comunque definire un prefisso nell'elemento namespaces
corrispondente a quello spazio dei nomi predefinito. Puoi utilizzare qualsiasi prefisso univoco.
{ "namespaces": { "p1": "http://cymbalgroup.com", "id": "http://cymbalgroup.com/identity" }, "requestXPaths": [ "/p1:employee/id:name" ] }
Altre note sulla configurazione
-
Con gli elementi di configurazione
*XPaths
e*JSONPaths
, puoi mascherare i dati visualizzati nei messaggirequest
,response
ofault
. Tuttavia, il contenuto completo del messaggio potrebbe essere acquisito anche dalle sessioni di debug. Potresti anche configurarerequest.content
oresponse.content
nella sezionevariables
per impedire la visualizzazione di dati sensibili. -
Se utilizzi il ServiceCallout policy per effettuare una richiesta, le informazioni nella richiesta e nella risposta per questo callout non verranno mascherate utilizzando gli elementi di configurazione come
requestXPaths
oresponseJSONPaths
. Se vuoi mascherare questi dati, devi specificare un nome variabile per i messaggi di richiesta e risposta nel criterio ServiceCallout, quindi specificare queste variabili nella sezionevariables
di debugmask. Ad esempio, se la norma ServiceCallout utilizza:<ServiceCallout name='SC-1'> <Request variable='rbacRequest'> <Set> <Payload contentType='application/json'>{ ... }</Payload> ...
Poi devi includere
rbacRequest.content
nell'elementovariables
per la configurazione di debugmask.{ ... "variables": [ "request.content", "response.content", "rbacRequest.content" ] }
Nascondere i dati sensibili
Oltre al mascheramento, puoi impedire che i dati sensibili vengano visualizzati nello strumento Trace
e nelle sessioni di debug scegliendo un nome che inizi con private.
per le variabili personalizzate.
Ad esempio, quando utilizzi il Key Value Map Operations policy per recuperare un valore da una mappa chiave-valore, puoi scegliere il nome della variabile come segue per assicurarti che il valore non venga visualizzato nelle sessioni di Trace o di debug:
<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>
Le variabili senza il prefisso private.
vengono visualizzate in testo normale nelle sessioni di Trace e
debug anche se i dati provengono da un datastore criptato, ad esempio una mappa
chiave-valore. Utilizza la maschera se vuoi mascherare questi valori.