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
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 repositoriospkg.dev
.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 theserviceusage.services.enable
permission. Learn how to grant roles.Debes habilitar la API en el proyecto en el que quieras analizar las políticas de permisos.
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:
-
Visor de recursos de Cloud (
roles/cloudasset.viewer
) -
Para analizar políticas con roles de gestión de identidades y accesos personalizados, sigue estos pasos:
Lector de roles (
roles/iam.roleViewer
) -
Para usar Google Cloud CLI y analizar las políticas, sigue estos pasos:
Consumidor de uso de servicios (
roles/serviceusage.serviceUsageConsumer
) - Para conceder roles en un repositorio de Artifact Registry, sigue estos pasos: Administrador de Artifact Registry
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:
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 proyectomy-project
para buscar políticas de permiso que se apliquen directamente al segmento o que se hereden del ID de organización superior101231231231
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:
- Agentes de servicio de Cloud Build, Compute Engine y Container Registry. Los agentes de servicio actúan en nombre de los servicios deGoogle Cloud .
- La cuenta de usuario
user@example.com
- La cuenta de servicio gestionada por el usuario
deploy@my-project.iam.gserviceaccount.com
.
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
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
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.
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.
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 archivogcr-io-policy.yaml
al repositorio llamadogcr.io
en la multirregiónus
: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 |