Acerca de las claves de cifrado de Apigee

Esta página se aplica a Apigee, pero no a Apigee Hybrid.

Consulta la documentación de Apigee Edge.

En esta sección se describen los tipos de claves de cifrado y cómo crearlas.

Durante el proceso de configuración de Apigee, se generan las siguientes claves de cifrado de Cloud Key Management Service:

Tipo de clave Fecha de creación Descripción
Clave de cifrado del plano de control

Consola deGoogle Cloud :

Interfaz de línea de comandos (CLI):

Cuando se usa la residencia de datos, Apigee usa esta clave para cifrar los datos de Analytics almacenados en BigQuery dentro del proyecto de inquilino.

Cifra los proxies de API, los servidores de destino, los almacenes de confianza y los almacenes de claves, los datos analíticos y cualquier otro elemento compartido entre los tiempos de ejecución.

Apigee te pedirá que proporciones dos claves CMEK del plano de control. Esta clave y una clave de encriptado de datos del consumidor de la API.

La ubicación de la clave de encriptado del plano de control debe coincidir con la ubicación del plano de control.

Clave de cifrado de datos del consumidor de la API

Consola deGoogle Cloud :

Interfaz de línea de comandos (CLI):

Cuando se usa la residencia de datos, Apigee necesita una clave de región única, además de la clave de cifrado del plano de control, que se usa para los servicios que solo están disponibles en una región. Por ejemplo, Dataflow y Cloud SQL.

La ubicación de la clave de cifrado de datos del consumidor de la API debe estar dentro de la ubicación del plano de control.

Clave de encriptado de la base de datos en el tiempo de ejecución

Consola deGoogle Cloud :

Interfaz de línea de comandos (CLI):

Encripta datos de aplicaciones, como KVMs, caché y secretos de cliente, que se almacenan en la base de datos.

Hay una clave de cifrado de la base de datos de tiempo de ejecución por organización. Todas las instancias y regiones de una organización comparten la misma clave de cifrado de la base de datos de tiempo de ejecución.

La clave de cifrado de la base de datos de tiempo de ejecución admite todas las ubicaciones de Cloud KMS que admiten Cloud HSM y Cloud EKM. Google recomienda usar una ubicación multirregional (como us o europe) o una ubicación birregional (eur5 o nam4) al crear esta clave.

La ubicación de la clave de encriptado de la base de datos de tiempo de ejecución debe estar dentro de la ubicación del plano de control cuando se use la residencia de datos.

Clave de encriptado del disco

Consola deGoogle Cloud :

Interfaz de línea de comandos (CLI):

Cifra los datos de la instancia de tiempo de ejecución antes de que se escriban en el disco.

Entre los tipos de datos encriptados se incluyen el sistema de gestión de claves (KMS), los mapas de clave-valor (KVM), las definiciones de cuotas, los contenedores y los contadores, así como todos los datos almacenados en caché. Los datos de KMS incluyen productos de API, desarrolladores, aplicaciones de desarrolladores, tokens de OAuth (incluidos tokens de acceso, tokens de actualización y códigos de autorización) y claves de API.

Esta clave se encuentra en la misma región que la instancia de tiempo de ejecución. Cuando crees una clave, haz que su ubicación coincida con la de tu instancia de tiempo de ejecución.

Cada combinación de instancia y región tiene su propia clave de cifrado de disco.

Puntos clave

Ten en cuenta lo siguiente al crear las claves de cifrado de disco y de base de datos de tiempo de ejecución:

  • La ubicación de la clave de cifrado de la base de datos del tiempo de ejecución de Apigee admite todas las ubicaciones de Cloud KMS que admiten Cloud HSM y Cloud EKM.
  • La ubicación de la clave de encriptado de disco debe coincidir con la ubicación de la instancia de tiempo de ejecución en la que se usa la clave.
  • Una vez configuradas, no podrás cambiar la ubicación de ninguna de las dos claves.
  • Todas las claves deben estar en un conjunto de claves.
  • Las claves de diferentes tipos deben estar en llaveros de claves independientes. Las claves de cifrado de disco no pueden estar en el mismo llavero de claves que la clave de cifrado de la base de datos de tiempo de ejecución.
  • Las claves deben tener un purpose. Si usas la línea de comandos para generar las nuevas claves, asigna el valor encryption a purpose. Si usas la Google Cloud consola, elige Encriptado o desencriptado simétrico.
  • Las claves se definen mediante una ruta de clave, que usa el siguiente patrón:
    projects/PROJECT_ID/locations/KEY_LOCATION/keyRings/KEYRING_NAME/cryptoKeys/KEY_NAME

Listar las claves

Si ya has creado claves de encriptado de Cloud KMS para Apigee, puedes usarlas en lugar de crear claves nuevas durante la configuración.

Para enumerar todas las claves de KMS de un conjunto de claves, sigue estos pasos:

