Container Registry y Artifact Registry usan roles diferentes de Identity and Access Management para controlar acceso a imágenes de contenedor almacenadas en el registro.
Para facilitar la transición de Container Registry a Artifact Registry, puedes ejecutar un comando de Google Cloud CLI que:
- Identifica las políticas de permisos 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 a Artifact Registry para que puedas otorgar que tus usuarios existentes de Container Registry accedan a los repositorios de Artifact Registry.
El comando usa el Analizador de políticas de IAM para y analizar las políticas de permisos de IAM.
Antes de comenzar
Habilita Cloud Asset API.
Debes habilitar la API en el proyecto o la organización que quieras para analizar las políticas de permisos existentes.
Instala e inicializa gcloud CLI. Para un instalación existente, actualiza a la última versión con el siguiente comando:
gcloud components update
Roles obligatorios
Para obtener los permisos que necesitas para analizar las políticas de permisos y otorgar acceso a los repositorios de Artifact Registry, haz lo siguiente: solicita a tu administrador que te otorgue el los siguientes roles de IAM en el proyecto, la carpeta o la organización que quieres Analiza los permisos:
-
Visualizador de recursos de Cloud (
roles/cloudasset.viewer
) -
Para analizar políticas con funciones de IAM personalizadas, haz lo siguiente:
Visualizador de roles (
roles/iam.roleViewer
) -
Si quieres usar Google Cloud CLI para analizar políticas, sigue estos pasos:
Consumidor de Service Usage (
roles/serviceusage.serviceUsageConsumer
) - Para otorgar funciones en un repositorio de Artifact Registry, sigue estos pasos: Administrador de Artifact Registry
Si quieres obtener más información para otorgar roles, consulta Administra el acceso.
Estos roles predefinidos contienen los permisos necesarios para analizar las políticas de permisos 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 permisos y otorgar acceso a los repositorios de Artifact Registry:
-
cloudasset.assets.analyzeIamPolicy
-
cloudasset.assets.searchAllResources
-
cloudasset.assets.searchAllIamPolicies
-
Para analizar políticas con roles de IAM personalizados, sigue estos pasos:
iam.roles.get
-
Si quieres usar Google Cloud CLI para analizar políticas, sigue estos pasos:
serviceusage.services.use
-
Para otorgar funciones en un repositorio de Artifact Registry, sigue estos pasos:
artifactregistry.repositories.setIamPolicy
También puedes obtener estos permisos con roles personalizados o con otros roles predefinidos
Cómo usar la herramienta de creación de mapas
La herramienta de asignación verifica las políticas de permisos de un Container Registry específico
nombre de host, como gcr.io
.
La herramienta busca conjuntos de permisos que estén en Roles de Cloud Storage y se las asigna a roles de Artifact Registry. Para comparar de permisos de Cloud Storage para roles de Artifact Registry, consulta Asignaciones de roles.
Sigue estos pasos para usar la herramienta de asignación de roles:
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. la herramienta para analizar:
gcr.io
asia.gcr.io
eu.gcr.io
us.gcr.io
PROJECT_ID es el ID del proyecto de Google Cloud. con el host de registro que estás analizando.
POLICY_FILE es el nombre de archivo de la política, en formato YAML. que devolverá la herramienta.
El siguiente comando de ejemplo analiza el bucket de almacenamiento de
gcr.io
en en el proyectomy-project
para las políticas de permisos que se aplican directamente al bucket o se heredan del ID de la organización superior101231231231
y sus subordinados.gcloud beta artifacts docker upgrade print-iam-policy gcr.io \ --project=my-project > gcr-io-policy.yaml
El comando muestra un archivo de política en formato YAML con el rol de Artifact Registry de políticas, en función de las políticas de permisos existentes para el bucket de almacenamiento. Si el botón superior para el bucket de almacenamiento está en una organización, la política incluye a las principales que tienen acceso otorgado en la carpeta o a nivel de la organización.
En el siguiente ejemplo, se incluyen vinculaciones de roles de Artifact Registry para lo siguiente:
- Cloud Build, Compute Engine y Container Registry agentes de servicio. Los agentes de servicio actúan en nombre de servicios de Google Cloud.
- La cuenta de usuario
user@example.com
- 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 de la política la línea del agente de servicio de Container Registry ya que esa cuenta de servicio no necesita acceso a tu Artifact Registry de Cloud Storage. 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 la El agente de servicio de Container Registry tiene las siguientes características:
- serviceAccount:service-1231231231231@containerregistry.iam.gserviceaccount.com
Revisa las otras vinculaciones de roles para confirmar que sean adecuadas.
Artifact Registry tiene roles predefinidos adicionales que puedes considerar para algunas principales. Por ejemplo, Artifact Registry El administrador de repositorios Create-on-push permite que una principal cree Los repositorios de gcr.io en Artifact Registry, pero no les permiten crear. otros repositorios de Artifact Registry.
Agrega vinculaciones de roles para cualquier principal que falte en el archivo de políticas.
Es posible que falten las siguientes principales en el archivo de políticas devuelto:
- Las principales con roles personalizados y esos roles personalizados no tienen los Conjuntos de permisos que la herramienta usó para asignar roles
- Principales a las que se les otorgó acceso a una organización o carpeta superior si no tienes permiso para ver una organización o carpeta superior.
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íticas se aplican 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 en el archivogcr-io-policy.yaml
al repositorio llamadogcr.io
enus
multirregión:gcloud artifacts repositories set-iam-policy gcr.io gcr-io-policy.yaml \ --project=my-project \ --location=us
Si quieres aplicar vinculaciones de roles a un recurso de nivel superior, edita el política de la organización, del proyecto o de la carpeta existente con el vinculaciones que quieres 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 la Cloud Storage y los permisos que tienen.
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 |