Contrôle des accès avec IAM

Cette page décrit le contrôle des accès avec Identity and Access Management (IAM) dans Artifact Registry.

Les autorisations par défaut pour Artifact Registry réduisent les efforts de configuration à implémenter un pipeline CI/CD. Vous pouvez aussi intégrer Artifact Registry à l'aide d'outils CI/CD tiers, et configurer les autorisations et l'authentification nécessaires pour accéder aux dépôts.

Si vous utilisez Artifact Analysis pour travailler avec des métadonnées de conteneurs, telles que détectées dans les images, consultez les Documentation Artifact Analysis pour en savoir plus sur les autorisations permettant d'afficher ou de gérer les métadonnées.

Avant de commencer

  1. Activez Artifact Registry. y compris l'activation de l'API et l'installation de la Google Cloud CLI.
  2. Si vous souhaitez appliquer des autorisations spécifiques à un dépôt, Créer un dépôt Artifact Registry pour vos packages.

Présentation

les autorisations IAM Les rôles déterminent votre capacité à créer, afficher modifier ou supprimer des données d'un dépôt Artifact Registry.

Un rôle est un ensemble d'autorisations. Vous ne pouvez pas accorder directement une autorisation principale. À la place, vous lui accordez un rôle. Lorsque vous accordez un rôle à un compte principal, vous lui accordez toutes les autorisations associées à ce rôle. Vous pouvez attribuer plusieurs rôles au même compte principal.

Autorisations Google Cloud par défaut

Par défaut, les autorisations suivantes s'appliquent aux services Google Cloud CI/CD dans le même projet que Artifact Registry :

Si tous vos services se trouvent dans le même projet Google Cloud et que le compte les autorisations requises répondent à vos besoins, vous n'avez pas besoin de configurer d'autorisations.

Vous devez configurer les autorisations d'Artifact Registry pour ces services dans les cas suivants :

  • Vous souhaitez utiliser ces services pour accéder à Artifact Registry dans un autre projet. Dans le projet contenant Artifact Registry, accordez le rôle pool d'identités de charge de travail ou compte de service pour chaque service auquel rôle requis. Si vous vous connectez à Cloud Run, accordez le rôle agent de service Cloud Run : rôle de ressource.
  • vous utilisez une version de GKE qui n'intègre pas la prise en charge de l'extraction d'images d'Artifact Registry. Consultez le GKE pour obtenir des instructions de configuration.
  • Vous souhaitez que le compte de service par défaut dispose d'un accès en lecture et en écriture des dépôts. Pour en savoir plus, consultez les informations suivantes: <ph type="x-smartling-placeholder">
  • vous utilisez un compte de service fourni par l'utilisateur pour vos environnements d'exécution ; au lieu du compte de service par défaut. Dans le projet avec Artifact Registry, accordez à votre compte de service le rôle rôle de ressource.

Intégration tierce

Pour les clients tiers, vous devez configurer à la fois les autorisations et l'authentification.

Traditionnellement, les applications exécutées en dehors de Google Cloud utilisent clés de compte de service pour accéder aux ressources Google Cloud. Toutefois, les clés de compte de service sont des identifiants puissants. Si elles ne sont pas gérées correctement, elles peuvent présenter un risque de sécurité.

La fédération d'identité de charge de travail vous permet d'utiliser Identity and Access Management pour d'attribuer des rôles IAM à des identités externes y compris la possibilité d'emprunter l'identité de comptes de service. Cette approche élimine la charge de maintenance et de sécurité associée au service clés de compte.

Utiliser la fédération d'identité de charge de travail:

  1. Créez un pool de fédération d'identité de charge de travail.
  2. Créez un fournisseur de fédération d'identité de charge de travail.
  3. Accordez le rôle Artifact Registry approprié à la charge de travail pour autoriser l'accès au dépôt.
  4. Configurez votre client tiers pour s'authentifier auprès de Artifact Registry.

Utilisez un compte de service:

  1. Créez un compte de service pour agir au nom de votre application ou sélectionnez un compte de service existant que vous utilisez pour l'automatisation CI/CD.
  2. Accordez le rôle Artifact Registry approprié au compte de service afin de fournir l'accès au dépôt.
  3. Configurez votre client tiers pour s'authentifier auprès de Artifact Registry.

GitLab sur Google Cloud