Ejecuta el comando gcloud kms keys list:

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

Haz los cambios siguientes:

  • KEY_RING_NAME: el nombre del conjunto de claves. Por ejemplo, my-key-ring.
  • KEY_RING_LOCATION: la ubicación física del conjunto de claves. Por ejemplo, us-west1.

También puedes ver tus llaves en la Google Cloud consola.

Generar claves en la línea de comandos

Puedes crear un conjunto de claves y una clave en la línea de comandos o en la consola Google Cloud .

Cada tipo de llave debe tener su propio llavero. Por ejemplo, las claves de cifrado de disco se pueden almacenar en un llavero de claves, pero la clave de cifrado de la base de datos de tiempo de ejecución debe almacenarse en otro llavero de claves.

En los siguientes pasos se describe cómo crear un conjunto de claves y una clave, y cómo conceder acceso al agente de servicio de Apigee para que use la nueva clave. Crea conjuntos de claves y claves para el plano de control (si usas la residencia de datos), la base de datos de tiempo de ejecución y el disco de tiempo de ejecución.

  1. Crea un nuevo conjunto de claves con el comando gcloud kms keyrings create:

    Plano de control

    Cuando la residencia de datos esté habilitada, crea un conjunto de claves para el plano de control y otro para la región de datos del consumidor.

    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

    Haz los cambios siguientes:

    • CONTROL_PLANE_KEY_RING_NAME: el nombre del conjunto de claves del plano de control.
    • CONTROL_PLANE_LOCATION: la ubicación física en la que se almacenarán los datos del plano de control de Apigee.
    • PROJECT_ID: el ID del proyecto. Google Cloud
    • CONSUMER_DATA_KEY_RING_NAME: el nombre del conjunto de claves de datos de consumidor.
    • CONSUMER_DATA_REGION: una subregión de la región del plano de control. Debes especificar tanto CONTROL_PLANE_LOCATION como CONSUMER_DATA_REGION.

    Base de datos de tiempo de ejecución

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

    Haz los cambios siguientes:

    • RUNTIMEDB_KEY_RING_NAME: el nombre del conjunto de claves de la base de datos que vas a crear.
    • RUNTIMEDB_KEY_LOCATION: la ubicación física del conjunto de claves de la base de datos.
    • PROJECT_ID: el ID del proyecto. Google Cloud

    La ubicación de la clave de cifrado de Apigee admite todas las ubicaciones de Cloud KMS que admiten Cloud HSM y Cloud EKM.

    Disco de tiempo de ejecución

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

    Haz los cambios siguientes:

    • RUNTIMEDISK_KEY_RING_NAME: el nombre del conjunto de claves de disco que vas a crear.
    • RUNTIMEDISK_KEY_LOCATION: la ubicación física del conjunto de claves de disco.
    • PROJECT_ID: el ID del proyecto. Google Cloud

    Verifica que el conjunto de claves de disco esté configurado en la misma ubicación que la instancia. Cada instancia y conjunto de claves debe tener su propia ubicación.

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

    gcloud kms keyrings describe $DISK_KEY_RING_NAME \
    --location  \
    --project $PROJECT_ID
  2. El nombre del conjunto de claves debe ser único en tu organización. Si creas regiones adicionales, los nombres de los conjuntos de claves de esas regiones no pueden ser los mismos que los de los conjuntos de claves que ya tengas.

  3. Crea una clave con el comando kms keys create:

    Plano de control

    Cuando la residencia de datos esté habilitada, crea un conjunto de claves para el plano de control y otro para la región de datos del consumidor.

    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

    Haz los cambios siguientes:

    • CONTROL_PLANE_KEY_NAME: el nombre de la clave del plano de control.
    • CONTROL_PLANE_KEY_RING_NAME: el nombre del conjunto de claves del plano de control.
    • CONTROL_PLANE_LOCATION: la ubicación física en la que se almacenarán los datos del plano de control de Apigee.
    • PROJECT_ID: el ID del proyecto. Google Cloud
    • CONSUMER_DATA_KEY_NAME: nombre de la clave de datos del consumidor.
    • CONSUMER_DATA_KEY_RING_NAME: el nombre del conjunto de claves de datos de consumidor.
    • CONSUMER_DATA_REGION: una subregión de la región del plano de control. Debes especificar tanto CONTROL_PLANE_LOCATION como CONSUMER_DATA_REGION.

    Base de datos de tiempo de ejecución

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

    Haz los cambios siguientes:

    • RUNTIMEDB_KEY_NAME: el nombre de la clave de la base de datos que vas a crear.
    • RUNTIMEDB_KEY_RING_NAME: el nombre del conjunto de claves de la base de datos que vas a crear.
    • RUNTIMEDB_KEY_LOCATION: la ubicación física del conjunto de claves de la base de datos.
    • PROJECT_ID: el ID del proyecto. Google Cloud

    Disco de tiempo de ejecución

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

    Haz los cambios siguientes:

    • RUNTIMEDISK_KEY_NAME: el nombre de la clave de disco que vas a crear.
    • RUNTIMEDISK_KEY_RING_NAME: el nombre del conjunto de claves de disco que vas a crear.
    • RUNTIMEDISK_KEY_LOCATION: la ubicación física del conjunto de claves de disco.
    • PROJECT_ID: el ID del proyecto. Google Cloud

    Este comando crea la clave y la añade al conjunto de claves.

    Cuando hagas referencia a una clave, usa el ID de clave.

  4. Concede acceso al agente de servicio de Apigee para que use la nueva clave con el comando gcloud kms keys add-iam-policy-binding:

    Plano de control

    Cuando la residencia de datos esté habilitada, crea un conjunto de claves para el plano de control y otro para la región de datos del consumidor.

    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
    

    Haz los cambios siguientes:

    • CONTROL_PLANE_KEY_NAME: el nombre de la clave del plano de control.
    • CONTROL_PLANE_LOCATION: la ubicación física en la que se almacenarán los datos del plano de control de Apigee.
    • CONTROL_PLANE_KEY_RING_NAME: el nombre del conjunto de claves del plano de control.
    • PROJECT_NUMBER: el número de proyecto Google Cloud .
    • PROJECT_ID: el ID del proyecto. Google Cloud
    • CONSUMER_DATA_KEY_NAME: nombre de la clave de datos del consumidor.
    • CONSUMER_DATA_REGION: una subregión de la región del plano de control. Debes especificar tanto CONTROL_PLANE_LOCATION como CONSUMER_DATA_REGION.
    • CONSUMER_DATA_KEY_RING_NAME: el nombre del conjunto de claves de datos de consumidor.

    Base de datos de tiempo de ejecución

    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

    Haz los cambios siguientes:

    • RUNTIMEDB_KEY_NAME: el nombre de la clave de la base de datos que vas a crear.
    • RUNTIMEDB_KEY_RING_NAME: el nombre del conjunto de claves de la base de datos que vas a crear.
    • RUNTIMEDB_KEY_LOCATION: la ubicación física del conjunto de claves de la base de datos.
    • PROJECT_NUMBER: el número de proyecto Google Cloud .
    • PROJECT_ID: el ID del proyecto. Google Cloud

    Disco de tiempo de ejecución

    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

    Haz los cambios siguientes:

    • RUNTIMEDISK_KEY_NAME: el nombre de la clave de disco que vas a crear.
    • RUNTIMEDISK_KEY_RING_NAME: el nombre del conjunto de claves de disco que vas a crear.
    • RUNTIMEDISK_KEY_LOCATION: la ubicación física del conjunto de claves de disco.
    • PROJECT_NUMBER: el número de proyecto Google Cloud .
    • PROJECT_ID: el ID del proyecto. Google Cloud

    Este comando vincula la clave al agente de servicio de Apigee.

    Si esta solicitud se completa correctamente, gcloud responde con un mensaje similar al siguiente:

    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 recibes un error como el siguiente:

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

    Asegúrate de haber usado el número del proyecto y no el nombre del proyecto en la dirección de correo de la cuenta de servicio.

    Para verificar que la clave está vinculada al agente de servicio de Apigee, haz lo siguiente:

    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

