Ce document explique comment mapper les rôles Container Registry avec les rôles Artifact Registry et les appliquer à un dépôt Artifact Registry. Vous pouvez effectuer les mêmes étapes à l'aide du outil de migration automatique.
Container Registry et Artifact Registry utilisent différents rôles IAM (Identity and Access Management) pour contrôler l'accès aux images de conteneur stockées dans le registre.
Pour faciliter la transition de Container Registry vers Artifact Registry, vous pouvez exécuter une commande Google Cloud CLI qui:
- Identifie les règles d'autorisation qui s'appliquent à un bucket de stockage Cloud Storage qui stocke des images pour Container Registry.
- Renvoie une stratégie avec des rôles Artifact Registry similaires afin que vous puissiez accorder à vos utilisateurs Container Registry existants l'accès aux dépôts Artifact Registry.
La commande utilise Policy Analyzer pour analyser les stratégies d'autorisation IAM.
Avant de commencer
Créez un dépôt Artifact Registry. Si vous avez choisi la méthode manuelle pour la transition, suivez les étapes pour migrer manuellement vers des dépôts
gcr.io
dans Artifact Registry ou migrer manuellement vers des dépôts standards.Enable the Cloud Asset API.
Vous devez activer l'API dans le projet ou l'organisation dans lesquels vous souhaitez analyser les stratégies d'autorisation existantes.
Installez et initialisez gcloud CLI. Pour une une installation existante, installez la dernière version à l'aide de la commande suivante:
gcloud components update
Rôles requis
Pour obtenir les autorisations nécessaires pour analyser les stratégies d'autorisation et accorder l'accès aux dépôts Artifact Registry, demandez à votre administrateur de vous accorder les rôles IAM suivants sur le projet, le dossier ou l'organisation pour lesquels vous souhaitez analyser les autorisations :
-
Lecteur d'éléments cloud (
roles/cloudasset.viewer
) -
Pour analyser les stratégies avec des rôles IAM personnalisés:
Lecteur de rôles (
roles/iam.roleViewer
) -
Pour analyser les stratégies à l'aide de la Google Cloud CLI, procédez comme suit:
Consommateur de Service Usage (
roles/serviceusage.serviceUsageConsumer
) - Pour accorder des rôles à un dépôt Artifact Registry : Administrateur Artifact Registry
Pour en savoir plus sur l'attribution de rôles, consultez la page Gérer l'accès aux projets, aux dossiers et aux organisations.
Ces rôles prédéfinis contiennent les autorisations requises pour analyser les stratégies d'autorisation et accorder l'accès aux dépôts Artifact Registry. Pour connaître les autorisations exactes requises, développez la section Autorisations requises :
Autorisations requises
Les autorisations suivantes sont requises pour analyser les règles d'autorisation et accorder l'accès aux dépôts Artifact Registry:
-
cloudasset.assets.analyzeIamPolicy
-
cloudasset.assets.searchAllResources
-
cloudasset.assets.searchAllIamPolicies
-
Pour analyser les stratégies avec des rôles IAM personnalisés:
iam.roles.get
-
Pour analyser les stratégies à l'aide de la Google Cloud CLI, procédez comme suit:
serviceusage.services.use
-
Pour attribuer des rôles sur un dépôt Artifact Registry:
artifactregistry.repositories.setIamPolicy
Vous pouvez également obtenir ces autorisations avec des rôles personnalisés ou d'autres rôles prédéfinis.
Utiliser l'outil de mappage
L'outil de mappage vérifie les stratégies d'autorisation pour un registre Container Registry spécifié
nom d'hôte, tel que gcr.io
.
L'outil recherche des ensembles d'autorisations dans des rôles Cloud Storage prédéfinis et les met en correspondance avec des rôles Artifact Registry. Pour comparer les autorisations Cloud Storage aux rôles Artifact Registry, consultez la section Mappages de rôles.
Pour utiliser l'outil de mappage des rôles:
Exécutez l'outil de mappage :
gcloud beta artifacts docker upgrade print-iam-policy HOSTNAME \ --project=PROJECT_ID > POLICY_FILENAME
Remplacez les valeurs suivantes :
HOSTNAME est le nom d'hôte Container Registry souhaité. l'outil à analyser:
gcr.io
asia.gcr.io
eu.gcr.io
us.gcr.io
PROJECT_ID est l'ID du projet Google Cloud. avec l'hôte du registre que vous analysez.
POLICY_FILE est le nom de fichier de la stratégie, au format YAML, que l'outil renverra.
L'exemple de commande suivant analyse le bucket de stockage pour
gcr.io
dans le projetmy-project
pour les règles d'autorisation appliquées directement au ou sont hérités de l'ID d'organisation parente101231231231
et pour ses descendants.gcloud beta artifacts docker upgrade print-iam-policy gcr.io \ --project=my-project > gcr-io-policy.yaml
La commande renvoie un fichier de stratégie au format YAML avec le rôle Artifact Registry en fonction des règles d'autorisation existantes pour le bucket de stockage. Si le le projet parent du bucket de stockage se trouve dans une organisation, la règle inclut les comptes principaux dont l'accès est accordé au niveau du dossier au niveau de l'organisation.
L'exemple suivant inclut des liaisons de rôles Artifact Registry pour:
- Agents de service Cloud Build, Compute Engine et Container Registry Les agents de service agissent au nom des services Google Cloud.
- Le compte utilisateur
user@example.com
- Le compte de service géré par l'utilisateur
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
Supprimez de la stratégie la ligne correspondant à l'agent de service Container Registry car ce compte de service n'a pas besoin d'accéder à votre Artifact Registry des dépôts. Le suffixe de l'adresse e-mail de l'agent de service est
containerregistry.iam.gserviceaccount.com
.Dans l'exemple de règle de l'étape précédente, la ligne avec l'agent de service Container Registry est la suivante :
- serviceAccount:service-1231231231231@containerregistry.iam.gserviceaccount.com
Examinez les autres liaisons de rôles pour vérifier qu'elles sont appropriées.
Artifact Registry propose des rôles prédéfinis supplémentaires que vous pouvez envisager d'utiliser pour certains comptes principaux. Par exemple, l'administrateur de dépôt Artifact Registry avec création lors de l'envoi permet à un principal de créer des dépôts gcr.io dans Artifact Registry, mais pas d'autres dépôts Artifact Registry.
Ajoutez des liaisons de rôles pour tous les comptes principaux manquants dans le fichier de stratégie.
Les comptes principaux suivants peuvent être manquants dans le fichier de stratégie renvoyé:
- Les comptes principaux disposant de rôles personnalisés et ces rôles personnalisés ne disposent pas ensembles d'autorisations que l'outil a utilisés pour mapper les rôles.
- Comptes principaux auxquels l'accès a été accordé à un dossier parent ou à une organisation si vous n’êtes pas autorisé à afficher un dossier parent ou une organisation.
Appliquez les liaisons de règles à vos dépôts Artifact Registry.
gcloud artifacts repositories set-iam-policy REPOSITORY FILENAME \ --project=PROJECT_ID \ --location=LOCATION
Remplacez les valeurs suivantes :
- REPOSITORY est le nom du dépôt.
- POLICY_FILENAME est le nom du fichier de stratégie que vous s'appliquent au dépôt.
- PROJECT_ID est l'ID de projet.
- LOCATION est l'emplacement régional ou multirégional du dépôt.
Pour le projet
my-project
, l'exemple suivant applique la règle dans le fichiergcr-io-policy.yaml
vers le dépôtgcr.io
dans le fichierus
multirégional:gcloud artifacts repositories set-iam-policy gcr.io gcr-io-policy.yaml \ --project=my-project \ --location=us
Si vous souhaitez appliquer des liaisons de rôles à une ressource de niveau supérieur, modifiez la stratégie de projet, de dossier ou d'organisation existante avec les liaisons que vous souhaitez ajouter.
Mappages des rôles
Le tableau suivant indique les rôles prédéfinis d'Artifact Registry à accorder aux utilisateurs existants de Container Registry en fonction des autorisations Cloud Storage dont ils disposent.
Autorisations requises dans le rôle | Rôle Artifact Registry |
---|---|
storage.objects.get storage.objects.list |
Lecteur Artifact Registry |
storage.buckets.get storage.objects.get storage.objects.list storage.objects.create |
Rédacteur Artifact Registry |
storage.buckets.get storage.objects.get storage.objects.list storage.objects.create storage.objects.delete |
Administrateur de dépôts Artifact Registry |
storage.buckets.get storage.objects.get storage.objects.list storage.objects.create storage.buckets.create |
Administrateur Artifact Registry |