L'intégration de GitLab sur Google Cloud utilise Fédération d'identité de charge de travail pour l'autorisation et l'authentification pour des charges de travail GitLab sur Google Cloud, sans avoir besoin de comptes de service ni clés de compte de service. Pour en savoir plus sur la fédération d'identité de charge de travail, est utilisé dans ce partenariat, consultez Présentation de l'authentification

Configurer la fédération d'identité de charge de travail et les autorisations Rôles IAM pour GitLab sur Google Cloud, consultez le tutoriel GitLab Fédération d'identité de charge de travail Google Cloud et stratégies IAM

Pour connecter votre dépôt Artifact Registry, suivez le tutoriel GitLab Google Artifact Registry :

Rôles et autorisations

Chaque méthode de l'API Artifact Registry nécessite que le compte principal (utilisateur, (groupe ou compte de service) à l'origine de la requête dispose des autorisations nécessaires pour utiliser la ressource. Des autorisations sont accordées aux comptes principaux en définissant des règles au compte principal un rôle prédéfini sur la ressource.

Vous pouvez attribuer des rôles sur le projet Google Cloud ou Artifact Registry un dépôt de clés.

Rôles Artifact Registry prédéfinis

IAM fournit des rôles prédéfinis qui accordent l'accès à des ressources Google Cloud spécifiques et empêchent les accès non autorisés aux autres ressources.

Utilisez les rôles prédéfinis suivants pour les rôles standard, virtuel et distant des dépôts sur le domaine pkg.dev:

Rôle Description
Lecteur Artifact Registry
(roles/artifactregistry.reader)
Afficher et obtenir des artefacts, et afficher les métadonnées du dépôt
Rédacteur Artifact Registry
(roles/artifactregistry.writer)
Permet de lire et d'écrire des artefacts.
Administrateur de dépôt Artifact Registry
(roles/artifactregistry.repoAdmin)
Lire, écrire et supprimer des artefacts
Administrateur Artifact Registry
(roles/artifactregistry.admin)
Créer et gérer des dépôts et des artefacts

Les rôles prédéfinis supplémentaires suivants incluent des autorisations permettant de créer Dépôts gcr.io pour héberger des images pour le domaine gcr.io. La n'incluent pas d'autorisations permettant de créer d'autres formats de dépôt dans Artifact Registry sur le domaine pkg.dev Ces rôles sont compatibles avec les versions antérieures la compatibilité avec Container Registry, car Container Registry utilise la première d'une image de conteneur pour créer chaque registre multirégional.

Rôle Description
Rédacteur de dépôt Artifact Registry avec création lors de l'envoi (roles/artifactregistry.createOnPushWriter) Permet de lire et d'écrire des artefacts. Créer des dépôts gcr.io
Administrateur de dépôt Artifact Registry avec création lors de l'envoi (roles/artifactregistry.createOnPushRepoAdmin) Lire, écrire et supprimer des artefacts Créer des dépôts gcr.io

Pour obtenir la liste complète des autorisations individuelles associées à chaque rôle, consultez Rôles Artifact Registry : Vous pouvez également utiliser gcloud iam roles describe pour afficher la liste des autorisations associées à chaque rôle.

Rôles IAM de base

Les rôles de base sont des rôles très permissifs qui existaient avant la mise en place d'IAM. Vous pouvez utiliser des rôles de base pour octroyer aux comptes principaux l'accès aux ressources Google Cloud.

Utiliser des rôles prédéfinis pour le dépôt afin que les utilisateurs et les comptes de service ne disposent les autorisations requises.

Pour en savoir plus sur les rôles de base, consultez Documentation de référence sur les rôles de base et prédéfinis IAM

Accord d'autorisations...

Accordez des autorisations au niveau du projet si les mêmes autorisations s'appliquent à tous dans le projet. Si certains comptes nécessitent différents niveaux accorder des rôles au niveau du dépôt.

Si vous accordez des autorisations sur un dépôt virtuel, ces les autorisations s'appliquent à tous les dépôts en amont disponibles via indépendamment des autorisations de dépôt individuelles.

Si vous attribuez des rôles à l'aide de la commande gcloud, vous pouvez spécifier un seul rôle pour un compte principal ou utilisez un fichier de stratégie pour définir plusieurs liaisons.

Accorder des autorisations à l'échelle du projet

Accorder un rôle au niveau du projet si les mêmes autorisations s'appliquent à tous dans le projet.

