À propos des clés de chiffrement Apigee

Cette page s'applique à Apigee, mais pas à Apigee hybrid.

Consultez la documentation d' Apigee Edge.

.

Cette section décrit les types de clés de chiffrement et explique comment les créer.

Au cours du processus de configuration Apigee, vous générez les clés de chiffrement Cloud Key Management Service suivantes :

Type de clé Date de création Description
Clé de chiffrement du plan de contrôle

Console Google Cloud :

Interface de ligne de commande (CLI) :

Lorsque vous utilisez la résidence des données, Apigee utilise cette clé pour chiffrer les données Analytics stockées dans BigQuery, dans le projet locataire.

Chiffre les proxys d'API, les serveurs cibles, les truststores et les keystores, les données d'analyse et tout autre élément partagé entre les environnements d'exécution.

Apigee vous demandera de fournir deux clés CMEK de plan de contrôle. Cette clé et une clé de chiffrement des données client de l'API.

L'emplacement de la clé de chiffrement du plan de contrôle doit correspondre à celui du plan de contrôle.

Clé de chiffrement des données client de l'API

Console Google Cloud :

Interface de ligne de commande (CLI) :

Lorsque vous utilisez la résidence des données, Apigee a besoin d'une clé de région unique, en plus de la clé de chiffrement du plan de contrôle, qui est utilisée pour les services qui ne sont disponibles que dans une seule région (par exemple, Dataflow et Cloud SQL).

L'emplacement de la clé de chiffrement des données client de l'API doit se trouver dans l'emplacement du plan de contrôle.

Clé de chiffrement de base de données d'exécution

Console Google Cloud :

Interface de ligne de commande (CLI) :

Chiffre les données d'application telles que les KVM, le cache et les codes secrets du client, qui sont ensuite stockés dans la base de données.

Il existe une clé de chiffrement de base de données d'exécution par organisation. Toutes les instances/régions d'une organisation partagent la même clé de chiffrement de base de données d'exécution.

La clé de chiffrement de base de données d'exécution est compatible avec tous les emplacements Cloud KMS qui sont compatibles avec Cloud HSM et Cloud EKM. Nous vous recommandons d'utiliser un emplacement multirégional (tel que us ou europe) ou un emplacement birégional (eur5, nam4) lors de la création de cette clé.

L'emplacement de la clé de chiffrement de base de données d'exécution doit se trouver dans l'emplacement du plan de contrôle lorsque vous utilisez la résidence des données.

Clé de chiffrement du disque

Console Google Cloud :

Interface de ligne de commande (CLI) :

Cette étape chiffre les données de l'instance d'exécution avant qu'elles ne soient écrites sur le disque.

Les types de données chiffrées incluent le système de gestion des clés (KMS, Key Management System), les mappages clé-valeur (KVM), la définition, les buckets et les compteurs de quotas, ainsi que toutes les données mises en cache. Les données KMS incluent des produits d'API, des développeurs, des applications de développeur, des jetons OAuth (y compris des jetons d'accès, des jetons d'actualisation et des codes d'autorisation), et des clés API.

Cette clé est située dans la même région que l'instance d'exécution. Lors de la création d'une clé, faites correspondre l'emplacement de la clé à l'emplacement de votre instance d'exécution.

Chaque combinaison instance/région possède sa propre clé de chiffrement du disque.

Points essentiels

