Cette page décrit le contrôle des accès avec Identity and Access Management (IAM) dans Artifact Registry.
Les autorisations par défaut d'Artifact Registry minimisent les efforts de configuration lors de l'implémentation d'un pipeline CI/CD. Vous pouvez également intégrer Artifact Registry à des outils CI/CD tiers et configurer les autorisations et l'authentification requises pour accéder aux dépôts.
Si vous utilisez Artifact Analysis pour travailler avec des métadonnées de conteneur, telles que les failles trouvées dans les images, consultez la documentation d'Artifact Analysis pour savoir comment accorder l'accès permettant d'afficher ou de gérer les métadonnées.Avant de commencer
- Activez Artifact Registry, ce qui inclut l'activation de l'API et l'installation de la Google Cloud CLI.
- Si vous souhaitez appliquer des autorisations spécifiques aux dépôts, créez un dépôt Artifact Registry pour vos packages.
Présentation
Les autorisations et les rôles IAM déterminent votre capacité à créer, afficher, modifier ou supprimer des données dans 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 par défaut deGoogle Cloud
Par défaut, les autorisations suivantes s'appliquent aux Google Cloud services CI/CD dans le même projet que Artifact Registry:
- Les autorisations Cloud Build incluent des autorisations permettant d'importer et de télécharger des artefacts.
- Compute Engine, les versions compatibles de Google Kubernetes Engine et Cloud Run utilisent le compte de service par défaut Compute Engine, qui dispose d'un accès en lecture seule à l'espace de stockage.
Si tous vos services appartiennent au même Google Cloud projet et que les autorisations par défaut répondent à vos besoins, vous n'avez pas besoin de configurer des 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 avec Artifact Registry, accordez au pool d'identités de charge de travail ou au compte de service le rôle requis pour chaque service. Si vous vous connectez à Cloud Run, attribuez le rôle requis à l'agent de service Cloud Run.
- Vous utilisez une version de GKE qui n'est pas compatible avec l'extraction d'images à partir d'Artifact Registry. Pour obtenir des instructions de configuration, consultez la section GKE.
- Vous souhaitez que le compte de service par défaut dispose d'un accès en lecture et en écriture aux dépôts. Pour en savoir plus, consultez les informations suivantes :
- 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 requis.
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 des 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 accorder des rôles IAM à des identités externes, et leur permettre d'emprunter l'identité de comptes de service. Cette approche élimine les tâches de maintenance et de sécurité associées aux clés de compte de service.
Utiliser la fédération d'identité de charge de travail:
- Créez un pool de fédération d'identité de charge de travail.
- Créez un fournisseur de fédération d'identité de charge de travail.
- Accordez le rôle Artifact Registry approprié au pool d'identités de charge de travail pour autoriser l'accès au dépôt. Pour en savoir plus, consultez la section Autoriser votre charge de travail externe à accéder aux ressources Google Cloud .
- Si vous devez accéder à Artifact Registry pendant de plus longues périodes, configurez la durée d'expiration du jeton OIDC sur une période plus longue dans votre configuration des identifiants.
Configurez votre client tiers pour qu'il s'authentifie avec Artifact Registry.
Utiliser un compte de service:
- 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.
- Accordez le rôle Artifact Registry approprié au compte de service afin de fournir l'accès au dépôt.
Configurez votre client tiers pour qu'il s'authentifie avec Artifact Registry.
GitLab sur Google Cloud
L'intégration de GitLab sur Google Cloud utilise la fédération d'identités de charge de travail pour l'autorisation et l'authentification des charges de travail GitLab sur Google Cloud , sans avoir besoin de comptes de service ni de clés de compte de service. Pour en savoir plus sur l'utilisation de la fédération d'identité de charge de travail dans ce partenariat, consultez la page Google Cloud Fédération d'identité de charge de travail et stratégies IAM.
Pour configurer la fédération d'identité de charge de travail et les rôles IAM nécessaires pour GitLab sur Google Cloud, consultez le tutoriel GitLab Google Cloud Fédération d'identité de charge de travail et règles 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 principal effectuant la requête dispose des autorisations requises pour utiliser la ressource. Les autorisations sont accordées aux comptes principaux en définissant des stratégies qui leur attribuent un rôle prédéfini sur la ressource.
Vous pouvez attribuer des rôles au projet ou au dépôt Artifact Registry. Google Cloud
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.
Utilisez les rôles prédéfinis suivants pour les dépôts sur le domainepkg.dev
:
Rôle | Description |
---|---|
Lecteur Artifact Registry ( roles/artifactregistry.reader ) |
Afficher et obtenir des artefacts, afficher les métadonnées du dépôt |
Rédacteur Artifact Registry ( roles/artifactregistry.writer ) |
Lire et écrire des artefacts. |
Administrateur de dépôts Artifact Registry ( roles/artifactregistry.repoAdmin ) |
Lire, écrire et supprimer des artefacts. |
Administrateur Artifact Registry ( roles/artifactregistry.admin ) |
Créez et gérez des dépôts et des artefacts. |
Rôle | Description |
---|---|
Container Registry -> Administrateur de la migration Artifact Registry (roles/artifactregistry.containerRegistryMigrationAdmin ) |
Inclut toutes les autorisations requises pour exécuter les outils de migration |
Rédacteur de dépôt Artifact Registry avec création lors de l'envoi (roles/artifactregistry.createOnPushWriter ) |
Lire et écrire des artefacts. Créez des dépôts gcr.io lorsque vous effectuez un push vers des URL 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éez des dépôts gcr.io. |
gcloud iam roles describe
pour afficher la liste des autorisations de 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. Les rôles de base ne doivent pas être attribués dans un environnement de production, mais ils peuvent être attribués dans un environnement de développement ou de test.
Utilisez autant que possible des rôles prédéfinis pour l'accès au dépôt afin que les utilisateurs et les comptes de service ne disposent que des autorisations requises.
Pour en savoir plus sur les rôles de base, consultez la documentation de référence sur les rôles IAM de base et prédéfinis.
Attribution des rôles…
Accordez des rôles au niveau du projet si les mêmes rôles s'appliquent à tous les dépôts du projet. Si certains comptes nécessitent différents niveaux d'accès, attribuez des rôles au niveau du dépôt.
Si vous attribuez des rôles à un dépôt virtuel, ces rôles s'appliquent à tous les dépôts en amont disponibles via le dépôt virtuel, quelles que soient les autorisations de chaque dépôt.Si vous attribuez des rôles à l'aide de la commande gcloud
, vous pouvez spécifier une seule liaison de rôle pour un principal ou effectuer des modifications de stratégie à grande échelle en obtenant la stratégie d'autorisation d'une ressource, en la modifiant, puis en définissant la stratégie d'autorisation modifiée. Pour en savoir plus, consultez la section Attribuer ou révoquer plusieurs rôles de manière automatisée.
Accorder des rôles à l'échelle du projet
Accordez un rôle au niveau du projet si les mêmes autorisations s'appliquent à tous les dépôts du projet.
Pour ajouter un utilisateur ou un compte de service à un projet et lui accorder un rôle Artifact Registry:
Console
Ouvrez la page "IAM" dans Google Cloud Console.
Cliquez sur Sélectionner un projet, choisissez le projet dans lequel Artifact Registry est en cours d'exécution, puis cliquez sur Ouvrir.
Cliquez sur Ajouter.
Saisissez une adresse e-mail. Vous pouvez ajouter des personnes, des comptes de service ou des groupes Google en tant que comptes principaux.
Sélectionnez un rôle pour le compte principal. Conformément au principe de sécurité du moindre privilège, envisagez d'accorder le moins de privilèges possible pour accéder aux ressources Artifact Registry requises. Pour en savoir plus sur les rôles et les autorisations prédéfinis d'Artifact Registry, consultez la section Rôles Artifact Registry prédéfinis.
Cliquez sur Enregistrer.
gcloud
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
Pour accorder 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. Utilisez le formulaire
user|group|serviceAccount:email
oudomain:domain
.Exemples :
user:test-user@gmail.com
,group:admins@example.com
,serviceAccount:test123@example.domain.com
oudomain:example.domain.com
.ROLE correspond au 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, consultez la section Attribuer ou révoquer plusieurs rôles de manière automatisée.
Attribuer des rôles spécifiques au dépôt
Accordez des rôles au niveau du dépôt lorsque vous souhaitez que les utilisateurs ou les comptes de service disposent de différents niveaux d'accès pour chaque dépôt de votre projet.
Console
Pour accorder l'accès à un dépôt spécifique, procédez comme suit :
Ouvrez la page Dépôts de la console Google Cloud.
Sélectionnez le dépôt approprié.
Si le panneau d'informations ne s'affiche pas, cliquez sur Afficher le panneau d'informations dans la barre de menu.
Dans l'onglet "Autorisations", cliquez sur Ajouter un compte principal.
Saisissez une adresse e-mail. Vous pouvez ajouter des personnes, des comptes de service ou des groupes Google en tant que comptes principaux.
Sélectionnez un rôle pour le compte principal. Conformément au principe de sécurité du moindre privilège, envisagez d'accorder le moins de privilèges possible pour accéder aux ressources Artifact Registry requises. Pour en savoir plus sur les rôles et les autorisations prédéfinis d'Artifact Registry, consultez la section Rôles Artifact Registry prédéfinis.
Cliquez sur Enregistrer.
gcloud
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
Vous pouvez définir un ensemble IAM de liaisons de stratégie individuelles ou utiliser un fichier de stratégie.
Pour accorder 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. Utilisez le formulaire
user|group|serviceAccount:email
oudomain:domain
.Exemples :
user:test-user@gmail.com
,group:admins@example.com
,serviceAccount:test123@example.domain.com
oudomain:example.domain.com
.ROLE correspond au 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'utilisateurwrite@gmail.com
avec le dépôtmy-repo
à l'emplacement--us-west1
, exécutez la commande suivante :gcloud artifacts repositories add-iam-policy-binding my-repo \ --location=us-west1 --member=user:write@gmail.com --role=roles/artifactregistry.writer
Pour attribuer des rôles à l'aide d'un fichier de stratégie, suivez la procédure décrite dans la section Attribuer ou révoquer plusieurs rôles de manière programmatique avec les commandes gcloud artifacts repositories get-iam-policy et gcloud artifacts repositories set-iam-policy.
Terraform
Utilisez la ressource google_artifact_registry_repository_iam pour configurer une stratégie IAM. L'exemple suivant définit un compte de service portant le nom de ressource repo-account
et lui accorde un accès en lecture à un dépôt portant le nom de ressource my-repo
.
Si vous débutez avec Terraform pour Google Cloud, consultez la page Premiers pas avec Google Cloud sur le site Web de 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 obtenir d'autres exemples, consultez la documentation de la ressource google_artifact_registry_repository_iam.
Configurer l'accès public à un dépôt
Si vous avez des artefacts que vous souhaitez mettre à la disposition de 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 en lecture seule, accordez le rôle de lecteur Artifact Registry au principal allUsers
. Nous vous recommandons également de limiter les quotas de requêtes utilisateur afin qu'un seul utilisateur ne puisse pas utiliser l'ensemble du quota de votre projet.
Console
Ouvrez la page Dépôts de la console Google Cloud.
Sélectionnez le dépôt approprié.
Si le panneau d'informations ne s'affiche pas, cliquez sur Afficher le panneau d'informations dans la barre de menu.
Dans l'onglet "Autorisations", cliquez sur Ajouter un compte principal.
Dans le champ Nouveaux comptes principaux, saisissez
allUsers
.Sélectionnez le rôle Lecteur Artifact Registry.
Définissez une limite par utilisateur sur les requêtes de l'API Artifact Registry pour éviter toute utilisation abusive par des utilisateurs non authentifiés. Pour savoir comment procéder, consultez la section Limiter l'utilisation.
gcloud
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
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 correspond au 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-west1
en tant qu'emplacement public en exécutant la commande suivante :gcloud artifacts repositories add-iam-policy-binding my-repo \ --location=us-west1 --member=allUsers --role=roles/artifactregistry.reader
Définissez une limite par utilisateur sur les requêtes de l'API Artifact Registry pour éviter toute utilisation abusive par des utilisateurs non authentifiés. Pour savoir comment procéder, consultez la section Limiter l'utilisation.
Révocation des rôles…
Pour révoquer l'accès à un dépôt, supprimez le compte principal de la liste des comptes principaux autorisés.
Pour supprimer l'accès public à un dépôt, supprimez le compte principal allUsers
.
Console
Pour révoquer des autorisations :
Ouvrez la page Dépôts de la console Google Cloud.
Sélectionnez le dépôt approprié.
Si le panneau d'informations ne s'affiche pas, cliquez sur Afficher le panneau d'informations dans la barre de menu.
Dans l'onglet "Autorisations", développez le compte principal approprié. Si vous rendez un dépôt public privé, développez le principal
allUsers
.Cliquez sur Supprimer le principal pour révoquer l'accès.
gcloud
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
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 vous souhaitez supprimer la liaison. Utilisez le formulaire
user|group|serviceAccount:email
oudomain:domain
.Exemples :
user:test-user@gmail.com
,group:admins@example.com
,serviceAccount:test123@example.domain.com
oudomain:example.domain.com
.ROLE correspond au 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 vous souhaitez supprimer la liaison. Utilisez le formulaire
user|group|serviceAccount:email
oudomain:domain
.Exemples :
user:test-user@gmail.com
,group:admins@example.com
,serviceAccount:test123@example.domain.com
oudomain:example.domain.com
.Pour révoquer l'accès public au dépôt, spécifiez le principal
allUsers
.ROLE correspond au 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'utilisateurwrite@gmail.com
avec le dépôtmy-repo
à l'emplacement--us-west1
, exécutez la commande suivante:gcloud artifacts repositories remove-iam-policy-binding my-repo \ --location=us-west1 \ --member=user:write@gmail.com \ --role=roles/artifactregistry.writer
Pour révoquer l'accès public à
my-repo
à l'emplacement--us-west1
, exécutez la commande suivante:gcloud artifacts repositories remove-iam-policy-binding my-repo \ --location=us-west1 \ --member=allUsers \ --role=roles/artifactregistry.reader
Accorder un accès conditionnel avec des tags
Les administrateurs de projet peuvent créer des tags pour les ressources dans Google Cloudet les gérer dans Resource Manager. Lorsque vous associez un tag à un dépôt Artifact Registry, les administrateurs peuvent l'utiliser avec des 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:
- Les administrateurs configurent les tags et le contrôle des accès.
- Développeurs associant des tags à des dépôts
Intégrer des services Google Cloud
Pour la plupart des comptes de service Google Cloud , la configuration de l'accès à un registre ne nécessite que l'attribution des rôles IAM appropriés.
Comptes de service par défaut pour les services Google Cloud
Les servicesGoogle Cloud tels que Cloud Build ou Google Kubernetes Engine utilisent un compte de service par défaut ou un agent de service pour interagir avec les ressources 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 d'Artifact Registry.
- Les autorisations par défaut ne répondent pas à vos besoins.
- Vous utilisez un compte de service fourni par l'utilisateur pour interagir avec Artifact Registry au lieu du compte de service par défaut.
- La configuration de vos règles d'administration empêche les attributions automatiques de rôles aux comptes de service par défaut.
Les comptes de service suivants accèdent généralement à Artifact Registry. L'adresse e-mail du compte de service inclut l' Google Cloud ID ou numéro de projet du projet sur lequel le service s'exécute.
Service | Compte de service | Adresse e-mail |
---|---|---|
Environnement flexible App Engine | Compte de service App Engine | PROJECT-ID@appspot.gserviceaccount.com |
Compute Engine | Compte de service Compute Engine par défaut | PROJECT-NUMBER-compute@developer.gserviceaccount.com |
Cloud Build | Compte de service Compute Engine ou Ancien compte de service Cloud Build |
Selon les paramètres de votre organisation, l'adresse e-mail du compte de service par défaut est l'une des suivantes:
|
Cloud Run |
Agent de service Cloud Run Agent de service de run.googleapis.com . |
service-PROJECT-NUMBER@serverless-robot-prod.iam.gserviceaccount.com |
GKE |
Compte de service Compute Engine par défaut Compte de service par défaut pour les nœuds. |
PROJECT-NUMBER-compute@developer.gserviceaccount.com |
Selon la configuration de vos règles d'administration, le compte de service par défaut peut se voir attribuer automatiquement le rôle Éditeur sur votre projet. Nous vous recommandons vivement de désactiver l'attribution automatique des rôles en appliquant la contrainte de règle d'administration iam.automaticIamGrantsForDefaultServiceAccounts
. Si vous avez créé votre organisation après le 3 mai 2024, cette contrainte est appliquée par défaut.
Si vous désactivez l'attribution automatique de rôles, vous devez choisir les rôles à attribuer aux comptes de service par défaut, puis attribuer ces rôles vous-même.
Si le compte de service par défaut dispose déjà du rôle Éditeur, nous vous recommandons de le remplacer par des rôles moins permissifs.Pour modifier les rôles du compte de service en toute sécurité, utilisez Policy Simulator pour voir l'impact de la modification, puis attribuez et révoquez les rôles appropriés.
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 les rôles IAM qui lui sont attribués, les niveaux d'accès d'une instance de VM déterminent les champs d'application OAuth par défaut pour les requêtes effectuées via la CLI gcloud et les bibliothèques clientes sur l'instance. Par conséquent, les niveaux d'accès peuvent limiter davantage l'accès aux méthodes d'API lors de l'authentification avec les 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 est l'identité des instances de VM. 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 É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 des champs d'application par défaut Compute Engine, y compris d'un accès en lecture seule au stockage. Bien que le rôle d'éditeur accorde généralement un accès en écriture, le niveau d'accès à l'espace de stockage
read-only
limite le compte de service de l'instance à télécharger uniquement les artefacts appartenant aux dépôts d'un même projet.
Vous devez configurer le niveau d'accès du compte de service dans les cas suivants :
- Le compte de service de la VM doit accéder à un dépôt dans un autre projet.
- Le compte de service de la VM doit effectuer d'autres actions que la lecture d'artefacts à partir de dépôts. Cela s'applique généralement aux outils tiers sur une VM qui doivent transmettre des images ou exécuter des commandes
gcloud
Artifact Registry.
Pour configurer des rôles et définir le niveau d'accès:
Dans le projet contenant votre instance de VM, obtenez le nom du compte de service Compute Engine par défaut. L'adresse e-mail du compte de service comporte le suffixe @developer.gserviceaccount.com.
Dans le projet contenant le dépôt, accordez des autorisations pour que le compte de service puisse accéder au dépôt.
Définissez le niveau d'accès avec l'option --scopes.
Arrêtez l'instance de VM. Consultez la section Arrêter une instance.
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 serviceGoogle Cloud .
Pour les autres formats, vous devez utiliser le niveau d'accès
cloud-platform
.
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 GKE et les pools de nœuds peuvent extraire des conteneurs sans aucune configuration supplémentaire si toutes les conditions suivantes sont remplies:
- GKE se trouve dans le même projet que celui qui contient Artifact Registry.
- Les nœuds utilisent le compte de service par défaut : le compte de service Compute Engine par défaut.
- Les nœuds ont été créés avec un accès en lecture au stockage par :
- Utiliser les champs d'application d'accès par défaut Compute Engine.
- Accorder le champ d'accès
cloud-platform
ou un autre champ d'accès qui inclut un accès en lecture au stockage.
- Vous exécutez une version compatible de GKE.
Si votre environnement GKE ne répond pas à ces exigences, les instructions pour accorder l'accès varient selon que vous utilisez le compte de service Compute Engine par défaut ou un compte de service fourni par l'utilisateur en tant qu'identité pour 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 :
Si GKE se trouve dans un projet différent de celui qui contient Artifact Registry, accordez les autorisations requises au compte de service.
Pour stocker des images, interagir avec des dépôts pour d'autres formats que des conteneurs ou exécuter des commandes
gcloud
depuis votre cluster, vous devez définir des niveaux d'accès pour le compte de service lors de la création du cluster ou du pool de nœuds.Si vous n'utilisez pas une version compatible de GKE, configurez imagePullSecrets.
- Compte de service fourni par l'utilisateur
Si vous souhaitez utiliser un compte de service fourni par l'utilisateur comme identité d'un cluster, vous devez:
Accordez les autorisations requises au compte de service à partir du projetGoogle Cloud sur lequel Artifact Registry s'exécute.
Par défaut, la création d'un cluster ou d'un pool de nœuds avec un compte de service fourni par l'utilisateur accorde l'étendue d'accès
cloud-platform
.Si vous utilisez l'indicateur
--scopes
avec la commande gcloud container clusters create ou gcloud container node-pools create, vous devez inclure les champs d'application appropriés à utiliser avec Artifact Registry.
Définir des niveaux d'accès
Les champs d'application d'accès représentent l'ancienne méthode de spécification des autorisations associées aux VM Compute Engine. Pour extraire des images à partir de dépôts Artifact Registry, les nœuds GKE doivent disposer du niveau d'accès en lecture seule au stockage ou d'un autre niveau d'accès au stockage qui inclut l'accès en lecture.
Vous ne pouvez définir des niveaux d'accès que lorsque vous créez un cluster ou un pool de nœuds. Vous ne pouvez pas modifier les niveaux d'accès sur des nœuds existants.
- Si vous utilisez le compte de service Compute Engine par défaut, GKE crée des nœuds avec les champs d'application d'accès par défaut Compute Engine, qui incluent un accès en lecture seule au stockage.
- Si vous utilisez un compte de service fourni par l'utilisateur, GKE crée des nœuds avec la portée
cloud-platform
, qui est requise pour la plupart des servicesGoogle 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 d'étendues d'accès à accorder, séparées par une virgule.
Pour accéder aux dépôts Docker, utilisez l'une des portées suivantes:
storage-ro
: accorde un accès en lecture seule pour obtenir 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 serviceGoogle Cloud .Pour accéder à d'autres dépôts, vous devez utiliser le niveau d'accès
cloud-platform
.
Pour obtenir la liste complète des portées, consultez la documentation de gcloud container clusters create ou de gcloud container node-pools create.
Pour en savoir plus sur les niveaux d'accès que vous pouvez définir lors de la création d'un cluster, consultez la documentation de la commande gcloud container clusters create.
Configurer un imagePullSecret
Pour configurer un objet imagePullSecret
:
Dans le projet contenant GKE, recherchez le compte de service Compute Engine par défaut. L'adresse e-mail du compte comporte le suffixe @developer.gserviceaccount.com.
Téléchargez la clé du compte de service pour le compte de service.
Dans le projet contenant le dépôt, vérifiez que vous avez accordé les autorisations appropriées.
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)"
Remplacez les éléments suivants :
- 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 de votre fichier de clé de compte de service. Par exemple, "key.json".
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 est utilisé pour extraire votre image de conteneur.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 qui agit au nom d'Artifact Registry lors de l'interaction avec les services Google Cloud. Pour en savoir plus sur le compte et ses autorisations, consultez la section Compte de service Artifact Registry.
Étape suivante
Après avoir configuré les autorisations, découvrez comment utiliser vos artefacts.
- Images de conteneur: Docker, Helm
- Packages de langage: Java, Node.js, Python et Go
- Packages de l'OS: Debian, RPM