Pour ajouter un utilisateur ou un compte de service à un projet et lui accorder un Rôle Artifact Registry:

Console

  1. Ouvrez la page "IAM" dans Google Cloud Console.

    Ouvrir la page IAM

  2. Cliquez sur Sélectionner un projet, choisissez le projet dans lequel Artifact Registry est en cours d'exécution, puis cliquez sur Ouvrir.

  3. Cliquez sur Ajouter.

  4. Saisissez une adresse e-mail. Vous pouvez ajouter des personnes, des comptes de service ou des groupes Google en tant que comptes principaux.

  5. Sélectionnez un rôle pour le compte principal. Conformément aux règles de sécurité principe du moindre privilège, envisagez d'accorder le minimum droit requis pour accéder aux ressources Artifact Registry requises. Pour plus d'informations sur Rôles et autorisations prédéfinis par Artifact Registry, consultez la page Rôles Artifact Registry prédéfinis :

  6. Cliquez sur Enregistrer.

gcloud

  1. Dans la console Google Cloud, activez Cloud Shell.

    Activer Cloud Shell

    En bas de la fenêtre de la console Google Cloud, une session Cloud Shell démarre et affiche une invite de ligne de commande. Cloud Shell est un environnement shell dans lequel Google Cloud CLI est déjà installé, et dans lequel des valeurs sont déjà définies pour votre projet actuel. L'initialisation de la session peut prendre quelques secondes.

  2. Pour attribuer un rôle à un seul compte principal, exécutez la commande suivante:

    gcloud projects add-iam-policy-binding PROJECT \
       --member=PRINCIPAL \
       --role=ROLE
    

    Où :

    • PROJECT est l'ID du projet dans lequel Artifact Registry est en cours d'exécution.
    • PRINCIPAL est le compte principal pour lequel vous souhaitez ajouter la liaison. Utiliser le formulaire user|group|serviceAccount:email ou domain:domain.

      Exemples : user:test-user@gmail.com, group:admins@example.com, serviceAccount:test123@example.domain.com ou domain:example.domain.com.

    • ROLE est le rôle que vous souhaitez accorder.

    Pour en savoir plus, consultez la documentation sur add-iam-policy-binding.

    Pour attribuer des rôles à l'aide d'un fichier de stratégie, exécutez la commande suivante :

    gcloud projects set-iam-policy PROJECT /PATH/TO/policy.yaml

    Où :

    • PROJECT est l'ID du projet ou l'identifiant complet du projet dans lequel Artifact Registry est en cours d'exécution.
    • /PATH/TO/policy.yaml est le chemin d'accès et le nom du fichier de stratégie.

    Pour obtenir la stratégie actuellement configurée, exécutez la commande suivante :

    gcloud projects get-iam-policy PROJECT

    PROJECT est l'ID du projet ou à l'identifiant complet du projet.

    Pour en savoir plus, consultez la documentation sur set-iam-policy.

Accorder des autorisations spécifiques au dépôt

Accordez des autorisations au niveau du dépôt lorsque vous souhaitez que les utilisateurs ou les comptes de service des niveaux d'accès différents pour chaque dépôt de votre projet.

Console

Pour accorder l'accès à un dépôt spécifique, procédez comme suit :

  1. Ouvrez la page Dépôts de la console Google Cloud.

    Ouvrir la page "Dépôts"

  2. Sélectionnez le dépôt approprié.

  3. Si le panneau d'informations ne s'affiche pas, cliquez sur Afficher le panneau d'informations dans la barre de menu.

  4. Dans l'onglet "Autorisations", cliquez sur Ajouter un compte principal.

  5. Saisissez une adresse e-mail. Vous pouvez ajouter des personnes, des comptes de service Groupes en tant que comptes principaux.

  6. Sélectionnez un rôle pour le compte principal. Conformément aux règles de sécurité principe du moindre privilège, envisagez d'accorder le minimum droit requis pour accéder aux ressources Artifact Registry requises. Pour des informations sur les rôles et autorisations prédéfinis dans Artifact Registry, consultez la section Rôles Artifact Registry prédéfinis.

  7. Cliquez sur Enregistrer.

