Asignar roles de IAM de Container Registry a Artifact Registry

En este documento se explica cómo asignar roles de Container Registry a roles de Artifact Registry y aplicarlos a un repositorio de Artifact Registry. Puedes seguir los mismos pasos con la herramienta de migración automática.

Container Registry y Artifact Registry usan diferentes roles de gestión de identidades y accesos (IAM) para controlar el acceso a las imágenes de contenedor almacenadas en el registro.

Para ayudarte a migrar de Container Registry a Artifact Registry, puedes ejecutar un comando de la CLI de Google Cloud que haga lo siguiente:

  • Identifica las políticas de permiso que se aplican a un segmento de Cloud Storage que almacena imágenes de Container Registry.
  • Devuelve una política con roles de Artifact Registry similares para que puedas conceder acceso a los repositorios de Artifact Registry a tus usuarios de Container Registry.

El comando usa Analizador de políticas de gestión de identidades y accesos para analizar las políticas de gestión de identidades y accesos.

Antes de empezar

  1. Crea un repositorio de Artifact Registry. Si has elegido el método manual para hacer la transición, sigue los pasos para migrar manualmente a repositorios gcr.io en Artifact Registry o migrar manualmente a repositorios pkg.dev.

  2. Enable the Cloud Asset API.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the API

    Debes habilitar la API en el proyecto en el que quieras analizar las políticas de permisos.

  3. Instala e inicializa gcloud CLI. Si ya tienes una instalación, actualiza a la versión más reciente con el comando:

    gcloud components update
    

Roles obligatorios

Para obtener los permisos que necesitas para analizar las políticas de permisos y conceder acceso a los repositorios de Artifact Registry, pide a tu administrador que te conceda los siguientes roles de gestión de identidades y accesos en el proyecto, la carpeta o la organización que quieras analizar para obtener permisos:

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

Estos roles predefinidos contienen los permisos necesarios para analizar las políticas de permisos y conceder acceso a los repositorios de Artifact Registry. Para ver los permisos exactos que se necesitan, despliega la sección Permisos necesarios:

Permisos obligatorios

Para analizar las políticas de permisos y conceder acceso a los repositorios de Artifact Registry, se necesitan los siguientes permisos:

  • cloudasset.assets.analyzeIamPolicy
  • cloudasset.assets.searchAllResources
  • cloudasset.assets.searchAllIamPolicies
  • Para analizar políticas con roles personalizados de gestión de identidades y accesos, sigue estos pasos: iam.roles.get
  • Para usar Google Cloud CLI y analizar las políticas, sigue estos pasos: serviceusage.services.use
  • Para conceder roles en un repositorio de Artifact Registry, sigue estos pasos: artifactregistry.repositories.setIamPolicy

También puedes obtener estos permisos con roles personalizados u otros roles predefinidos.

Usar la herramienta de asignación

La herramienta de asignación comprueba las políticas de permiso de un nombre de host de Container Registry especificado, como gcr.io.

La herramienta busca conjuntos de permisos que se encuentran en roles de Cloud Storage predefinidos y los asigna a roles de Artifact Registry. Para ver una comparación de los permisos de Cloud Storage con los roles de Artifact Registry, consulta Asignaciones de roles.

