Mascheramento e occultamento dei dati

Stai visualizzando la documentazione di Apigee Edge.
Vai alla sezione Documentazione di Apigee X.
Informazioni

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

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

Nascondere i dati sensibili

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

Ad esempio, quando utilizzi il criterio Operazioni mappa valori chiave 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 Trace o debug:

<Get assignTo="private.hiddenData">

Nascondere le variabili sensibili è un'alternativa al mascheramento dei dati, descritta di seguito. La la differenza tra occultamento e mascheramento è che le variabili nascoste non appaiono affatto e vengono sostituiti da asterischi nelle sessioni di traccia e di debug.

Variabili senza "private." vengono visualizzati in chiaro in Trace sessioni di debug anche se i dati provengono da un datastore criptato, ad esempio una coppia chiave-valore criptata mappa. Utilizza il mascheramento (di seguito) se vuoi mascherare questi valori.

Mascheramento dei dati sensibili

Edge consente di definire le "configurazioni della 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 (nell'API) a livello di proxy).

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

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

Utilizzo delle configurazioni delle maschere

Maschera consente di identificare i dati sensibili nelle seguenti origini:
  • Payload XML: utilizzando XPath, identifica gli elementi XML da filtrare dalla richiesta o payload dei messaggi di risposta.
  • Payload JSON: utilizzando JSONPath, identifichi le proprietà JSON da cui filtrare payload dei messaggi di richiesta o di risposta.
  • Variabili di flusso: puoi specificare un elenco di variabili che devono essere mascherate nel debug. come output. Se specifichi request.content, response.content, o message.content variabili di flusso, anche il corpo della richiesta/risposta mascherato.

La struttura di base di una configurazione di maschera è illustrata 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 maschera risorsa di configurazione

Definisci una configurazione di maschera utilizzando i seguenti elementi.

Nome campo Descrizione Predefinito Obbligatorio?
XPathsRequest Un elenco di espressioni XPath che verranno valutate rispetto agli eventuali payload XML nel del percorso di richiesta. Qualsiasi XPath che venga risolto correttamente darà il valore del file XML dell'elemento mascherato. N/D No
XPathsResponse Un elenco di espressioni XPath che verranno valutate rispetto agli eventuali payload XML nel del tuo percorso di risposta. Qualsiasi XPath che venga risolto correttamente darà il valore del file XML dell'elemento mascherato. N/D No
JSONPathsRequest Un elenco di espressioni JSONPath che verranno valutate rispetto agli eventuali payload JSON in il percorso della richiesta. Qualsiasi JSONPath risolto correttamente restituirà il valore del parametro Proprietà JSON mascherata. N/D No
JSONPathsResponse Un elenco di espressioni JSONPath che verranno valutate rispetto agli eventuali payload JSON in il percorso di risposta. Qualsiasi JSONPath risolto correttamente restituirà il valore del parametro Proprietà JSON mascherata. N/D No
XPathsFault Un elenco di espressioni XPath che verranno valutate rispetto agli eventuali payload XML nel flusso di errori (che viene eseguito se viene generato un errore in qualsiasi punto del flusso). Qualsiasi XPath risolvere correttamente causerà la mascheratura del valore dell'elemento XML. N/D No
JSONPathsFault Un elenco di espressioni JSON che verranno valutate in base agli eventuali payload JSON nel flusso di errori (che viene eseguito se viene generato un errore in qualsiasi punto del flusso). Qualsiasi JSONPath risolti correttamente, il valore della proprietà JSON verrà mascherato. N/D No
Variabili

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

N/D No

API Mask Configuration

Le configurazioni delle maschere sono 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 di maschera 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 riuscire a utilizzare altri tipi di autenticazione, ad esempio Oauth2 o SAML.

Per vedere le configurazioni di maschera definite per proxy API specifici, puoi chiamare il metodo 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 maschera configurazione:

$ 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 una configurazione di 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 di base per l'autenticazione. Potresti riuscire a utilizzare altri tipi di autenticazione, ad esempio Oauth2 o SAML.

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

Mascheramento per gli spazi dei nomi XML

Una configurazione di maschera non richiede l'elemento <Namespace> in un 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>

La definizione della configurazione della maschera deve quindi contenere <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 non un prefisso, ovvero lo spazio dei nomi predefinito:

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

Quindi la configurazione della maschera dovrebbe comunque contenere l'elemento <Namespace>:

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