gcloud

  1. Dans la console Google Cloud, activez Cloud Shell.

    Activer Cloud Shell

    En bas de la fenêtre de la console Google Cloud, une session Cloud Shell démarre et affiche une invite de ligne de commande. Cloud Shell est un environnement shell dans lequel Google Cloud CLI est déjà installé, et dans lequel des valeurs sont déjà définies pour votre projet actuel. L'initialisation de la session peut prendre quelques secondes.

  2. Vous pouvez définir un ensemble IAM de liaisons de stratégie individuelles ou utiliser un fichier de stratégie.

    Pour attribuer un rôle à un seul compte principal, exécutez la commande suivante:

    gcloud artifacts repositories add-iam-policy-binding REPOSITORY \
       --location=LOCATION \
       --member=PRINCIPAL \
       --role=ROLE
    

    Où :

    • REPOSITORY est l'ID du dépôt.
    • PRINCIPAL est le compte principal pour lequel vous souhaitez ajouter la liaison. Utiliser le formulaire user|group|serviceAccount:email ou domain:domain.

      Exemples : user:test-user@gmail.com, group:admins@example.com, serviceAccount:test123@example.domain.com ou domain:example.domain.com.

    • ROLE est le rôle que vous souhaitez accorder.

    • LOCATION est l'emplacement régional ou multirégional du dépôt.

    Par exemple, pour ajouter une liaison de stratégie IAM pour le rôle roles/artifactregistry.writer de l'utilisateur write@gmail.com avec le dépôt my-repo à l'emplacement --us-central1, exécutez la commande suivante :

    gcloud artifacts repositories add-iam-policy-binding my-repo \
    --location=us-central1 --member=user:write@gmail.com --role=roles/artifactregistry.writer
    

    Pour attribuer des rôles à l'aide d'un fichier de stratégie, exécutez la commande suivante :

    gcloud artifacts repositories set-iam-policy REPOSITORY /PATH/TO/policy.yaml --location=LOCATION

    Où :

    • REPOSITORY est l'ID du dépôt.
    • /PATH/TO/policy.yaml est le chemin d'accès et le nom du fichier de stratégie.
    • LOCATION est l'emplacement régional ou multirégional du dépôt.

    Par exemple, pour définir la stratégie IAM du dépôt my-repo à l'emplacement --us-central1 avec la stratégie définie dans policy.yaml, exécutez la commande suivante :

    gcloud artifacts repositories set-iam-policy my-repo policy.yaml --location=us-central1
    

Terraform

Utilisez la ressource google_artifact_registry_repository_iam pour configurer une stratégie IAM. L'exemple suivant définit un service associé au nom de ressource repo-account et lui accorde un accès en lecture un dépôt nommé my-repo.

Si vous débutez avec Terraform pour Google Cloud, consultez la la page Get Started - Google Cloud (Premiers pas - Google Cloud) de la site Web HashiCorp.

provider "google" {
    project = "PROJECT-ID"
}

resource "google_artifact_registry_repository" "my-repo"     {
  provider = google-beta

  location = "LOCATION"
  repository_id = "REPOSITORY"
  description = "DESCRIPTION"
  format = "FORMAT"
}

resource "google_service_account" "repo-account" {
  provider = google-beta

  account_id   = "ACCOUNT-ID"
  display_name = "Repository Service Account"
}

resource "google_artifact_registry_repository_iam_member" "repo-iam" {
  provider = google-beta

  location = google_artifact_registry_repository.my-repo.location
  repository = google_artifact_registry_repository.my-repo.name
  role   = "roles/artifactregistry.reader"
  member = "serviceAccount:${google_service_account.repo-account.email}"
}

ACCOUNT-ID est l'ID du compte de service. Il s'agit de la partie du champ d'adresse e-mail du compte de service avant le symbole @.

Pour voir d'autres exemples, consultez la documentation google_artifact_registry_repository_iam ressource.

Configurer l'accès public à un dépôt

Si vous disposez d'artefacts que vous souhaitez rendre accessibles à tous les internautes sans authentification, stockez-les dans un dépôt que vous rendez public.

Pour configurer un dépôt pour un accès public en lecture seule, accordez Lecteur Artifact Registry pour le compte principal allUsers. Nous vous recommandons également limiter les quotas de requêtes des utilisateurs afin qu'un seul ne peut pas utiliser le quota global de votre projet.

