Habilita claves de encriptación administradas por el cliente

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

Descripción general

De forma predeterminada, Google Cloud encripta los datos cuando están en reposo de manera automática mediante claves de encriptación administradas por Google. Si tienes requisitos regulatorios o de cumplimiento específicos relacionados con las claves que protegen los datos, puedes crear repositorios encriptados con claves CMEK. Los metadatos sobre un repositorio, como el nombre del repositorio, se encriptan mediante la encriptación predeterminada de Google.

Cuando habilitas CMEK, los datos en reposo que se encuentran en repositorios se encriptan mediante una clave que administras en Cloud Key Management Service. Puedes controlar el acceso a la clave CMEK mediante la administración de identidades y accesos. Si inhabilitas de forma temporal la clave CMEK o la borras de forma permanente, no se podrá acceder a los datos encriptados con esa clave.

La CMEK te permite controlar más aspectos del ciclo de vida y la administración de las claves, pero también genera costos adicionales para el servicio de Cloud KMS. Los repositorios de Artifact Registry y otros recursos de Google Cloud encriptados con CMEK también pueden consumir la cuota de Cloud KMS, según el tipo de clave que uses. Confirma que tienes suficiente cuota a fin de habilitar la encriptación de secretos de la capa de la aplicación para tus aplicaciones y flujos de trabajo.

Cloud KMS puede ejecutarse en el mismo proyecto de Google Cloud que Artifact Registry o en un proyecto distinto en el que administres claves de varios proyectos de forma centralizada. Para admitir la separación de obligaciones y un mayor control sobre el acceso a las claves, te recomendamos que crees y administres claves en un proyecto separado que incluya otros recursos de Google Cloud.

Debes asignar una CMEK cuando creas un repositorio. No puedes cambiar el mecanismo de encriptación de un repositorio existente. Si tienes un repositorio encriptado con CMEK, no puedes cambiar el mecanismo de encriptación a la encriptación predeterminada de Google ni asignar una clave de Cloud KMS diferente para la encriptación.

Para obtener más información sobre las CMEK en general, incluso cuándo y por qué habilitarlas, consulta la documentación de Cloud KMS.

Crea una clave y otorga permisos

En las siguientes instrucciones, se explica cómo crear una clave para un repositorio y otorgar permisos para encriptar y desencriptar datos del repositorio con la clave. Puedes usar una clave creada de forma directa en Cloud KMS o una administrada de forma externa que pongas a disposición con Cloud External Key Manager.

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

    1. Habilita la API de Cloud KMS.

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

      La ubicación de la clave de Cloud KMS debe coincidir con la ubicación del repositorio del repositorio que encriptarás.

  2. Si no creaste un repositorio en el proyecto de Artifact Registry, la cuenta de servicio de Artifact Registry aún no existe. Para crear la cuenta de servicio, ejecuta el siguiente comando:

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

    Reemplaza PROJECT por el ID del proyecto en el que se ejecuta Artifact Registry.

  3. Otorga la función de IAM de encriptador/desencriptador de CryptoKey (roles/cloudkms.cryptoKeyEncrypterDecrypter) a la cuenta de servicio de Artifact Registry. Otorga este permiso en la clave que creaste.

    Consola

    1. Ve a la página Claves criptográficas.

      Abre la página de Cloud KMS

    2. Selecciona la clave que creaste.

    3. Otorga acceso a la cuenta de servicio de Artifact Registry:

      1. Selecciona MOSTRAR EL PANEL DE INFORMACIÓN.
      2. Haga clic en AGREGAR MIEMBRO.
      3. Agrega la cuenta de servicio de Artifact Registry. La cuenta de servicio es service-PROJECT-NUMBER@gcp-sa-artifactregistry.iam.gserviceaccount.com, en la que PROJECT-NUMBER es el número del proyecto de Google Cloud en el que se ejecuta Artifact Registry.
      4. En Selecciona una función, 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 que creará repositorios.

    5. Regresa a la página Claves criptográficas y vuelve a seleccionar la clave.

    6. Selecciona MOSTRAR EL PANEL DE INFORMACIÓN. Deberías ver las funciones en la columna Función/Miembro.

    gcloud

    1. Ejecuta el siguiente comando para otorgar acceso a la cuenta de servicio de Artifact Registry:

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

      ¿Por dónde

      • PROJECT es el ID del proyecto que contiene la clave.
      • KEY es el nombre de la clave.
      • LOCATION es la ubicación de la clave. La ubicación de la clave debe coincidir con la ubicación del repositorio que encriptarás.
      • KEYRING es el nombre del llavero de claves.
      • PROJECT-NUMBER es el número del proyecto de Google Cloud en el que se ejecuta Artifact Registry.
    2. Repite el paso anterior para otorgar acceso a la cuenta que creará repositorios.

    Para obtener más información sobre este comando, consulta la documentación de claves add-iam-policy-binding de KMS de gcloud.

Ahora puedes crear un repositorio y especificar la clave que se usará para la encriptación.

Quita el acceso

Existen varias formas de quitar el acceso a un repositorio encriptado mediante una CMEK:

Te recomendamos revocar los permisos de la cuenta de servicio de Artifact Registry antes de inhabilitar o destruir una clave. Los cambios en los permisos son coherentes en cuestión de segundos, por lo que puedes observar el impacto de inhabilitar o destruir una clave.

Cuando inhabilitas o borras la clave de encriptación de un repositorio, ya no podrás ver ni recuperar datos de artefactos. Todos los datos de artefactos almacenados en el repositorio se vuelven inaccesibles, incluidos los artefactos compilados, los datos binarios arbitrarios (BLOB) y manifiestos como un manifiesto de Docker o un archivo de packument de npm. Los usuarios que tienen la función de lector o de Visualizador de Artifact Registry aún pueden ver metadatos de un artefacto, como el nombre, la versión o la etiqueta del artefacto.

Los usuarios que tienen la función de administrador o de propietario de Artifact Registry pueden borrar el repositorio.

Políticas de la organización de CMEK

Artifact Registry admite restricciones de políticas de la organización que pueden requerir protección con CMEK.

Las políticas pueden limitar las CryptoKeys de Cloud KMS que se pueden usar para la protección de CMEK.

  • Cuando la API de Artifact Registry se encuentra en la lista de políticas de Deny de servicios de la restricción constraints/gcp.restrictNonCmekServices, Artifact Registry rechaza crear repositorios nuevos que no estén protegidos por CMEK.

  • Cuando se configura constraints/gcp.restrictCmekCryptoKeyProjects, Artifact Registry crea repositorios protegidos por CMEK que están protegidos por una CryptoKey de una organización, una carpeta o un proyecto permitidos.

Pub/Sub admite las mismas restricciones. Cuando activas la API de Artifact Registry en un proyecto de Google Cloud, Artifact Registry intenta crear automáticamente un tema de Pub/Sub con el ID del tema gcr mediante claves de encriptación administradas por Google. Cuando la API de Pub/Sub se encuentra en la lista de políticas Deny para la restricción constraints/gcp.restrictNonCmekServices, Pub/Sub se niega a crear el tema. Si deseas crear el tema gcr con encriptación con CMEK, consulta las instrucciones de Pub/Sub para encriptar temas.

Para obtener más información sobre la configuración de las políticas de la organización, consulta Políticas de la organización de CMEK.

Próximos pasos