Mascheramento e occultamento dei dati

Stai visualizzando la documentazione di Apigee Edge.
Vai alla documentazione di Apigee X.
informazioni

Quando esegui il debug delle chiamate alle API in Edge, a volte i contenuti possono contenere dati sensibili, come carte di credito o informazioni sanitarie che consentono l'identificazione personale (PHI), che devono essere mascherati.

Edge offre diversi modi per nascondere o mascherare i dati sensibili delle sessioni di Trace e di debug.

Nascondere i dati sensibili

Puoi impedire la visualizzazione di dati sensibili nello strumento Trace e nelle sessioni di debug creando variabili personalizzate con il prefisso "private.".

Ad esempio, quando utilizzi il criterio Operazioni mappa chiave-valore per recuperare i valori da una mappa chiave-valore criptata, formatta i nomi delle variabili come segue per assicurarti che i valori non vengano visualizzati nelle sessioni di traccia o di debug:

<Get assignTo="private.hiddenData">

Nascondere le variabili sensibili è un'alternativa all'utilizzo del mascheramento dei dati, descritto di seguito. La differenza tra nascondere e mascherare è che le variabili nascoste non vengono visualizzate e i valori mascherati vengono sostituiti con asterischi nelle sessioni di Trace e di debug.

Le variabili senza il prefisso "private." vengono visualizzate in testo non crittografato nelle sessioni di Trace e di debug anche se i dati provengono da un datastore criptato, ad esempio una mappa chiave-valore criptata. Utilizza il mascheramento (di seguito) se vuoi mascherare questi valori.

Mascheramento dei dati sensibili

Edge consente di definire "configurazioni di maschera" per mascherare dati specifici nelle sessioni di traccia e debug. Le configurazioni di mascheramento possono essere impostate a livello globale (a livello di organizzazione) o localmente (a livello di proxy API).

Quando i dati sono mascherati, vengono sostituiti con asterischi nell'output della traccia. Ad esempio:

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

Utilizzo delle configurazioni delle maschere

Le configurazioni delle maschere consentono di identificare i dati sensibili in queste origini:
  • Payload XML: utilizzando XPath, identifichi gli elementi XML da filtrare dai payload dei messaggi di richiesta o risposta.
  • Payload JSON: con JSONPath, puoi identificare le proprietà JSON da filtrare dai payload dei messaggi di richiesta o risposta.
  • Variabili di flusso: puoi specificare un elenco di variabili che devono essere mascherate nell'output di debug. Quando specifichi le variabili di flusso request.content, response.content o message.content, anche il corpo della richiesta/risposta viene mascherato.

La struttura di base di una configurazione di una maschera è mostrata dalla seguente rappresentazione 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>

Configurazione di una risorsa di configurazione della maschera

Definisci una configurazione di maschera utilizzando i seguenti elementi.

Nome campo Descrizione Predefinito Campo obbligatorio?
XPathsRequest Un elenco di espressioni XPath che verranno valutate in base a payload XML (se presenti) nel percorso di richiesta. Qualsiasi XPath risolto comporterà il mascheramento del valore dell'elemento XML. N/A No
XPathsResponse Un elenco di espressioni XPath che verranno valutate in base a payload XML (se presenti) nel percorso di risposta. Qualsiasi XPath risolto comporterà il mascheramento del valore dell'elemento XML. N/A No
JSONPathsRequest Un elenco di espressioni JSONPath che verranno valutate in base agli eventuali payload JSON nel percorso di richiesta. Tutti i JSONPath che vengono risolti correttamente causeranno il mascheramento del valore della proprietà JSON. N/A No
JSONPathsResponse Un elenco di espressioni JSONPath che verranno valutate in base agli eventuali payload JSON nel percorso di risposta. Tutti i JSONPath che vengono risolti correttamente causeranno il mascheramento del valore della proprietà JSON. N/A No
XPathsFault Un elenco di espressioni XPath che verranno valutate in base a payload XML (se presenti) nel flusso di errori (che viene eseguito se viene generato un errore in qualsiasi punto del flusso). Eventuali XPath risolti correttamente causeranno il mascheramento del valore dell'elemento XML. N/A No
JSONPathsFault Un elenco di espressioni JSON che verranno valutate in base a payload JSON (se presenti) nel flusso di errori (che viene eseguito se viene generato un errore in qualsiasi punto del flusso). Tutti i JSONPath che vengono risolti correttamente causeranno il mascheramento del valore della proprietà JSON. N/A No
Variabili

Un elenco di variabili (predefinite o personalizzate) i cui valori saranno mascherati. Per un elenco delle variabili predefinite, consulta Informazioni di riferimento sulle variabili.

N/A No

API Mask Configuration

Le configurazioni delle maschere sono definite come file in formato XML o JSON che carichi e scarichi utilizzando l'API di gestione RESTful. Per un elenco completo delle API di mascheramento dei dati, consulta Maschere di dati.

Per visualizzare le configurazioni delle maschere esistenti, puoi semplicemente chiamare la risorsa API /maskconfigs nella tua organizzazione:

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

Questo esempio mostra la sintassi Base per l'autenticazione. Potresti essere in grado di utilizzare altri tipi di autenticazione, ad esempio Oauth2 o SAML.

Per visualizzare le configurazioni delle maschere definite per proxy API specifici, puoi chiamare l'API /maskconfigs:

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

Per visualizzare una configurazione di maschera specifica, specifica il nome della maschera:

$ 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

Per creare una configurazione di maschera, utilizza il verbo POST per inviare un payload che definisce la configurazione della maschera:

$ 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
Per creare una configurazione di maschera che abbia come ambito un proxy API specifico:
$ 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

Puoi eliminare la configurazione di una maschera utilizzando il verbo DELETE:

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

Questo esempio mostra la sintassi Base per l'autenticazione. Potresti essere in grado di utilizzare altri tipi di autenticazione, ad esempio Oauth2 o SAML.

La risposta a un'operazione DELETE è un codice HTTP 204 senza contenuti del messaggio.

Mascheramento per gli spazi dei nomi XML

Una configurazione della maschera non richiede l'elemento <Namespace> in una definizione XPATH, a meno che non venga definito uno spazio dei nomi nel payload XML. Questo vale anche se il payload XML utilizza uno spazio dei nomi predefinito.

Ad esempio, il payload XML non definisce uno spazio dei nomi:

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

Di conseguenza, la configurazione della maschera non richiede l'elemento <Namespace>:

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

Se il payload XML contiene uno spazio dei nomi e un prefisso:

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

Quindi la definizione della configurazione della maschera deve contenere l'elemento <Namespace>:

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

Se il payload XML ha uno spazio dei nomi ma nessun prefisso, ovvero lo spazio dei nomi predefinito:

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

Quindi la configurazione della maschera deve ancora contenere l'elemento <Namespace>:

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