Console

  1. Ouvrez la page Dépôts de la console Google Cloud.

    Ouvrir la page "Dépôts"

  2. Sélectionnez le dépôt approprié.

  3. Si le panneau d'informations ne s'affiche pas, cliquez sur Afficher le panneau d'informations dans la barre de menu.

  4. Dans l'onglet "Autorisations", cliquez sur Ajouter un compte principal.

  5. Dans le champ Nouveaux comptes principaux, saisissez allUsers.

  6. Sélectionnez le rôle Lecteur Artifact Registry.

  7. Définissez une limite par utilisateur pour les requêtes API Artifact Registry pour empêcher par des utilisateurs non authentifiés. Consultez la section Limiter l'utilisation des ressources pour obtenir des instructions.

gcloud

  1. Dans la console Google Cloud, activez Cloud Shell.

    Activer Cloud Shell

    En bas de la fenêtre de la console Google Cloud, une session Cloud Shell démarre et affiche une invite de ligne de commande. Cloud Shell est un environnement shell dans lequel Google Cloud CLI est déjà installé, et dans lequel des valeurs sont déjà définies pour votre projet actuel. L'initialisation de la session peut prendre quelques secondes.

  2. Exécutez la commande suivante :

    gcloud artifacts repositories add-iam-policy-binding REPOSITORY \
    --location=LOCATION --member=allUsers --role=ROLE
    

    Où :

    • REPOSITORY est l'ID du dépôt.

    • ROLE est le rôle que vous souhaitez accorder.

    • LOCATION est l'emplacement régional ou multirégional du dépôt.

    Par exemple, configurez le dépôt my-repo à l'emplacement --us-central1 en tant qu'emplacement public en exécutant la commande suivante :

    gcloud artifacts repositories add-iam-policy-binding my-repo \
     --location=us-central1 --member=allUsers --role=roles/artifactregistry.reader
    
  3. Définissez une limite par utilisateur pour les requêtes API Artifact Registry pour empêcher par des utilisateurs non authentifiés. Consultez la section Limiter l'utilisation des ressources pour obtenir des instructions.

Révoquer des autorisations

Pour révoquer l'accès à un dépôt, supprimez le compte principal de la liste des comptes comptes principaux.

Pour supprimer l'accès public d'un dépôt, supprimez le compte principal allUsers.

Console

Pour révoquer des autorisations :

  1. Ouvrez la page Dépôts de la console Google Cloud.

    Ouvrir la page "Dépôts"

  2. Sélectionnez le dépôt approprié.

  3. Si le panneau d'informations ne s'affiche pas, cliquez sur Afficher le panneau d'informations dans la barre de menu.

  4. Dans l'onglet "Autorisations", développez le compte principal approprié. Si vous rendre privé un dépôt public, développez le compte principal allUsers.

  5. Cliquez sur Supprimer le compte principal pour révoquer l'accès.

gcloud

  1. Dans la console Google Cloud, activez Cloud Shell.

    Activer Cloud Shell

    En bas de la fenêtre de la console Google Cloud, une session Cloud Shell démarre et affiche une invite de ligne de commande. Cloud Shell est un environnement shell dans lequel Google Cloud CLI est déjà installé, et dans lequel des valeurs sont déjà définies pour votre projet actuel. L'initialisation de la session peut prendre quelques secondes.

  2. Pour révoquer un rôle au niveau du projet, exécutez la commande suivante :

    gcloud projects remove-iam-policy-binding PROJECT \
       --member=PRINCIPAL \
       --role=ROLE
    
    • PROJECT est l'ID de projet.
    • PRINCIPAL est le compte principal pour lequel supprimer la liaison. Utiliser le formulaire user|group|serviceAccount:email ou domain:domain.

      Exemples : user:test-user@gmail.com, group:admins@example.com, serviceAccount:test123@example.domain.com ou domain:example.domain.com.

    • ROLE est le rôle que vous souhaitez révoquer.

    Pour révoquer un rôle dans un dépôt, exécutez la commande suivante :

    gcloud artifacts repositories remove-iam-policy-binding REPOSITORY
       --location=LOCATION \
       --member=PRINCIPAL \
       --role=ROLE
    

    Où :

    • REPOSITORY est l'ID du dépôt.
    • PRINCIPAL est le compte principal pour lequel supprimer la liaison. Utiliser le formulaire user|group|serviceAccount:email ou domain:domain.

      Exemples : user:test-user@gmail.com, group:admins@example.com, serviceAccount:test123@example.domain.com ou domain:example.domain.com.

      Pour révoquer l'accès public au dépôt, spécifiez le compte principal allUsers.

    • ROLE est le rôle que vous souhaitez révoquer.

    Par exemple, pour supprimer une liaison de stratégie pour le rôle roles/artifactregistry.writer de l'utilisateur write@gmail.com avec le dépôt my-repo à l'emplacement --us-central1, exécutez la commande suivante:

    gcloud artifacts repositories remove-iam-policy-binding my-repo \
       --location=us-central1 \
       --member=user:write@gmail.com \
       --role=roles/artifactregistry.writer

    Pour révoquer l'accès public à my-repo à l'emplacement --us-central1, exécutez la commande suivante:

    gcloud artifacts repositories remove-iam-policy-binding my-repo \
       --location=us-central1 \
       --member=allUsers \
       --role=roles/artifactregistry.reader
    