Para usar la herramienta de asignación de roles, sigue estos pasos:

  1. Ejecuta la herramienta de asignación:

    gcloud beta artifacts docker upgrade print-iam-policy HOSTNAME \
        --project=PROJECT_ID > POLICY_FILENAME
    

    Sustituye los siguientes valores:

    • HOSTNAME es el nombre de host de Container Registry que quieres que analice la herramienta:

      • gcr.io
      • asia.gcr.io
      • eu.gcr.io
      • us.gcr.io
    • PROJECT_ID es el ID del Google Cloud proyecto con el host del registro que estás analizando.

    • POLICY_FILE es el nombre del archivo de la política, en formato YAML, que devolverá la herramienta.

    El siguiente comando de ejemplo analiza el segmento de almacenamiento de gcr.io en el proyecto my-project para buscar políticas de permiso que se apliquen directamente al segmento o que se hereden del ID de organización superior 101231231231 y sus descendientes.

    gcloud beta artifacts docker upgrade print-iam-policy gcr.io \
        --project=my-project > gcr-io-policy.yaml
    

    El comando devuelve un archivo de política en formato YAML con enlaces de roles de Artifact Registry, basado en las políticas de permiso existentes del segmento de almacenamiento. Si el proyecto principal del segmento de almacenamiento pertenece a una organización, el archivo de política incluye las entidades a las que se ha concedido acceso a nivel de carpeta o de organización.

    Por ejemplo, la siguiente muestra incluye enlaces de roles de Artifact Registry para:

    bindings:
    - members:
      - service-3213213213213@gcp-sa-cloudbuild.iam.gserviceaccount.com
      - user:user@example.com
      role: roles/artifactregistry.repoAdmin
    - members:
      - serviceAccount:deploy@my-project.iam.gserviceaccount.com
      - serviceAccount:service-1231231231231@@compute-system.iam.gserviceaccount.com
      - serviceAccount:service-1231231231231@containerregistry.iam.gserviceaccount.com
      role: roles/artifactregistry.reader
    
  2. Elimina la línea del agente de servicio de Container Registry del archivo de política, ya que esa cuenta de servicio no requiere acceso a tus repositorios de Artifact Registry. El sufijo de la dirección de correo del agente de servicio es containerregistry.iam.gserviceaccount.com.

    En la política de ejemplo del paso anterior, la línea con el agente de servicio de Container Registry es la siguiente:

    - serviceAccount:service-1231231231231@containerregistry.iam.gserviceaccount.com
    
  3. Revisa las demás vinculaciones de roles para confirmar que son adecuadas.

    Artifact Registry tiene otros roles predefinidos que puede que quieras asignar a algunas entidades. Por ejemplo, el rol Administrador de repositorio de creación al insertar de Artifact Registry permite a una entidad crear repositorios gcr.io en Artifact Registry, pero no le permite crear otros repositorios de Artifact Registry.

  4. Añade vinculaciones de roles para las cuentas principales que falten en el archivo de política.

    Es posible que falten los siguientes elementos principales en el archivo de política devuelto:

    • Las principales con roles personalizados y esos roles personalizados no tienen los conjuntos de permisos que la herramienta usaba para asignar roles.
    • Principales a los que se les ha concedido acceso a una carpeta superior o a una organización si no tienes permisos para ver una carpeta superior o una organización.
  5. Aplica las vinculaciones de políticas a tus repositorios de Artifact Registry.

    gcloud artifacts repositories set-iam-policy REPOSITORY FILENAME \
        --project=PROJECT_ID \
        --location=LOCATION
    

    Sustituye los siguientes valores:

    • REPOSITORY es el nombre del repositorio.
    • POLICY_FILENAME es el nombre del archivo de política que vas a aplicar al repositorio.
    • PROJECT_ID es el ID del proyecto.
    • LOCATION es la ubicación regional o multirregional del repositorio.

    En el siguiente ejemplo del proyecto my-project, se aplica la política del archivo gcr-io-policy.yaml al repositorio llamado gcr.io en la multirregión us:

    gcloud artifacts repositories set-iam-policy gcr.io gcr-io-policy.yaml \
        --project=my-project \
        --location=us
    

    Si quieres aplicar enlaces de roles a un recurso de nivel superior, edita la política de proyecto, carpeta u organización con los enlaces que quieras añadir.

Asignaciones de roles

En la siguiente tabla se muestran los roles predefinidos de Artifact Registry que se deben asignar a los usuarios de Container Registry en función de los permisos de Cloud Storage que tengan.

Permisos necesarios en el rol Rol de Artifact Registry
storage.objects.get
storage.objects.list
Lector de Artifact Registry
storage.buckets.get
storage.objects.get
storage.objects.list
storage.objects.create
Escritor de Artifact Registry
storage.buckets.get
storage.objects.get
storage.objects.list
storage.objects.create
storage.objects.delete
Administrador del repositorio de Artifact Registry
storage.buckets.get
storage.objects.get
storage.objects.list
storage.objects.create
storage.buckets.create
Administrador de Artifact Registry