Utilizzare l'archivio protetto

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

Utilizzo delle API di servizio dell'archivio sicuro

Il servizio di archiviazione sicura consente di archiviare i dati sensibili, ad esempio le credenziali di sicurezza per i servizi di backend, in formato criptato, in modo che siano protetti dall'uso non autorizzato. Queste aree di archiviazione sicure sono chiamate "vault" e possono limitare l'ambito a livello di organizzazione o di ambiente su Apigee Edge.

Ad esempio, l'archivio sicuro può essere utilizzato per archiviare una password richiesta da un'applicazione Node.js al fine di raggiungere una risorsa protetta, come un server di database. Puoi archiviare la password nell'archivio sicuro tramite un'API prima del deployment e l'applicazione può cercare il valore in fase di runtime.

In questo modo, non è quindi necessario includere la password nel sistema di controllo del codice sorgente o eseguirne il deployment su Apigee Edge insieme al codice sorgente Node.js. Il valore viene invece archiviato da Apigee in formato criptato e verrà recuperato solo quando l'applicazione ne ha bisogno.

Per la documentazione sulle API dell'archivio sicuro, vedi Vault. Le seguenti sezioni forniscono anche una panoramica sull'utilizzo dell'API Secure Store.

Archiviazione dei dati in base all'organizzazione

Ogni organizzazione Apigee Edge dispone di un insieme di archivi sicuri e ogni ambiente ha un archivio aggiuntivo. In questo modo le organizzazioni con requisiti di sicurezza diversi per backend diversi possono archiviare valori sicuri diversi. Questa sezione descrive l'archiviazione per organizzazione.

Utilizzo

  • Recupera i nomi di tutti gli archivi protetti:
GET /o/{organization}/vaults
  • Recupera un elenco di voci (ma non i relativi valori criptati) da un vault denominato.
GET /o/{organization}/vaults/{name}
  • Recupera una singola voce (ma non il relativo valore criptato).

GET /o/{organization}/vaults/{name}/entries/{entryname}
  • Crea un nuovo vault denominato "name" senza valori:

POST /o/{organization}/vaults

{ "name": "{name}" }

curl https://api.enterprise.apigee.com/v1/o/testorg/vaults
  -H "Content-Type: application/json"
  -d '{"name": "test2" }' -X POST
  • Inserisci una nuova voce nell'insieme di credenziali con il nome e il valore sicuro specificati.

POST /o/{organization}/vaults/{vaultname}/entries

{ "name": "{entryname}", "value": "{securevalue}" }


curl https://api.enterprise.apigee.com/v1/o/testorg/vaults/test2/entries
  -H "Content-Type: application/json"
  -d '{"name": "value1", "value": "verysecret" }' -X POST
  • Sostituisci il valore della voce specificata con un nuovo valore:

PUT /o/{organization}/vaults/{vaultname}/entries/{entryname}

curl https://api.enterprise.apigee.com/v1/o/testorg/vaults/test2/entries/value1

  -d 'verymoresecret' -X PUT
  • Restituisce "true" se il valore specificato corrisponde a ciò che è già presente nello store e "false" in caso contrario. In entrambi i casi, viene utilizzato un codice di stato HTTP 200. Può essere utilizzato per convalidare i contenuti dello store. Tieni presente che, una volta archiviati, non esistono API per recuperare il valore non criptato:

    POST /o/{organization}/vaults/{vaultname}/entries/{entryname}?action=verify
    
    curl https://api.enterprise.apigee.com/v1/o/testorg/vaults/test2/entries/value1?action=verify
      -d 'verymoresecret'  -X POST
    
  • Elimina la voce dell'insieme di credenziali specificata:
DELETE /o/{organization}/vaults/{vaultname}/entries/{entryname}
  • Elimina l'intero vault.

    DELETE /o/{organization}/vaults/{name}
    

Archiviazione dei dati per ambiente

Puoi anche archiviare i dati per ambiente Apigee Edge. In questo caso, l'ambito dei dati è un ambiente (ad esempio "prod"). Con questa funzionalità, in fase di runtime è possibile archiviare diversi valori a seconda di dove è in esecuzione lo script Node.js.

Utilizzo

GET /o/{organization}/e/{env}/vaults

GET /o/{organization}/e/{env}/vaults/{name}

GET /o/{organization}/e/{env}/vaults/{name}/entries/{entryname}

POST /o/{organization}/e/{env}/vaults

POST /o/{organization}/e/{env}/vaults/{vaultname}/entries

PUT /o/{organization}/e/{env}/vaults/{vaultname}/entries/{entryname}

POST /o/{organization}/e/{env}/vaults/{vaultname}/entries/{entryname}?action=verify

DELETE /o/{organization}/e/{env}/vaults/{vaultname}/entries/{entryname}

DELETE /o/{organization}/e/{env}/vaults/{name}

Recupero dei valori dall'archivio sicuro in Node.js

Installazione di apigee-access in corso

Per utilizzare apigee-access nel codice Node.js, devi prima installarlo. Ad esempio:

  1. cd nella directory principale del progetto.
  2. Esegui: npm install apigee-access --save

Funzioni

La funzione getVault() apigee-access viene utilizzata per recuperare un particolare vault, per organizzazione o in base all'ambiente attuale in cui è in esecuzione il codice Node.js.

getVault() richiede due parametri:

  • Il nome dell'archivio sicuro da recuperare.
  • L'ambito, che può essere organization o environment. Se non specificato, viene usato il valore organization.

L'oggetto restituito da getVault() ha due funzioni:

  • getKeys(callback): restituisce un array contenente i nomi di tutte le chiavi nell'insieme di credenziali specificato. La funzione di callback verrà chiamata con due argomenti: un errore se l'operazione non va a buon fine o "undefined" in caso contrario e l'array effettivo come secondo argomento.
  • get(key, callback): restituisce il valore sicuro associato a una determinata chiave. La funzione di callback verrà chiamata con due argomenti: un errore se l'operazione non va a buon fine o "undefined" in caso contrario e il valore effettivo come secondo argomento.

Esempio

Ecco un esempio Node.js che mostra come ottenere un valore da un vault. Il modulo apigee-access è installato per consentire il funzionamento di questo codice, come spiegato in precedenza.

var apigee = require('apigee-access');
   var orgVault = apigee.getVault('vault1', 'organization');
   orgVault.get('key1', function(err, secretValue) {
   // use the secret value here
});