Mascheramento e occultamento dei dati

Stai visualizzando la documentazione di Apigee Edge.
Consulta la documentazione di Apigee X.
info

Quando esegui il debug delle chiamate API in Edge, a volte il contenuto può includere 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 dalle 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 Key Value Map Operations 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 in Trace o nelle sessioni di debug:

<Get assignTo="private.hiddenData">

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

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

Mascherare i dati sensibili

Edge ti consente di definire "configurazioni di maschere" per mascherare dati specifici nelle sessioni di trace e di debug. Le configurazioni di maschere possono essere impostate a livello globale (a livello di organizzazione) o locale (a livello di proxy API ).

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

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

Utilizzare le configurazioni di maschere

Le configurazioni di maschere ti 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: 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 che devono essere mascherate nell'output di debug Quando specifichi le variabili di flusso request.content, response.content, o message.content, viene mascherato anche il corpo della richiesta/risposta.

La struttura di base di una configurazione di maschere è 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>

Configurare una risorsa di configurazione di maschere

Definisci una configurazione di maschere utilizzando i seguenti elementi.

Nome campo Descrizione Predefinito Obbligatorio?
XPathsRequest Un elenco di espressioni XPath che verranno valutate in base ai payload XML (se presenti) nel percorso della richiesta. Tutti gli XPath risolti correttamente comporteranno la maschera del valore dell'elemento XML. N/D No
XPathsResponse Un elenco di espressioni XPath che verranno valutate in base ai payload XML (se presenti) nel percorso della risposta. Tutti gli XPath risolti correttamente comporteranno la maschera del valore dell'elemento XML. N/D No
JSONPathsRequest Un elenco di espressioni JSONPath che verranno valutate in base ai payload JSON (se presenti) nel percorso della richiesta. Tutti i JSONPath risolti correttamente comporteranno la maschera del valore della proprietà JSON. N/D No
JSONPathsResponse Un elenco di espressioni JSONPath che verranno valutate in base ai payload JSON (se presenti) nel percorso della risposta. Tutti i JSONPath risolti correttamente comporteranno la maschera del valore della proprietà JSON. N/D No
XPathsFault Un elenco di espressioni XPath che verranno valutate in base ai payload XML (se presenti) nel flusso di errori (che viene eseguito se viene generato un errore in qualsiasi punto del flusso). Tutti gli XPath che risolti correttamente comporteranno la maschera del valore dell'elemento XML. N/D No
JSONPathsFault Un elenco di espressioni JSON che verranno valutate in base ai payload JSON (se presenti) nel flusso di errori (che viene eseguito se viene generato un errore in qualsiasi punto del flusso). Tutti i JSONPath risolti correttamente comporteranno la maschera del valore della proprietà JSON. N/D No
Variables

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

N/D No

API di configurazione di maschere

Le configurazioni di 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 maschera dei dati, consulta Maschere dei dati.

Per visualizzare le configurazioni di 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 di base per l'autenticazione. Potresti essere in grado di utilizzare altri tipi di autenticazione, come Oauth2 o SAML.

Per visualizzare le configurazioni di 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 maschere 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 maschere, utilizza il verbo POST per inviare un payload che definisce la configurazione di maschere:

$ 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 maschere con ambito a 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 una configurazione di maschere 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 di base per l'autenticazione. Potresti essere in grado di utilizzare altri tipi di autenticazione, come Oauth2 o SAML.

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

Mascherare gli spazi dei nomi XML

Una configurazione di maschere non richiede l'elemento <Namespace> in una definizione XPATH , a meno che non sia 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>

Pertanto, la configurazione di maschere 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>

La definizione della configurazione di maschere 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, il che significa lo spazio dei nomi predefinito:

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

La configurazione di maschere deve comunque contenere l'elemento <Namespace>:

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