Usar claves de encriptación administradas por el cliente (CMEK)

En esta página, se describe cómo encriptar el contenido almacenado en los complementos de Service Extensions con claves de encriptación administradas por el cliente (CMEK).

Descripción general

De forma predeterminada, Service Extensions encripta el contenido del cliente en reposo. Service Extensions controla la encriptación por ti sin que debas realizar ninguna acción adicional. Esta opción se denomina encriptación predeterminada de Google.

Si deseas controlar tus claves de encriptación, puedes usar las claves de encriptación administradas por el cliente (CMEK) en Cloud KMS con servicios integrados en CMEK, incluidas las extensiones de servicio. El uso de claves de Cloud KMS te permite controlar su nivel de protección, ubicación, programa de rotación, permisos de uso y acceso, y límites criptográficos. El uso de Cloud KMS también te permite ver los registros de auditoría y controlar los ciclos de vida de las claves. En lugar de que Google posea y administre las claves de encriptación de claves (KEK) simétricas que protegen tus datos, tú las controlas y administras en Cloud KMS.

Después de configurar tus recursos con CMEK, la experiencia de acceso a tus recursos de Service Extensions es similar a usar la encriptación predeterminada de Google. Para obtener más información sobre tus opciones de encriptación, consulta Claves de encriptación administradas por el cliente (CMEK).

Todas las operaciones criptográficas se facturan al proyecto Google Cloud que posee la clave, independientemente del tipo de clave. Para obtener información sobre los precios, consulta Precios de Cloud KMS.

Crea una clave y otorga permisos

En las siguientes instrucciones, se explica cómo crear una clave para un complemento y otorgar permisos para encriptar y desencriptar datos del complemento con la clave.

  1. En el proyecto Google Cloud en el que deseas administrar tus claves, haz lo siguiente:

    1. Para poder crear una clave, habilita la API de Cloud Key Management Service.

    2. Crea un llavero de claves y una clave con una de las siguientes opciones:

      La ubicación de la clave de Cloud KMS debe coincidir con la ubicación del complemento que deseas encriptar.

  2. La cuenta de servicio de Service Extensions debe existir en tu proyecto de Service Extensions. El nombre de la cuenta de servicio es service-PROJECT_NUMBER@gcp-sa-networkactions.iam.gserviceaccount.com, en el que PROJECT_NUMBER es el número del proyecto del proyecto Google Cloud en el que se ejecutan las extensiones de servicio.

    La cuenta de servicio se crea automáticamente cuando creas tu primer complemento en el proyecto de Service Extensions. Si aún no creaste un complemento en tu proyecto, ejecuta el siguiente comando para crear la cuenta de servicio:

    gcloud beta services identity create \
        --service=networkactions.googleapis.com \
        --project=PROJECT
    

    Reemplaza PROJECT por el ID del proyecto en el que se ejecutan las extensiones de servicio.

  3. Otorga el rol de encriptador/desencriptador de CryptoKey de Cloud KMS (roles/cloudkms.cryptoKeyEncrypterDecrypter) a la cuenta de servicio de Service Extensions en la clave que creaste.

    Console

    1. En la consola de Google Cloud , ve a la página Administración de claves.

      Ir a Administración de claves

    2. Selecciona la clave que creaste.

    3. Otorga acceso a la cuenta de servicio de Service Extensions:

      1. Selecciona Mostrar panel de información.
      2. Haz clic en Agregar miembro.
      3. Agrega la cuenta de servicio de Service Extensions. La cuenta de servicio es service-PROJECT_NUMBER@gcp-sa-networkactions.iam.gserviceaccount.com.
      4. En Selecciona un rol, selecciona Cloud KMS > Encriptador/Desencriptador de CryptoKey de Cloud KMS.
      5. Haz clic en Guardar.
    4. Repite el paso anterior para otorgar acceso a la cuenta del creador del complemento.

    5. Regresa a la página Administración de claves y vuelve a seleccionar la clave.

    6. Selecciona Mostrar panel de información. Verás los roles en la columna Rol/Miembro.

    gcloud

    1. Ejecuta el comando gcloud kms keys add-iam-policy-binding para otorgar acceso a la cuenta de servicio de Service Extensions:

      gcloud kms keys add-iam-policy-binding [--project=PROJECT] KEY_NAME \
          --location LOCATION
          --keyring=KEYRING_NAME \
          --member=serviceAccount:service-PROJECT-NUMBER@gcp-sa-networkactions.iam.gserviceaccount.com \
          --role=roles/cloudkms.cryptoKeyEncrypterDecrypter
      

      Reemplaza lo siguiente:

      • PROJECT: ID del proyecto que contiene la clave
      • KEY_NAME: el nombre de la clave
      • LOCATION: es la ubicación de la clave.
      • KEYRING_NAME: es el nombre del llavero de claves
      • PROJECT-NUMBER: Es el número del proyecto del proyecto de Google Cloud .
    2. Repite el paso anterior con member configurado en la cuenta del creador del complemento.

