Utiliser le magasin sécurisé

Vous consultez la documentation d'Apigee Edge.
Consultez la documentation Apigee X.
en savoir plus

Utiliser les API de service de magasin sécurisé

Le service de stockage sécurisé vous permet de stocker des données sensibles, telles que les identifiants de sécurité pour les services backend, dans un format chiffré afin d'être protégées contre toute utilisation non autorisée. Ces zones de stockage sécurisé sont appelées "coffres-forts" et peuvent s'étendre au niveau de l'organisation ou de l'environnement sur Apigee Edge.

Par exemple, le magasin sécurisé peut être utilisé pour stocker un mot de passe requis par une application Node.js afin d'accéder à une ressource protégée, telle qu'un serveur de base de données. Vous pouvez stocker le mot de passe dans le magasin sécurisé via une API avant le déploiement. L'application pourra alors rechercher la valeur au moment de l'exécution.

Ainsi, il n'est pas nécessaire d'inclure le mot de passe dans le système de contrôle du code source ni de le déployer avec le code source Node.js dans Apigee Edge. À la place, la valeur est stockée par Apigee sous forme chiffrée et n'est récupérée que lorsque l'application en a besoin.

Pour en savoir plus sur les API du magasin sécurisé, consultez Vault. Les sections suivantes présentent également l'utilisation de l'API Secure Store.

Stockage des données par organisation

Chaque organisation Apigee Edge possède un ensemble de magasins sécurisés et chaque environnement dispose d'un magasin supplémentaire. De cette façon, les organisations qui ont des exigences de sécurité différentes selon les backends peuvent stocker différentes valeurs sécurisées. Cette section décrit le stockage par organisation.

Utilisation

  • Récupérez les noms de tous les magasins sécurisés:
GET /o/{organization}/vaults
  • Récupérez une liste d'entrées (mais pas leurs valeurs chiffrées) dans un coffre-fort nommé.
GET /o/{organization}/vaults/{name}
  • Récupérer une seule entrée (mais pas sa valeur chiffrée).

GET /o/{organization}/vaults/{name}/entries/{entryname}
  • Créez un coffre-fort nommé "name" sans valeur:

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
  • Placez une nouvelle entrée dans le coffre-fort avec le nom et la valeur sécurisée spécifiés.

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
  • Remplacez la valeur de l'entrée spécifiée par une nouvelle valeur:

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

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

  -d 'verymoresecret' -X PUT
  • Renvoie "true" si la valeur spécifiée correspond à ce qui se trouve déjà dans le magasin, et "false" dans le cas contraire. Dans les deux cas, le code d’état HTTP 200 est utilisé. Cela peut servir à valider le contenu du magasin. Notez qu'une fois stockée, aucune API ne permet de récupérer la valeur non chiffrée:

    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
    
  • Supprimez l'entrée Vault spécifiée:
DELETE /o/{organization}/vaults/{vaultname}/entries/{entryname}
  • Supprimez tout le coffre-fort.

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

Stocker des données par environnement

Vous pouvez également stocker des données par environnement Apigee Edge. Dans ce cas, les données sont limitées à un environnement (tel que "prod"). Grâce à cette fonctionnalité, différentes valeurs peuvent être stockées au moment de l'exécution en fonction de l'emplacement d'exécution du script Node.js.

Utilisation

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}

Récupérer des valeurs à partir du magasin sécurisé dans Node.js

Installer apigee-access

Pour utiliser apigee-access dans votre code Node.js, vous devez d'abord l'installer. Exemple :

  1. cd pour accéder au répertoire racine de votre projet.
  2. Exécutez : npm install apigee-access --save

distantes

La fonction apigee-access getVault() permet de récupérer un coffre-fort particulier, soit par organisation, soit en fonction de l'environnement actuel dans lequel le code Node.js est exécuté.

La méthode getVault() comporte deux paramètres:

  • Nom du magasin sécurisé à récupérer.
  • Le champ d'application, qui peut être organization ou environment. Si aucune valeur n'est spécifiée, organization est supposé.

L'objet renvoyé par getVault() a deux fonctions:

  • getKeys(callback): renvoie un tableau contenant les noms de toutes les clés du coffre-fort spécifié. La fonction de rappel sera appelée avec deux arguments: une erreur en cas d'échec de l'opération ou "undefined" dans le cas contraire, et le tableau réel en tant que deuxième argument.
  • get(key, Callback): renvoie la valeur sécurisée associée à une clé spécifique. La fonction de rappel sera appelée avec deux arguments: une erreur si l'opération échoue, ou "undefined" dans le cas contraire, et la valeur réelle comme deuxième argument.

Exemple

Voici un exemple Node.js qui montre comment obtenir une valeur à partir d'un coffre-fort. Le module apigee-access est installé pour que ce code fonctionne, comme expliqué précédemment.

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