Habilitar claves de encriptado gestionadas por el cliente

En esta página se describe cómo cifrar el contenido almacenado en repositorios con claves de cifrado gestionadas por el cliente (CMEK).

Información general

De forma predeterminada, Artifact Registry cifra el contenido del cliente en reposo. Artifact Registry se encarga del cifrado sin que tengas que hacer nada más. Esta opción se llama Cifrado predeterminado de Google.

Si quieres controlar tus claves de cifrado, puedes usar claves de cifrado gestionadas por el cliente (CMEKs) en Cloud KMS con servicios integrados con CMEKs, como Artifact Registry. Si usas claves de Cloud KMS, tendrás control sobre su nivel de protección, ubicación, calendario de rotación, permisos de uso y acceso, y límites criptográficos. Además, Cloud KMS te permite ver los registros de auditoría y controlar los ciclos de vida de las claves. En lugar de que Google sea el propietario y gestione las claves de cifrado de claves (KEKs) simétricas que protegen tus datos, tú controlas y gestionas estas claves en Cloud KMS.

Una vez que hayas configurado tus recursos con CMEKs, la experiencia de acceder a tus recursos de Artifact Registry será similar a la de usar el cifrado predeterminado de Google. Para obtener más información sobre las opciones de encriptado, consulta Claves de encriptado gestionadas por el cliente (CMEK).

CMEK con Autokey de Cloud KMS

Puedes crear CMEKs manualmente para proteger tus recursos de Artifact Registry o usar Autokey de Cloud KMS. Con Autokey, los llaveros y las claves se generan bajo demanda como parte de la creación de recursos en Artifact Registry. Los agentes de servicio que usan las claves para las operaciones de cifrado y descifrado se crean si aún no existen y se les asignan los roles de gestión de identidades y accesos (IAM) necesarios. Para obtener más información, consulta la descripción general de Autokey.

Para configurar CMEK manualmente, consulta Crear una clave y conceder permisos.

Para configurar las CMEK con Autokey, consulta la sección Usar Autokey para crear claves de esta página.

Asigna una clave CMEK al crear un repositorio. No puedes cambiar el mecanismo de cifrado de un repositorio que ya tengas. Si tienes un repositorio cifrado con CMEK, no puedes cambiar el mecanismo de cifrado para usar una clave de cifradopropiedad de Google y gestionada por Google ni asignar otra clave de Cloud KMS para el cifrado.

Para obtener más información sobre las claves de cifrado gestionadas por el cliente (CMEK) en general, incluido cuándo y por qué habilitarlas, consulta la descripción general de CMEK.

Crear una clave y conceder permisos

En las siguientes instrucciones se explica cómo crear una clave para un repositorio y cómo conceder permisos para cifrar y descifrar datos del repositorio con la clave. Puedes usar una clave creada directamente en Cloud KMS o una clave gestionada de forma externa que pongas a disposición con Cloud External Key Manager.

  1. En el Google Cloud proyecto en el que quieras gestionar tus claves, sigue estos pasos:

    1. Habilita la API Cloud KMS.

    2. Crea un conjunto 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 repositorio que vas a cifrar.

  2. Si no has creado un repositorio en el proyecto de Artifact Registry, la cuenta de servicio de Artifact Registry no existe. Para crear la cuenta de servicio, ejecuta el siguiente comando:

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

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

  3. Asigna el rol de gestión de identidades y accesos Encargado del encriptado y desencriptado de la clave criptográfica (roles/cloudkms.cryptoKeyEncrypterDecrypter) a la cuenta de servicio de Artifact Registry. Concede este permiso en la clave que has creado.

    Consola

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

      Abrir la página de Cloud KMS

    2. Selecciona la clave que has creado.

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

      1. Selecciona MOSTRAR PANEL DE INFORMACIÓN.
      2. Haz clic en AÑADIR MIEMBRO.
      3. Añade la cuenta de servicio de Artifact Registry. La cuenta de servicio es service-PROJECT-NUMBER@gcp-sa-artifactregistry.iam.gserviceaccount.com, donde PROJECT-NUMBER es el número de proyecto del proyecto Google Cloud en el que se ejecuta Artifact Registry.
      4. En Selecciona un rol, elige Cloud KMS > Encargado del encriptado y desencriptado de claves de CryptoKey de Cloud KMS.
      5. Haz clic en GUARDAR.
    4. Repite el paso anterior para conceder acceso a la cuenta que creará los repositorios.

    5. Vuelve a la página Gestión de claves y selecciona la clave de nuevo.

    6. Selecciona MOSTRAR PANEL DE INFORMACIÓN. Deberías ver los roles en la columna Rol o miembro.

    gcloud

    1. Ejecuta el siguiente comando para conceder 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
      

      Dónde

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

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

