Acerca de las claves de encriptación 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 encriptación y cómo crearlas.

Durante el proceso de configuración de Apigee, genera las siguientes claves de encriptación de Cloud Key Management Service:

Tipo de clave Cuando se creó Descripción
Clave de encriptación del plano de control

Consola de Google Cloud:

Interfaz de línea de comandos (CLI):

Cuando usas la residencia de datos, Apigee usa esta clave para encriptar los datos de Analytics almacenados en BigQuery dentro del proyecto de usuario.

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

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

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

Clave de encriptación de datos del consumidor de API

Consola de Google Cloud:

Interfaz de línea de comandos (CLI):

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

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

Clave de encriptación de la base de datos de entorno de ejecución

Consola de Google Cloud:

Interfaz de línea de comandos (CLI):

Encripta datos de aplicación, como KVMs, caché y secretos de cliente, que luego se almacenan en la base de datos.

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

La clave de encriptación de la base de datos de entorno de ejecución con todas las ubicaciones de Cloud KMS compatibles con Cloud HSM y Cloud EKM. Google recomienda usar una ubicación multirregional (como us o europe) o una ubicación birregional (eur5, nam4) cuando creas esta clave.

La ubicación de la clave de encriptación de la base de datos del entorno de ejecución debe estar dentro de la ubicación del plano de control cuando se usa la residencia de datos.

Clave de encriptación del disco

Consola de Google Cloud:

Interfaz de línea de comandos (CLI):

Encripta los datos de instancia de entorno de ejecución antes de que se escriban en el disco.

Los tipos de datos encriptados incluyen Key Management System (KMS); Mapas clave-valor (KVM); definiciones de cuotas, buckets y contadores; y todos los datos almacenados en caché. Los datos de KMS incluyen productos de API, desarrolladores, aplicaciones de desarrollador, 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 del entorno de ejecución. Cuando creas una clave nueva, busca la ubicación de esa clave en la ubicación de tu instancia de entorno de ejecución.

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

Puntos clave

Ten en cuenta esta información cuando crees el disco y las claves de encriptación de la base de datos del entorno de ejecución:

  • La ubicación de la clave de encriptación de la aplicación de entorno de ejecución de Apigee es compatible con todas las ubicaciones de Cloud KMS que admiten Cloud HSM y Cloud EKM.
  • La ubicación de la clave de encriptación del disco debe coincidir con la ubicación del entorno de ejecución en la que se usa la clave.
  • Una vez que la establezcas, no podrás cambiar la ubicación de ninguna de las claves.
  • Todas las claves deben estar en un llavero de claves.
  • Las claves de diferentes tipos deben estar en llaveros de claves diferentes. Las claves de encriptación del disco no pueden estar en el mismo llavero de claves que la clave de encriptación de tu base de datos del entorno de ejecución.
  • Las claves deben tener un purpose. Si usas la línea de comandos para generar tus claves nuevas, configura purpose como encryption. Si usas la consola de Google Cloud, elige Encriptación/desencriptación simétrica para el propósito.
  • Las claves se definen mediante una ruta de acceso a la clave, que usa el siguiente patrón:
    projects/PROJECT_ID/locations/KEY_LOCATION/keyRings/KEYRING_NAME/cryptoKeys/KEY_NAME

Enumera las claves existentes

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

Para enumerar todas las claves de KMS de un llavero de claves, haz lo siguiente:

Ejecuta el comando gcloud kms keys list:

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

Reemplaza lo siguiente:

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

Como alternativa, puedes ver las claves en la consola de Google Cloud.

Genera claves nuevas en la línea de comandos

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

