Mapper les rôles IAM de Container Registry vers Artifact Registry

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 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
  • Affiche une stratégie avec des rôles Artifact Registry similaires pour que vous puissiez accorder vos utilisateurs Container Registry existants aux dépôts Artifact Registry.

La commande utilise IAM Policy Analyzer pour et analyser les stratégies d'autorisation IAM.

Avant de commencer

  1. Activez Cloud Asset API.

    Activer l'API

    Vous devez activer l'API dans le projet ou l'organisation pour lesquels vous souhaitez pour analyser les règles d'autorisation existantes.

  2. 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 le en fonction des rôles IAM définis pour le projet, le dossier ou l'organisation analyser les autorisations:

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 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 cartographie

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 les ensembles d'autorisations les rôles Cloud Storage et les mappe à des rôles Artifact Registry. À titre de comparaison des autorisations Cloud Storage aux rôles Artifact Registry, consultez Mappages de rôles.

Pour utiliser l'outil de mappage des rôles:

  1. 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 projet my-project pour les règles d'autorisation appliquées directement au ou sont hérités de l'ID d'organisation parente 101231231231 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:

    • Cloud Build, Compute Engine et Container Registry agents de service. Les agents de service agissent au nom de aux 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
    
  2. 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 stratégie de l'étape précédente, la ligne comportant le L'agent de service Container Registry est:

    - serviceAccount:service-1231231231231@containerregistry.iam.gserviceaccount.com
    
  3. Examinez les autres liaisons de rôles pour vérifier qu'elles sont appropriées.

    Artifact Registry comprend d'autres rôles prédéfinis que vous pouvez que pour certains comptes principaux. Par exemple, Artifact Registry L'administrateur de dépôt Create-on-push permet à un compte principal de créer gcr.io dans Artifact Registry, mais ne les autorise pas à créer dans d'autres dépôts Artifact Registry.

  4. 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.
  5. 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 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 fichier gcr-io-policy.yaml vers le dépôt gcr.io dans le fichier us 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 règle de projet, de dossier ou d'organisation existante avec la que vous souhaitez ajouter.

Mappages de rôles

Le tableau suivant indique les rôles Artifact Registry prédéfinis à accorder aux utilisateurs de Container Registry existants les autorisations 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ôt Artifact Registry
storage.buckets.get
storage.objects.get
storage.objects.list
storage.objects.create
storage.buckets.create
Administrateur Artifact Registry