A continuación, crea un repositorio y especifica la clave que se va a usar para el cifrado.

Usar Autokey para crear claves

Autokey crea una clave en la misma ubicación que el repositorio.

Roles obligatorios

Para obtener los permisos que necesitas para usar Autokey y crear repositorios protegidos, pide a tu administrador que te conceda los siguientes roles de gestión de identidades y accesos en la carpeta o el proyecto:

Para obtener más información sobre cómo conceder roles, consulta el artículo Gestionar el acceso a proyectos, carpetas y organizaciones.

También puedes conseguir los permisos necesarios a través de roles personalizados u otros roles predefinidos.

Crear claves

Antes de crear claves con Autokey, debes habilitar Autokey de Cloud KMS.

  1. Abre la página Repositorios en la consola de Google Cloud .

    Abre la página Repositorios.

  2. Haz clic en Crear repositorio.

  3. Rellena los campos obligatorios y opcionales de tu repositorio estándar, remoto o virtual.

  4. En la sección Encriptado, elige Cloud KMS con gestión automatizada de Autokey.

  5. Haz clic en Crear.

Quitar el acceso

Hay varias formas de quitar el acceso a un repositorio cifrado con CMEK:

Te recomendamos que revoques los permisos de la cuenta de servicio de Artifact Registry antes de inhabilitar o destruir una clave. Los cambios en los permisos se aplican en cuestión de segundos, por lo que puedes observar los efectos de inhabilitar o destruir una clave.

Si inhabilitas o destruyes la clave de cifrado de un repositorio, no podrás ver ni recuperar los datos de los artefactos. No se podrá acceder a todos los datos de artefactos almacenados en el repositorio, incluidos los artefactos compilados, los datos binarios arbitrarios (blobs) y los manifiestos, como un manifiesto de Docker o un archivo packument de npm. Los usuarios con el rol Lector de Artifact Registry (roles/artifactregistry.reader) o Lector (roles/artifactregistry.viewer) pueden seguir viendo los metadatos de los artefactos, como el nombre, la versión o la etiqueta del artefacto.

Los usuarios con el rol Administrador de Artifact Registry (roles/artifactregistry.admin) o Propietario (roles/owner) pueden eliminar el repositorio.

Políticas de organización de CMEK

Artifact Registry admite restricciones de políticas de 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 con CMEK.

  • Cuando la API de Artifact Registry está en la lista de servicios de la política Deny de la restricción constraints/gcp.restrictNonCmekServices, Artifact Registry rechaza la creación de repositorios que no estén protegidos con CMEK.

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

Pub/Sub admite las mismas restricciones. Cuando activas la API Artifact Registry en un Google Cloud proyecto, Artifact Registry intenta crear automáticamente un tema de Pub/Sub con el ID de tema gcr mediante claves de cifrado . Sin embargo, si la API Pub/Sub está en la Denylista de políticasconstraints/gcp.restrictNonCmekServices de la restricción, Pub/Sub no creará el tema. En este caso, debe crear el tema gcr con el cifrado CMEK. Para obtener más información, consulta las instrucciones para cifrar temas de Pub/Sub.

Para obtener más información sobre cómo configurar políticas de organización, consulta Políticas de organización de CMEK.

Siguientes pasos