Cada tipo de clave debe tener su propio llavero de claves. Por ejemplo, tus claves de encriptación de disco se pueden almacenar en un llavero de claves, pero la clave de encriptación de la base de datos del entorno de ejecución debe almacenarse en un llavero de claves independiente.

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

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

    Plano de control

    Cuando la residencia de datos esté habilitada, crea un llavero 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

    Reemplaza lo siguiente:

    • CONTROL_PLANE_KEY_RING_NAME: el nombre del llavero 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 de Google Cloud.
    • CONSUMER_DATA_KEY_RING_NAME: el nombre del llavero de claves 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.

    Base de datos del entorno de ejecución

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

    Reemplaza lo siguiente:

    • RUNTIMEDB_KEY_RING_NAME: el nombre del llavero de claves de la base de datos que estás creando.
    • RUNTIMEDB_KEY_LOCATION: la ubicación física del llavero de claves de la base de datos.
    • PROJECT_ID: el ID del proyecto de Google Cloud.

    La ubicación de la clave de encriptación de Apigee admite todas las ubicaciones de Cloud KMS compatibles con Cloud HSM y Cloud EKM.

    Disco de entorno de ejecución

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

    Reemplaza lo siguiente:

    • RUNTIMEDISK_KEY_RING_NAME: Es el nombre del llavero de claves del disco que estás creando.
    • RUNTIMEDISK_KEY_LOCATION: Es la ubicación física del llavero de claves del disco.
    • PROJECT_ID: el ID del proyecto de Google Cloud.

    Verifica que el llavero de claves del disco esté configurado en la misma ubicación que la instancia. Cada instancia y llavero de claves deben 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 llavero de claves debe ser único para tu organización. Si creas regiones adicionales, los nombres de llaveros de claves de esas regiones no pueden ser los mismos que los nombres de llaveros de claves existentes.

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

    Plano de control

    Cuando la residencia de datos esté habilitada, crea un llavero 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

    Reemplaza lo siguiente:

    • CONTROL_PLANE_KEY_NAME: El nombre de la clave del plano de control.
    • CONTROL_PLANE_KEY_RING_NAME: el nombre del llavero 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 de Google Cloud.
    • CONSUMER_DATA_KEY_NAME: El nombre de la clave de los datos del consumidor.
    • CONSUMER_DATA_KEY_RING_NAME: el nombre del llavero de claves 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.

    Base de datos del entorno de ejecución

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

    Reemplaza lo siguiente:

    • RUNTIMEDB_KEY_NAME: el nombre de la clave de la base de datos que estás creando.
    • RUNTIMEDB_KEY_RING_NAME: el nombre del llavero de claves de la base de datos que estás creando.
    • RUNTIMEDB_KEY_LOCATION: la ubicación física del llavero de claves de la base de datos.
    • PROJECT_ID: el ID del proyecto de Google Cloud.

    Disco de entorno de ejecución

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

    Reemplaza lo siguiente:

    • RUNTIMEDISK_KEY_NAME: el nombre de la clave de disco que crearás.
    • RUNTIMEDISK_KEY_RING_NAME: Es el nombre del llavero de claves del disco que estás creando.
    • RUNTIMEDISK_KEY_LOCATION: Es la ubicación física del llavero de claves del disco.
    • PROJECT_ID: el ID del proyecto de Google Cloud.

    Con este comando, se crea la clave y se agrega al llavero de claves.

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

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

    Plano de control

    Cuando la residencia de datos esté habilitada, crea un llavero 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
    

    Reemplaza lo siguiente:

    • 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 llavero de claves del plano de control.
    • PROJECT_NUMBER: El número de proyecto de Google Cloud.
    • PROJECT_ID: el ID del proyecto de Google Cloud.
    • CONSUMER_DATA_KEY_NAME: El nombre de la clave de los 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 llavero de claves de datos del consumidor.

    Base de datos del entorno 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

    Reemplaza lo siguiente:

    • RUNTIMEDB_KEY_NAME: el nombre de la clave de la base de datos que estás creando.
    • RUNTIMEDB_KEY_RING_NAME: el nombre del llavero de claves de la base de datos que estás creando.
    • RUNTIMEDB_KEY_LOCATION: la ubicación física del llavero de claves de la base de datos.
    • PROJECT_NUMBER: El número de proyecto de Google Cloud.
    • PROJECT_ID: el ID del proyecto de Google Cloud.

    Disco de entorno 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

    Reemplaza lo siguiente:

    • RUNTIMEDISK_KEY_NAME: el nombre de la clave de disco que crearás.
    • RUNTIMEDISK_KEY_RING_NAME: Es el nombre del llavero de claves del disco que estás creando.
    • RUNTIMEDISK_KEY_LOCATION: Es la ubicación física del llavero de claves del disco.
    • PROJECT_NUMBER: El número de proyecto de Google Cloud.
    • PROJECT_ID: el ID del proyecto de Google Cloud.

    Este comando vincula la clave con el agente de servicio de Apigee.

    Cuando se completa correctamente esta solicitud, gcloud muestra una respuesta similar a la 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, haz lo 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, en la dirección de correo electrónico 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

Genera claves nuevas con la consola de Google Cloud

Puedes generar claves nuevas con la consola, como se describe en Crea una clave de encriptación simétrica.

Cuando uses la consola para crear una clave nueva, realiza lo siguiente:

  • Para la clave de encriptación de la base de datos del entorno de ejecución, configura la ubicación en cualquier ubicación de Cloud KMS que admita Cloud HSM y Cloud EKM. La IU no te permite elegir ninguna otra ubicación para la clave, por lo que coincidirá con lo que eliges en el llavero de claves.
  • Después de crear la clave, obtén la ruta de la clave en el panel Claves criptográficas. Para esto, haz clic en Más junto a la clave y, luego, selecciona Copiar el nombre del recurso.

Obtén el ID de clave

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

Plano de control

Cuando la residencia de datos está habilitada, hay un llavero 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 del entorno 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 entorno 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 consola de Google Cloud. Para obtener más información, consulta Obtén un ID de recurso de Cloud KMS.