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 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 valorencryption
apurpose
. 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.
-
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
-
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.
-
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
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.
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.