Lorsque vous créez les clés de chiffrement (disque et base de données d'exécution), gardez à l'esprit les points suivants :

  • L'emplacement de la clé de chiffrement de base de données d'exécution Apigee est compatible avec tous les emplacements Cloud KMS qui sont compatibles avec Cloud HSM et Cloud EKM.
  • L'emplacement de la clé de chiffrement du disque doit correspondre à celui de l'instance d'exécution utilisée par la clé.
  • Une fois défini, l'emplacement d'une clé ne peut pas être modifié.
  • Toutes les clés doivent se trouver dans un trousseau.
  • Les clés de type différent doivent être placées dans des trousseaux de clés distincts. Les clés de chiffrement de disque ne peuvent pas se trouver dans le même trousseau de clés que votre clé de chiffrement de base de données d'exécution.
  • Les clés doivent avoir un usage (purpose). Si vous utilisez la ligne de commande pour générer vos nouvelles clés, définissez purpose sur encryption. Si vous utilisez la console Google Cloud, choisissez le paramètre Chiffrement/déchiffrement symétriques pour l'usage spécifié.
  • Les clés sont définies par un chemin d'accès de clé au format suivant :
    projects/PROJECT_ID/locations/KEY_LOCATION/keyRings/KEYRING_NAME/cryptoKeys/KEY_NAME

Répertorier les clés existantes

Si vous avez déjà créé des clés de chiffrement Cloud KMS pour Apigee, vous pouvez les utiliser au lieu d'en créer d'autres au cours de la configuration.

Pour répertorier toutes les clés KMS d'un trousseau de clés :

Exécutez la commande gcloud kms keys list :

gcloud kms keys list --keyring KEY_RING_NAME --location KEY_RING_LOCATION

Remplacez les éléments suivants :

  • KEY_RING_NAME : nom du trousseau de clés. Exemple : my-key-ring.
  • KEY_RING_LOCATION : emplacement physique du trousseau de clés, par exemple us-west1.

Vous pouvez également afficher vos clés dans la console Google Cloud.

Générer de nouvelles clés sur la ligne de commande

Vous pouvez créer un trousseau de clés et une clé sur la ligne de commande ou dans la console Google Cloud.

Chaque type de clé doit avoir son propre trousseau de clés. Par exemple, vos clés de chiffrement de disque peuvent être stockées dans un trousseau de clés, mais votre clé de chiffrement de base de données d'exécution doit être stockée dans un trousseau de clés distinct.

Les étapes suivantes décrivent comment créer un trousseau de clés et une clé, et comment accorder l'accès à l'agent de service Apigee pour qu'il puisse utiliser la nouvelle clé. Vous devez créer des trousseaux de clés et des clés pour le plan de contrôle (si vous utilisez la résidence des données), la base de données d'exécution et le disque d'exécution.

  1. Créez un trousseau de clés à l'aide de la commande gcloud kms keyrings create :

    Plan de contrôle

    Lorsque la résidence des données est activée, créez un trousseau de clés pour le plan de contrôle et un autre pour la région des données client.

    gcloud kms keyrings create CONTROL_PLANE_KEY_RING_NAME \
    --location CONTROL_PLANE_LOCATION \
    --project PROJECT_ID
    gcloud kms keyrings create CONSUMER_DATA_KEY_RING_NAME \
    --location CONSUMER_DATA_REGION \
    --project PROJECT_ID

    Remplacez les éléments suivants :

    • CONTROL_PLANE_KEY_RING_NAME : nom du trousseau de clés du plan de contrôle
    • CONTROL_PLANE_LOCATION : emplacement physique où les données du plan de contrôle Apigee seront stockées.
    • PROJECT_ID : ID de projet Google Cloud.
    • CONSUMER_DATA_KEY_RING_NAME : nom du trousseau de clés de données client.
    • CONSUMER_DATA_REGION : sous-région de la région du plan de contrôle. Vous devez spécifier les paramètres CONTROL_PLANE_LOCATION et CONSUMER_DATA_REGION.

    Base de données d'exécution

    gcloud kms keyrings create RUNTIMEDB_KEY_RING_NAME \
      --location RUNTIMEDB_KEY_LOCATION \
      --project PROJECT_ID

    Remplacez les éléments suivants :

    • RUNTIMEDB_KEY_RING_NAME : nom du trousseau de clés de base de données que vous créez.
    • RUNTIMEDB_KEY_LOCATION : emplacement physique du trousseau de clés de base de données.
    • PROJECT_ID : ID de projet Google Cloud.

    L'emplacement de la clé de chiffrement de la base de données d'exécution Apigee est compatible avec tous les emplacements Cloud KMS qui acceptent Cloud HSM et Cloud EKM.

    Disque d'exécution

    gcloud kms keyrings create RUNTIMEDISK_KEY_RING_NAME \
      --location RUNTIMEDISK_KEY_LOCATION \
      --project PROJECT_ID

    Remplacez les éléments suivants :

    • RUNTIMEDISK_KEY_RING_NAME : nom du trousseau de clés du disque que vous créez.
    • RUNTIMEDISK_KEY_LOCATION : emplacement physique du trousseau de clés du disque.
    • PROJECT_ID : ID de projet Google Cloud.

    Vérifiez que le trousseau de clés de disque est défini sur le même emplacement que l'instance. Chaque instance et chaque trousseau de clés doit avoir son propre emplacement.

    gcloud kms keyrings list \
    --location  \
    --project $PROJECT_ID

    gcloud kms keyrings describe $DISK_KEY_RING_NAME \
    --location  \
    --project $PROJECT_ID
  2. Le nom du trousseau de clés doit être unique au sein de votre organisation. Si vous créez des régions supplémentaires, les noms des trousseaux de clés associés à ces régions ne peuvent pas être identiques à ceux des trousseaux de clés existants.

  3. Créez une clé à l'aide de la commande kms keys create :

    Plan de contrôle

    Lorsque la résidence des données est activée, créez un trousseau de clés pour le plan de contrôle et un autre pour la région des données client.

    gcloud kms keys create CONTROL_PLANE_KEY_NAME \
    --keyring CONTROL_PLANE_KEY_RING_NAME \
    --location CONTROL_PLANE_LOCATION \
    --purpose "encryption" \
    --project PROJECT_ID
    gcloud kms keys create CONSUMER_DATA_KEY_NAME \
    --keyring CONSUMER_DATA_KEY_RING_NAME \
    --location CONSUMER_DATA_REGION \
    --purpose "encryption" \
    --project PROJECT_ID

    Remplacez les éléments suivants :

    • CONTROL_PLANE_KEY_NAME : nom de la clé du plan de contrôle
    • CONTROL_PLANE_KEY_RING_NAME : nom du trousseau de clés du plan de contrôle
    • CONTROL_PLANE_LOCATION : emplacement physique où les données du plan de contrôle Apigee seront stockées.
    • PROJECT_ID : ID de projet Google Cloud.
    • CONSUMER_DATA_KEY_NAME : nom de la clé de données client.
    • CONSUMER_DATA_KEY_RING_NAME : nom du trousseau de clés de données client.
    • CONSUMER_DATA_REGION : sous-région de la région du plan de contrôle. Vous devez spécifier les paramètres CONTROL_PLANE_LOCATION et CONSUMER_DATA_REGION.

    Base de données d'exécution

    gcloud kms keys create RUNTIMEDB_KEY_NAME \
      --keyring RUNTIMEDB_KEY_RING_NAME \
      --location RUNTIMEDB_KEY_LOCATION \
      --purpose "encryption" \
      --project PROJECT_ID

    Remplacez les éléments suivants :

    • RUNTIMEDB_KEY_NAME : nom de la clé de base de données que vous créez.
    • RUNTIMEDB_KEY_RING_NAME : nom du trousseau de clés de base de données que vous créez.
    • RUNTIMEDB_KEY_LOCATION : emplacement physique du trousseau de clés de base de données.
    • PROJECT_ID : ID de projet Google Cloud.

    Disque d'exécution

    gcloud kms keys create RUNTIMEDISK_KEY_NAME \
      --keyring RUNTIMEDISK_KEY_RING_NAME \
      --location RUNTIMEDISK_KEY_LOCATION \
      --purpose "encryption" \
      --project PROJECT_ID

    Remplacez les éléments suivants :

    • RUNTIMEDISK_KEY_NAME : nom de la clé de disque que vous créez.
    • RUNTIMEDISK_KEY_RING_NAME : nom du trousseau de clés du disque que vous créez.
    • RUNTIMEDISK_KEY_LOCATION : emplacement physique du trousseau de clés du disque.
    • PROJECT_ID : ID de projet Google Cloud.

    Cette commande crée la clé et l'ajoute au trousseau.

    Lorsque vous faites référence à une clé, utilisez l'ID de clé.

  4. Accordez à l'agent de service Apigee l'accès à la nouvelle clé à l'aide de la commande gcloud kms keys add-iam-policy-binding :

    Plan de contrôle

    Lorsque la résidence des données est activée, créez un trousseau de clés pour le plan de contrôle et un autre pour la région des données client.

    gcloud kms keys add-iam-policy-binding CONTROL_PLANE_KEY_NAME \
    --location CONTROL_PLANE_LOCATION \
    --keyring CONTROL_PLANE_KEY_RING_NAME \
    --member "serviceAccount:service-PROJECT_NUMBER@gcp-sa-apigee.iam.gserviceaccount.com" \
    --role roles/cloudkms.cryptoKeyEncrypterDecrypter \
    --project PROJECT_ID
    
    gcloud kms keys add-iam-policy-binding CONSUMER_DATA_KEY_NAME \
    --location CONSUMER_DATA_REGION \
    --keyring CONSUMER_DATA_KEY_RING_NAME \
    --member "serviceAccount:service-PROJECT_NUMBER@gcp-sa-apigee.iam.gserviceaccount.com" \
    --role roles/cloudkms.cryptoKeyEncrypterDecrypter \
    --project PROJECT_ID
    

    Remplacez les éléments suivants :

    • CONTROL_PLANE_KEY_NAME : nom de la clé du plan de contrôle
    • CONTROL_PLANE_LOCATION : emplacement physique où les données du plan de contrôle Apigee seront stockées.
    • CONTROL_PLANE_KEY_RING_NAME : nom du trousseau de clés du plan de contrôle
    • PROJECT_NUMBER : numéro de projet Google Cloud.
    • PROJECT_ID : ID de projet Google Cloud.
    • CONSUMER_DATA_KEY_NAME : nom de la clé de données client.
    • CONSUMER_DATA_REGION : sous-région de la région du plan de contrôle. Vous devez spécifier les paramètres CONTROL_PLANE_LOCATION et CONSUMER_DATA_REGION.
    • CONSUMER_DATA_KEY_RING_NAME : nom du trousseau de clés de données client.

    Base de données d'exécution

    gcloud kms keys add-iam-policy-binding RUNTIMEDB_KEY_NAME \
      --location RUNTIMEDB_KEY_LOCATION \
      --keyring RUNTIMEDB_KEY_RING_NAME \
      --member serviceAccount:service-PROJECT_NUMBER@gcp-sa-apigee.iam.gserviceaccount.com \
      --role roles/cloudkms.cryptoKeyEncrypterDecrypter \
      --project PROJECT_ID

    Remplacez les éléments suivants :

    • RUNTIMEDB_KEY_NAME : nom de la clé de base de données que vous créez.
    • RUNTIMEDB_KEY_RING_NAME : nom du trousseau de clés de base de données que vous créez.
    • RUNTIMEDB_KEY_LOCATION : emplacement physique du trousseau de clés de base de données.
    • PROJECT_NUMBER : numéro de projet Google Cloud.
    • PROJECT_ID : ID de projet Google Cloud.

    Disque d'exécution

    gcloud kms keys add-iam-policy-binding RUNTIMEDISK_KEY_NAME \
      --location RUNTIMEDISK_KEY_LOCATION \
      --keyring RUNTIMEDISK_KEY_RING_NAME \
      --member serviceAccount:service-PROJECT_NUMBER@gcp-sa-apigee.iam.gserviceaccount.com \
      --role roles/cloudkms.cryptoKeyEncrypterDecrypter \
      --project PROJECT_ID

    Remplacez les éléments suivants :

    • RUNTIMEDISK_KEY_NAME : nom de la clé de disque que vous créez.
    • RUNTIMEDISK_KEY_RING_NAME : nom du trousseau de clés du disque que vous créez.
    • RUNTIMEDISK_KEY_LOCATION : emplacement physique du trousseau de clés du disque.
    • PROJECT_NUMBER : numéro de projet Google Cloud.
    • PROJECT_ID : ID de projet Google Cloud.

    Cette commande associe la clé à l'agent de service Apigee.

    Si la requête réussit, gcloud envoie une réponse semblable à celle-ci :

    Updated IAM policy for key [runtime].
    bindings:
    - members:
    - serviceAccount:service-1234567890@gcp-sa-apigee.iam.gserviceaccount.com
    role: roles/cloudkms.cryptoKeyEncrypterDecrypter
    etag: BwWqgEuCuwk=
    version: 1

    Si vous recevez un message d'erreur semblable à celui-ci :

    INVALID_ARGUMENT: Role roles/cloudkms.cryptokms.cryptoKeyEncrypterDecrypter is not supported for this resource.

    Assurez-vous d'avoir utilisé le numéro du projet, et non le nom du projet dans l'adresse e-mail du compte de service.

    Pour vérifier que la clé est liée à l'agent de service Apigee :

    gcloud kms keys get-iam-policy $DISK_KEY_NAME \
      --keyring $DISK_KEY_RING_NAME \
      --location  \
      --project $PROJECT_ID

    gcloud kms keys describe $DISK_KEY_NAME \
      --keyring $DISK_KEY_RING_NAME \
      --location  \
      --project $PROJECT_ID

Générer de nouvelles clés à l'aide de la console Google Cloud

Vous pouvez générer de nouvelles clés à l'aide de la console, comme décrit dans la section Créer une clé de chiffrement symétrique.

Lorsque vous utilisez la console pour créer une clé :

  • Pour la clé de chiffrement de base de données d'exécution, définissez l'emplacement sur n'importe quel emplacement Cloud KMS compatible avec Cloud HSM et Cloud EKM. L'interface utilisateur ne vous permet pas de choisir un autre emplacement pour la clé. Il correspond donc à ce que vous avez choisi dans le trousseau de clés.
  • Après avoir créé la clé, obtenez le chemin d'accès de la clé dans le volet Clés de chiffrement en cliquant sur En savoir plus à côté de la clé, puis sélectionnez Copier le nom de la ressource.

Obtenir l'ID de la clé

Lorsque vous faites référence à une ressource Cloud Key Management Service à l'aide de l'API Cloud KMS ou de Google Cloud CLI, vous utilisez l'ID de la ressource. Vous pouvez obtenir l'ID de clé en utilisant la commande gcloud kms keys list :

Plan de contrôle

Lorsque la résidence des données est activée, il existe un trousseau de clés pour le plan de contrôle et un autre pour la région des données client.

gcloud kms keys list \
--location=CONTROL_PLANE_LOCATION \
--keyring=CONTROL_PLANE_KEY_RING_NAME \
--project=PROJECT_ID

gcloud kms keys list \
--location=CONSUMER_DATA_REGION \
--keyring=CONSUMER_DATA_KEY_RING_NAME \
--project=PROJECT_ID

L'ID de clé utilise la syntaxe suivante (semblable à un chemin de fichier) :

projects/PROJECT_ID/locations/CONTROL_PLANE_LOCATION/keyRings/CONTROL_PLANE_KEY_RING_NAME/cryptoKeys/CONTROL_PLANE_KEY_NAME

Base de données d'exécution

gcloud kms keys list \
--location=RUNTIMEDB_KEY_LOCATION \
--keyring=RUNTIMEDB_KEY_RING_NAME \
--project=PROJECT_ID

L'ID de clé utilise la syntaxe suivante (semblable à un chemin de fichier) :

projects/PROJECT_ID/locations/RUNTIMEDB_KEY_LOCATION/keyRings/RUNTIMEDB_KEY_RING_NAME/cryptoKeys/RUNTIMEDB_KEY_NAME

Disque d'exécution

gcloud kms keys list \
  --location=RUNTIMEDISK_KEY_LOCATION \
  --keyring=RUNTIMEDISK_KEY_RING_NAME \
  --project=PROJECT_ID

L'ID de clé utilise la syntaxe suivante (semblable à un chemin de fichier) :

projects/PROJECT_ID/locations/RUNTIMEDISK_KEY_LOCATION/keyRings/RUNTIMEDISK_KEY_RING_NAME/cryptoKeys/RUNTIMEDISK_KEY_NAME

Exemple :

NAME: projects/my-project/locations/us-west1/keyRings/my-key-ring/cryptoKeys/my-key
PURPOSE: ENCRYPT_DECRYPT
ALGORITHM: GOOGLE_SYMMETRIC_ENCRYPTION
PROTECTION_LEVEL: SOFTWARE
LABELS:
PRIMARY_ID: 1
PRIMARY_STATE: ENABLED

Vous pouvez également obtenir l'ID de clé dans la console Google Cloud. Pour en savoir plus, consultez la page Obtenir un ID de ressource Cloud KMS.