Accorder un accès conditionnel à l'aide de tags

Les administrateurs de projet peuvent créer des tags pour les ressources de Google Cloud et les gérer dans Resource Manager. Lorsque vous associez un tag dépôt Artifact Registry, les administrateurs peuvent utiliser le tag avec Conditions IAM pour accorder un accès conditionnel au dépôt.

Vous ne pouvez pas associer de tags à des artefacts individuels.

Pour en savoir plus, consultez la documentation suivante:

Intégrer les services Google Cloud

Pour la plupart des comptes de service Google Cloud, configurer l'accès à un registre il suffit d'accorder les autorisations IAM appropriées.

Autorisations par défaut pour les services Google Cloud

Les services Google Cloud tels que Cloud Build ou Google Kubernetes Engine utilisent default service account ou agent de service avec lequel interagir ressources au sein d'un même projet.

Vous devez configurer ou modifier vous-même les autorisations dans les cas suivants :

  • Le service Google Cloud se trouve dans un projet différent de celui d'Artifact Registry.
  • Les autorisations par défaut ne répondent pas à vos besoins. Par exemple, la valeur par défaut Le compte de service Compute Engine dispose d'un accès en lecture seule à l'espace de stockage projet. Pour transférer une image d'une VM vers Artifact Registry, vous devez peut modifier les autorisations du compte de service de la VM ou utiliser un autre compte disposant des autorisations requises.
  • vous utilisez un compte de service fourni par l'utilisateur pour interagir avec Artifact Registry au lieu du compte de service par défaut.

Les comptes de service suivants accèdent généralement à Artifact Registry. La du compte de service inclut l'adresse e-mail Google Cloud ID ou numéro de projet du projet où le service s'exécute.

Service Compte de service Adresse e-mail Autorisations
Environnement flexible App Engine App Engine compte de service PROJECT-ID@appspot.gserviceaccount.com Rôle d'éditeur, peut lire et écrire dans des dépôts
Compute Engine <ph type="x-smartling-placeholder"></ph> Compte de service Compute Engine par défaut PROJECT-NUMBER-compute@developer.gserviceaccount.com Rôle d'éditeur, limité à l'accès en lecture seule aux dépôts
Cloud Build Service Cloud Build compte PROJECT-NUMBER@cloudbuild.gserviceaccount.com
Autorisations par défaut incluent un accès en lecture et en écriture aux dépôts et la possibilité de créer Dépôts gcr.io.
Cloud Run <ph type="x-smartling-placeholder"></ph> Agent de service Cloud Run
Agent de service pour run.googleapis.com.
service-PROJECT-NUMBER@serverless-robot-prod.iam.gserviceaccount.com Autorisations de lecteur, limitées à un accès en lecture seule aux dépôts
GKE <ph type="x-smartling-placeholder"></ph> Compte de service Compute Engine par défaut
Compte de service par défaut pour les nœuds.
PROJECT-NUMBER-compute@developer.gserviceaccount.com Rôle d'éditeur, limité à l'accès en lecture seule aux dépôts

Accorder l'accès aux instances Compute Engine

Les instances de VM qui accèdent aux dépôts doivent disposer des autorisations Artifact Registry et avoir le niveau d'accès à l'espace de stockage configuré.

Alors que le niveau d'accès d'un compte de service est déterminé par Rôles IAM attribués au compte de service, niveaux d'accès sur une instance de VM déterminent les champs d'application OAuth par défaut pour les requêtes effectuées via gcloud CLI et les bibliothèques clientes sur l'instance. Par conséquent, les niveaux d'accès potentiellement limiter davantage l'accès aux méthodes API lors de l'authentification avec Identifiants par défaut de l'application.

