Container Registry et Artifact Registry utilisent des rôles Identity and Access Management différents pour contrôler l'accès aux images de conteneurs stockées dans le registre.
Pour vous aider à passer de Container Registry à Artifact Registry, vous pouvez exécuter une commande Google Cloud CLI qui:
- Identifie les règles d'autorisation qui s'appliquent à un bucket 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 IAM Policy Analyzer pour analyser les stratégies d'autorisation IAM.
Avant de commencer
Activez Cloud Asset API.
Vous devez activer l'API dans le projet ou l'organisation où vous souhaitez analyser les règles d'autorisation existantes.
Installez et initialisez gcloud CLI. Pour une installation existante, installez la dernière version à l'aide de la commande suivante:
gcloud components update
Rôles requis
Afin d'obtenir les autorisations dont vous avez besoin pour analyser les règles d'autorisation et d'accorder l'accès aux dépôts Artifact Registry, demandez à votre administrateur de vous attribuer les rôles IAM suivants sur le projet, le dossier ou l'organisation dont vous souhaitez analyser les autorisations:
-
Lecteur d'éléments cloud (
roles/cloudasset.viewer
) -
Pour analyser des stratégies avec des rôles IAM personnalisés : Lecteur de rôles (
roles/iam.roleViewer
) -
Pour analyser des règles à l'aide de la Google Cloud CLI : Consommateur de Service Usage (
roles/serviceusage.serviceUsageConsumer
) - Pour attribuer des rôles sur un dépôt Artifact Registry : Administrateur Artifact Registry :
Pour en savoir plus sur l'attribution de rôles, consultez la section Gérer les accès.
Ces rôles prédéfinis contiennent les autorisations requises pour analyser les règles 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 des règles à l'aide de la Google Cloud CLI :
serviceusage.services.use
-
Pour accorder 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 cartographie
L'outil de mappage vérifie les règles d'autorisation pour un nom d'hôte Container Registry spécifié, tel que gcr.io
.
L'outil recherche des ensembles d'autorisations compris dans les rôles Cloud Storage prédéfinis et les mappe aux rôles Artifact Registry. Pour comparer les autorisations Cloud Storage et les 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 que l'outil doit analyser:
gcr.io
asia.gcr.io
eu.gcr.io
us.gcr.io
PROJECT_ID est l'ID du projet Google Cloud associé à l'hôte de registre que vous analysez.
POLICY_FILE est le nom de fichier de la stratégie, au format YAML, que l'outil renvoie.
L'exemple de commande suivant analyse le bucket de stockage pour
gcr.io
dans le projetmy-project
afin de détecter les règles d'autorisation appliquées directement au bucket ou héritées de l'ID de l'organisation parente101231231231
et de 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 des liaisons de rôles Artifact Registry, basées sur les stratégies d'autorisation existantes pour le bucket de stockage. Si le projet parent du bucket de stockage appartient à une organisation, le fichier de stratégie inclut les comptes principaux disposant d'un accès au niveau du dossier ou de l'organisation.
L'exemple suivant inclut des liaisons de rôles Artifact Registry pour:
- les agents de service Cloud Build, Compute Engine et Container Registry ; Les agents de service sont des comptes de service gérés par Google qui agissent pour le compte des services Google Cloud.
- Le compte utilisateur
user@example.com
- Compte de service géré par l'utilisateur
deploy@my-project.iam.gserviceaccount.com
.
bindings: - members: - 3213213213213@cloudbuild.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 la ligne correspondant à l'agent de service Container Registry du fichier de stratégie, car ce compte de service n'a pas besoin d'accéder à vos dépôts Artifact Registry. Le suffixe de l'adresse e-mail de l'agent de service est
containerregistry.iam.gserviceaccount.com
.Dans l'exemple de stratégie de l'étape précédente, la ligne contenant 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 dispose de 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 Create-on-push d'Artifact Registry autorise un compte principal à créer des dépôts gcr.io dans Artifact Registry, mais ne l'autorise pas à créer d'autres dépôts Artifact Registry.
Ajoutez des liaisons de rôles pour tous les comptes principaux qui ne figurent pas dans le fichier de stratégie.
Les comptes principaux suivants peuvent ne pas figurer dans le fichier de stratégie renvoyé:
- Les comptes principaux dotés de rôles personnalisés ne disposent pas des ensembles d'autorisations utilisés par l'outil pour mapper les rôles.
- Comptes principaux auxquels l'accès a été accordé sur un dossier parent ou une organisation si vous ne disposez pas des autorisations nécessaires pour afficher un dossier parent ou une organisation
Appliquez les liaisons de stratégie à 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 appliquez au dépôt.
- PROJECT_ID est l'ID de projet.
- LOCATION est l'emplacement régional ou multirégional du dépôt.
L'exemple suivant pour le projet
my-project
applique la stratégie du fichiergcr-io-policy.yaml
au dépôt nommégcr.io
dans l'emplacement multirégionalus
: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ôle à une ressource de niveau supérieur, modifiez la règle de projet, de dossier ou d'administration existante avec les liaisons que vous souhaitez ajouter.
Mappages de rôles
Le tableau suivant présente les rôles Artifact Registry prédéfinis à attribuer aux utilisateurs de Container Registry existants en fonction des autorisations Cloud Storage dont ils disposent.
Autorisations requises pour 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 |