Cuando crees un complemento o lo actualices, especifica la clave de CMEK. La clave proporciona encriptación para la imagen del complemento y los datos de configuración. Los demás datos del complemento están protegidos por la encriptación predeterminada de Google.

Reencriptación automática

Cuando cambia la versión principal de la clave de KMS (ya sea por un cambio manual del usuario o por una rotación automática), los datos del complemento protegidos por la clave se vuelven a encriptar automáticamente con la nueva versión de la clave.

Seguimiento de claves

Puedes usar el seguimiento de claves para enumerar los recursos del complemento que protege una clave. Para obtener más información, consulta Visualiza el uso de claves.

Cuotas de Cloud Key Management Service y extensiones de servicio

Cuando usas claves de CMEK en extensiones de servicio, como en las siguientes operaciones, tus proyectos pueden consumir cuotas de solicitudes criptográficas de Cloud KMS:

  • Crea o actualiza un complemento protegido por CMEK
  • Cómo agregar versiones nuevas o cambiar la versión principal de los complementos protegidos por CMEK
  • Cómo enumerar las versiones de complementos protegidos por CMEK que tienen el campo plugin_config_data establecido
  • Cómo adjuntar un complemento a la extensión

Los complementos adjuntos también generan operaciones de desencriptación con el tiempo.

Si usas claves de hardware (Cloud HSM) o externas (Cloud EKM), las operaciones de encriptación y desencriptación con claves CMEK afectan las cuotas de Cloud KMS.

Quita el acceso a un complemento encriptado con CMEK

Existen varias formas de quitar el acceso a un complemento encriptado con una CMEK:

Te recomendamos revocar los permisos de la cuenta de servicio de Service Extensions antes de inhabilitar o destruir una clave.

Consecuencias de quitar el acceso

Los datos protegidos por CMEK consisten en imágenes descargadas de Artifact Registry y en cualquier dato de configuración del complemento proporcionado directamente (a través del campo plugin_config_data).

Después de inhabilitar o borrar la clave de encriptación de un complemento, todos los datos del complemento protegidos por la CMEK dejarán de estar disponibles en cuestión de minutos. Es posible que pasen decenas de minutos hasta que todas las réplicas de publicación de un complemento dejen de publicar tráfico después de que se revoque su clave.

Los metadatos del complemento, como el nombre, la descripción, las etiquetas o la configuración de registro, siguen siendo accesibles.

Como consecuencia, quitar el acceso a una clave que protege un complemento activo (es decir, un complemento adjunto a una extensión) hace que el complemento no pueda publicar tráfico. Todas las solicitudes al complemento fallan.

Cuando falla la invocación del complemento, el comportamiento de la extensión depende del campo fail_open:

  • Si el campo se establece en true, la solicitud continúa al servicio de destino sin proporcionar ninguna indicación de que falló la invocación del complemento.
  • Si el campo se establece en false, la solicitud no llega al servicio de destino.

Limitaciones

  • La protección con CMEK establecida en un complemento se limita a las extensiones de servicio.

    Para proteger los recursos de complementos en otros productos de Google, habilita la CMEK a través de ellos. Para las imágenes de complementos subidas a Artifact Registry, configura la CMEK para Artifact Registry. Para proteger los registros que genera tu complemento, configura CMEK para Cloud Logging.

  • No puedes cambiar el modo de encriptación (administrado por Google o CMEK) de un complemento. Sin embargo, puedes actualizar el complemento para usar una clave de KMS diferente.

  • Solo se admiten complementos regionales. Además, los complementos solo se pueden encriptar con una clave en la misma región que el complemento.

Próximos pasos