En este documento, se muestra 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 Identity and Access Management (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 Google Cloud CLI que haga lo siguiente:
- Identifica las políticas de permiso que se aplican a un bucket de almacenamiento de Cloud Storage que almacena imágenes para Container Registry.
- Devuelve una política con roles similares de Artifact Registry para que puedas otorgar a tus usuarios existentes de Container Registry acceso a los repositorios de Artifact Registry.
El comando usa el Analizador de políticas de IAM para analizar las políticas de permisos de IAM.
Antes de comenzar
Crea un repositorio de Artifact Registry. Si elegiste el método manual para la transición, sigue los pasos para migrar manualmente a repositorios de
gcr.io
en Artifact Registry o migrar manualmente a repositorios depkg.dev
.Enable the Cloud Asset API.
Debes habilitar la API en el proyecto en el que deseas analizar las políticas de permiso existentes.
Instala e inicializa la CLI de gcloud. Para una instalación existente, actualiza a la versión más reciente con el siguiente comando:
gcloud components update
Roles obligatorios
Para obtener los permisos que necesitas para analizar las políticas de permiso y otorgar acceso a los repositorios de Artifact Registry, pídele a tu administrador que te otorgue los siguientes roles de IAM en el proyecto, la carpeta o la organización que deseas analizar para obtener permisos:
-
Visualizador de recursos de Cloud (
roles/cloudasset.viewer
) -
Para analizar políticas con roles de IAM personalizados:
Visualizador de roles (
roles/iam.roleViewer
) -
Para usar Google Cloud CLI y analizar políticas, haz lo siguiente:
Consumidor de Service Usage (
roles/serviceusage.serviceUsageConsumer
) - Para otorgar roles en un repositorio de Artifact Registry, haz lo siguiente: Administrador de Artifact Registry
Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.
Estos roles predefinidos contienen los permisos necesarios para analizar las políticas de permiso y otorgar acceso a los repositorios de Artifact Registry. Para ver los permisos exactos que son necesarios, expande la sección Permisos requeridos:
Permisos necesarios
Se requieren los siguientes permisos para analizar las políticas de permiso y otorgar acceso a los repositorios de Artifact Registry:
-
cloudasset.assets.analyzeIamPolicy
-
cloudasset.assets.searchAllResources
-
cloudasset.assets.searchAllIamPolicies
-
Para analizar políticas con roles personalizados de IAM, haz lo siguiente:
iam.roles.get
-
Para usar Google Cloud CLI y analizar políticas, haz lo siguiente:
serviceusage.services.use
-
Para otorgar roles en un repositorio de Artifact Registry, haz lo siguiente:
artifactregistry.repositories.setIamPolicy
También puedes obtener estos permisos con roles personalizados o con otros roles predefinidos.
Usa la herramienta de asignación
La herramienta de asignación verifica las políticas de permiso para un nombre de host de Container Registry especificado, como gcr.io
.
La herramienta verifica los conjuntos de permisos que se encuentran en los roles predefinidos de Cloud Storage y los asigna a los roles de Artifact Registry. Para comparar los permisos de Cloud Storage con los roles de Artifact Registry, consulta Asignaciones de roles.
Para usar la herramienta de asignación de roles, haz lo siguiente:
Ejecuta la herramienta de asignación:
gcloud beta artifacts docker upgrade print-iam-policy HOSTNAME \ --project=PROJECT_ID > POLICY_FILENAME
Reemplaza los siguientes valores:
HOSTNAME es el nombre de host de Container Registry que deseas que analice la herramienta:
gcr.io
asia.gcr.io
eu.gcr.io
us.gcr.io
PROJECT_ID es el ID del proyecto Google Cloud con el host del registro que analizas.
POLICY_FILE es el nombre del archivo de la política, en formato YAML, que devolverá la herramienta.
En el siguiente ejemplo de comando, se analiza el bucket de almacenamiento para
gcr.io
en el proyectomy-project
en busca de políticas de permisos que se apliquen directamente al bucket o que se hereden del ID de la organización principal101231231231
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 vinculaciones de roles de Artifact Registry, según las políticas de permiso existentes para el bucket de almacenamiento. Si el proyecto principal del bucket de almacenamiento se encuentra en una organización, el archivo de política incluye principales a los que se les otorgó acceso a nivel de la carpeta o la organización.
Por ejemplo, la siguiente muestra incluye vinculaciones de roles de Artifact Registry para lo siguiente:
- 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
- Es la cuenta de servicio administrada 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
Quita 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 electrónico 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 sean adecuadas.
Artifact Registry tiene roles predefinidos adicionales que tal vez quieras considerar para algunas principales. Por ejemplo, el administrador del repositorio de Artifact Registry para envíos con creaciones permite que un principal cree repositorios de gcr.io en Artifact Registry, pero no le permite crear otros repositorios de Artifact Registry.
Agrega vinculaciones de roles para las principales que falten en el archivo de política.
Es posible que falten los siguientes 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.
- Las principales a las que se les otorgó acceso en una organización o carpeta principal si no tienes permisos para ver una organización o carpeta principal
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
Reemplaza los siguientes valores:
- REPOSITORY es el nombre del repositorio.
- POLICY_FILENAME es el nombre del archivo de política que aplicas al repositorio.
- PROJECT_ID es el ID del proyecto.
- LOCATION es la ubicación regional o multirregional del repositorio.
En el siguiente ejemplo para el 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 deseas aplicar vinculaciones de roles a un recurso de nivel superior, edita la política existente del proyecto, la carpeta o la organización con las vinculaciones que deseas agregar.
Asignaciones de roles
En la siguiente tabla, se muestran los roles predefinidos de Artifact Registry que se deben otorgar a los usuarios existentes de Container Registry según los permisos de Cloud Storage que tengan.
Permisos obligatorios 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 |