Compute Engine utilise les valeurs par défaut suivantes:

  • Le compte de service Compute Engine par défaut constitue l'identité de la VM. Compute Engine. L'adresse e-mail du compte de service comporte le suffixe @developer.gserviceaccount.com.
  • Le compte de service par défaut dispose du rôle IAM de base rôle Éditeur, si vous n'avez pas désactivé ce comportement.
  • Les instances que vous créez avec le compte de service par défaut disposent du rôle Niveaux d'accès par défaut de Compute Engine, y compris un accès en lecture seule à l'espace de stockage. Alors que le rôle Éditeur accorde généralement le niveau d'accès à l'espace de stockage read-only limite le service d'instance de télécharger les artefacts uniquement à partir de n'importe quel dépôt du même projet.

Vous devez configurer le niveau d'accès du compte de service dans les cas suivants :

  • Le compte de service de VM doit accéder à un dépôt d'un autre projet.
  • Le compte de service de la VM doit effectuer des actions autres que la lecture des artefacts à partir de dépôts. Cela permet généralement d'appliquer à une VM des outils tiers pour transférer des images ou exécuter des commandes Artifact Registry gcloud.

Pour configurer les autorisations et définir le niveau d'accès :

  1. Dans le projet contenant votre instance de VM, obtenez le nom du compte de service Compute Engine par défaut. L'adresse e-mail associée au compte de service comporte le suffixe @developer.gserviceaccount.com.

  2. Dans le projet contenant le dépôt, accordez des autorisations pour que le compte de service puisse accéder au dépôt.

  3. Définissez le niveau d'accès avec l'option --scopes.

    1. Arrêtez l'instance de VM. Consultez la section Arrêter une instance.

    2. Définissez le niveau d'accès à l'aide de la commande suivante 

      gcloud compute instances set-service-account INSTANCE --scopes=SCOPE
      

      Remplacez SCOPE par la valeur appropriée.

      • Pour Docker, les options suivantes sont acceptées :

        • storage-ro : accorde un accès en lecture pour obtenir des images uniquement.
        • storage-rw : accorde un accès en lecture et en écriture pour le transfert ou l'extraction d'images.
        • cloud-platform : consultez et gérez les données, y compris les métadonnées, dans l'ensemble du service Google Cloud.
      • Pour les autres formats, vous devez utiliser le niveau d'accès cloud-platform.

    3. Redémarrez l'instance de VM. Consultez la section Démarrer une instance arrêtée.

Accorder l'accès aux clusters Google Kubernetes Engine

Les clusters et les pools de nœuds GKE peuvent extraire des conteneurs configuration supplémentaire si toutes les conditions suivantes sont remplies:

Si votre environnement GKE ne répond pas à ces exigences, les instructions pour accorder l'accès varient selon que vous utilisez compte de service Compute Engine par défaut ou un compte de service fourni par l'utilisateur l'identité de vos nœuds.

Compte de service par défaut

Les exigences de configuration suivantes s'appliquent au compte de service Compute Engine par défaut :

  1. Si GKE se trouve dans un projet différent de Artifact Registry, accordez les autorisations nécessaires de service géré.

  2. Pour transférer des images, interagissez avec des dépôts pour des formats autres que ou exécuter des commandes gcloud depuis votre cluster, vous devez définir des niveaux d'accès pour le compte de service lorsque vous créez le un cluster ou un pool de nœuds.

  3. Si vous n'utilisez pas une version compatible de dans GKE, configurez imagePullSecrets.

Compte de service fourni par l'utilisateur

Si vous souhaitez utiliser un compte de service fourni par l'utilisateur en tant qu'identité d'un cluster, vous devez:

  1. Accordez les autorisations requises au compte de service à partir du Projet Google Cloud dans lequel Artifact Registry est exécuté.

  2. Par défaut, créer un cluster ou un pool de nœuds avec un service fourni par l'utilisateur accorde le niveau d'accès cloud-platform.

    Si vous utilisez l'option --scopes avec le paramètre gcloud container clusters create ou gcloud container node-pools create, vous devez inclure les bonnes niveaux d'accès à utiliser avec Artifact Registry.

Définir des niveaux d'accès

Les niveaux d'accès représentent l'ancienne méthode de spécification des autorisations VM Compute Engine. Pour extraire des images de dépôts Artifact Registry, Les nœuds GKE doivent disposer du niveau d'accès au stockage en lecture seule un autre niveau d'accès au stockage qui inclut l'accès en lecture au stockage.

