Habilita las 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, Artifact Registry encripta el contenido del cliente almacenado en reposo. Artifact Registry 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, incluido Artifact Registry. 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 Artifact Registry 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).

CMEK con Autokey de Cloud KMS

Puedes crear CMEK de forma manual para proteger tus recursos de Artifact Registry o usar la clave automática de Cloud KMS. Con Autokey, los llaveros de claves y las claves se generan a pedido como parte de la creación de recursos en Artifact Registry. Los agentes de servicio que usan las claves para las operaciones de encriptación y desencriptación se crean si aún no existen y se les otorgan los roles de Identity and Access Management (IAM) necesarios. Para obtener más información, consulta Descripción general de las claves automáticas.

Para configurar CMEK de forma manual, consulta Crea una clave y otorga permisos.

Para configurar una CMEK con Autokey, consulta Cómo usar Autokey para crear claves en esta página.

Debes asignar una clave de CMEK cuando creas un repositorio. No puedes cambiar el mecanismo de encriptación de un repositorio existente. Si tienes un repositorio encriptado con una CMEK, no puedes cambiar el mecanismo de encriptación para usar una clave de encriptación, propiedad de Google y administrada por 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 descripción general de las CMEK.

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 directamente en Cloud KMS o una clave administrada de forma externa que pongas a disposición con Cloud External Key Manager.

  1. En el Google Cloud proyecto 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 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.

    Console

    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 del proyecto 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á los repositorios.

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

    6. Selecciona MOSTRAR EL PANEL DE INFORMACIÓN. Deberías ver los roles 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
      

      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 del proyecto Google Cloud en el que se ejecuta Artifact Registry.
    2. Repite el paso anterior para otorgar acceso a la cuenta que creará los repositorios.

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

A continuación, crea un repositorio y especifica la clave que se usará para la encriptación.

Usa Autokey para crear claves

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

Roles obligatorios

Para obtener los permisos que necesitas para usar Autokey y crear repositorios protegidos, pídele a tu administrador que te otorgue los siguientes roles de IAM en la carpeta o el proyecto:

Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.

También puedes obtener los permisos necesarios mediante roles personalizados o cualquier otro rol predefinido.

Crea claves

Antes de crear claves con Autokey, debes habilitar la clave automática de Cloud KMS.

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

    Abrir la página repositorios

  2. Haz clic en Crear repositorio.

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

  4. En la sección Encryption, elige Cloud KMS con administración automática de Autokey.

  5. Haz clic en Crear.

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 el rol de lector de Artifact Registry (roles/artifactregistry.reader) o de Visualizador (roles/artifactregistry.viewer) aún pueden ver metadatos de un artefacto, como el nombre, la versión o la etiqueta del artefacto.

Los usuarios que tienen el rol de administrador de Artifact Registry (roles/artifactregistry.admin) o de propietario (roles/owner) 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 de 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 está en la lista de servicios de la política Deny de la restricción constraints/gcp.restrictNonCmekServices, Artifact Registry se niega a 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, carpeta o proyecto permitidos.

Pub/Sub admite las mismas restricciones. Cuando activas la API de Artifact Registry en un Google Cloud proyecto, Artifact Registry intenta crear automáticamente un tema de Pub/Sub con el ID de tema gcr usando propiedad de Google y administradas por Google con tecnología de Google Cloud. Sin embargo, si la API de Pub/Sub está en la lista de políticas Deny para la restricción constraints/gcp.restrictNonCmekServices, Pub/Sub no creará el tema. En este caso, debes crear el tema gcr con encriptación de CMEK. Para obtener más información, 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