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).

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 cifradode Google Cloud 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 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 Trusted Cloud proyecto en el que quieras gestionar tus claves, haz lo siguiente:

    1. Habilita la API Cloud KMS.

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

  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.s3ns-system.iam.gserviceaccount.com, donde PROJECT-NUMBER es el número de proyecto del proyecto Trusted 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.s3ns-system.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.
      • KEYRING es el nombre del conjunto de claves.
      • PROJECT-NUMBER es el número de proyecto del Trusted 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.

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 Trusted Cloud by S3NS proyecto, Artifact Registry intenta crear automáticamente un tema de Pub/Sub con el ID de tema gcr mediante claves de cifrado gestionadas por Google, propiedad de Google y basadas en Google Cloud . 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