Vous ne pouvez définir des niveaux d'accès que lorsque vous créez un cluster ou un pool de nœuds. Toi ne peuvent pas modifier les niveaux d'accès sur les nœuds existants.

  • Si vous utilisez le compte de service Compute Engine par défaut, GKE crée des nœuds à l'aide de l'API Compute Engine les niveaux d'accès par défaut, qui incluent l'accès en lecture seule stockage.
  • Si vous utilisez un compte de service fourni par l'utilisateur, GKE crée les nœuds avec le niveau d'accès cloud-platform, qui est requis pour la plupart aux services Google Cloud.

Pour spécifier des niveaux d'accès lors de la création d'un cluster, exécutez la commande suivante:

gcloud container clusters create NAME --scopes=SCOPES

Pour spécifier des niveaux d'accès lors de la création d'un pool de nœuds, exécutez la commande suivante:

gcloud container node-pools create NAME --scopes=SCOPES

Remplacez les valeurs suivantes :

  • NAME est le nom du cluster ou du pool de nœuds.
  • SCOPES est une liste de niveaux d'accès à accorder, séparés par une virgule.

    • Pour accéder aux dépôts Docker, utilisez l'un des champs d'application suivants:

    • storage-ro : accorde l'autorisation en lecture seule pour extraire des images.

    • storage-rw : accorde un accès en lecture et en écriture pour le transfert ou l'extraction d'images.

    • cloud-platform : consultez et gérez les données, y compris les métadonnées, dans l'ensemble du service Google Cloud.

    • Pour accéder à d'autres dépôts, vous devez utiliser le champ d'application cloud-platform.

    Pour obtenir la liste complète des champs d'application, consultez la documentation gcloud container clusters create ou gcloud container node-pools create ;

Pour plus d'informations sur les niveaux d'accès que vous pouvez définir lors de la création d'un cluster, reportez-vous à la documentation de la commande gcloud container clusters create.

Configurer imagePullSecret

Pour configurer un objet imagePullSecret :

  1. Dans le projet avec GKE, recherchez la valeur par défaut de Compute Engine de service géré. L'adresse e-mail associée au compte comporte le suffixe @developer.gserviceaccount.com.

  2. Télécharger la clé du compte de service pour le compte de service.

  3. Dans le projet contenant le dépôt, vérifiez que vous avez accordé les autorisations appropriées.

  4. Dans le projet contenant votre cluster, créez un secret imagePullSecret appelé artifact-registry avec la clé de compte de service.

    kubectl create secret docker-registry artifact-registry \
    --docker-server=https://LOCATION-docker.pkg.dev \
    --docker-email=SERVICE-ACCOUNT-EMAIL \
    --docker-username=_json_key \
    --docker-password="$(cat KEY-FILE)"
    

    Où :

    • LOCATION est l'emplacement régional ou multirégional du dépôt.
    • SERVICE-ACCOUNT-EMAIL est l'adresse e-mail associée au compte de service Compute Engine.
    • KEY-FILE est le nom du fichier de clé de votre compte de service. Pour exemple key.json.
  5. Ouvrez votre compte de service par défaut :

    kubectl edit serviceaccount default --namespace default

    Chaque espace de noms de votre cluster Kubernetes possède un compte de service par défaut appelé default. Ce compte de service par défaut permet d'extraire votre image de conteneur.

  6. Ajoutez le secret nouvellement créé imagePullSecret à votre compte de service par défaut :

    imagePullSecrets:
    - name: artifact-registry
    

    Votre compte de service doit maintenant se présenter comme suit :

    apiVersion: v1
    kind: ServiceAccount
    metadata:
      name: default
      namespace: default
      ...
    secrets:
    - name: default-token-zd84v
    # The secret you created:
    imagePullSecrets:
    - name: artifact-registry
    

Désormais, tout pod créé dans l'espace de noms default actuel sera associé au secret imagePullSecret.

Compte de service Artifact Registry

L'agent de service Artifact Registry est un compte de service géré par Google agit pour le compte d'Artifact Registry lors de l'interaction avec Google Cloud services. Pour en savoir plus sur le compte et ses autorisations, consultez Compte de service Artifact Registry :

Étape suivante

Après avoir configuré les autorisations, découvrez comment utiliser vos artefacts.