Generar claves nuevas con la consola Google Cloud

Puedes generar claves nuevas con la consola, tal como se describe en el artículo Crear una clave de cifrado simétrica.

Cuando usas la consola para crear una clave:

  • En el caso de la clave de encriptado de la base de datos de tiempo de ejecución, elige cualquier ubicación de Cloud KMS que admita Cloud HSM y Cloud EKM. La interfaz de usuario no te permite elegir otra ubicación para la clave, por lo que coincidirá con la que elijas en el llavero.
  • Después de crear la clave, obtén la ruta de la clave en el panel Claves criptográficas haciendo clic en Más junto a la clave y, a continuación, seleccionando Copiar nombre de recurso.

Obtener el ID de la clave

Cuando haces referencia a un recurso de Cloud Key Management Service mediante la API de Cloud KMS o la CLI de Google Cloud, usas el ID del recurso. Puedes obtener el ID de la clave con el comando gcloud kms keys list:

Plano de control

Cuando se habilita la residencia de datos, hay un conjunto de claves para el plano de control y otro para la región de datos del consumidor.

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

El ID de clave tiene la siguiente sintaxis (similar a una ruta de archivo):

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

Base de datos de tiempo de ejecución

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

El ID de clave tiene la siguiente sintaxis (similar a una ruta de archivo):

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

Disco de tiempo de ejecución

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

El ID de clave tiene la siguiente sintaxis (similar a una ruta de archivo):

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

Por ejemplo:

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

También puedes obtener el ID de clave en la Google Cloud consola. Para obtener más información, consulta Obtener un ID de recurso de Cloud KMS.