Les comptes de service sont les comptes que les charges de travail ou les services utilisent pour consommer des ressources et accéder aux microservices de manière programmatique et sécurisée. Il s'agit d'un type d'identité spécial utilisé par une application ou une charge de travail plutôt que par une personne. Comme un compte utilisateur, les comptes de service peuvent se voir accorder des autorisations et des rôles, mais ils ne peuvent pas se connecter comme un utilisateur humain.
Les comptes de service sont utiles pour gérer l'infrastructure Google Distributed Cloud (GDC) isolée du réseau, par exemple :
- Services et charges de travail Distributed Cloud internes pour accéder de manière sécurisée à l'interface de programmation d'application (API) du plan de contrôle Distributed Cloud. Par exemple, les services de base de données interagissent avec les API Kubernetes pour créer et supprimer des bases de données.
- Les charges de travail client dans Distributed Cloud pour accéder aux services Distributed Cloud et effectuer des appels d'interface de programmation d'application (API) autorisés. Par exemple, les comptes de service peuvent gérer un client à l'aide d'un notebook Vertex AI Workbench pour transcrire des fichiers audio à l'aide de l'API Speech-to-Text.
- Charges de travail externes à fédérer avec Distributed Cloud. Par exemple, les comptes de service peuvent gérer une application externe à Distributed Cloud qui numérise des documents, mais qui souhaite utiliser l'API Optical Character Recognition (OCR) pour remplacer son moteur OCR actuel.
- Les services Distributed Cloud ou les contrôleurs système permettent d'accéder de manière sécurisée aux ressources client ou aux clusters d'utilisateur. Par exemple, les comptes de service peuvent gérer les workflows d'authentification et d'autorisation lorsque les contrôleurs de service s'exécutant dans les clusters d'administrateur doivent exécuter des charges de travail dans les clusters d'utilisateur gérés par les clients.
Vous pouvez gérer les comptes à l'aide de la console GDC ou de la CLI gdcloud. Avec gcloud CLI, la fonctionnalité d'identité de service est basée sur l'API ProjectServiceAccount
globale. Étant donné que les comptes de service sont configurés de manière globale, ils fonctionnent dans toutes les zones de votre univers gdcloud.
Avant de commencer
Vous ne pouvez créer des comptes de service que dans un projet. Pour en savoir plus sur la création d'un projet, consultez Créer un projet.
Créer une identité de service
Pour obtenir les autorisations nécessaires pour créer des comptes de service, demandez à votre administrateur IAM du projet de vous accorder le rôle Administrateur IAM du projet (project-iam-admin
).
Les utilisateurs ayant accès aux comptes de service peuvent accéder à tous les comptes de service d'un projet.
Pour créer des comptes de service dans un projet, utilisez la console GDC ou la CLI gdcloud.
Console
- Connectez-vous à la console GDC.
- Dans le menu de navigation, sélectionnez Identité et accès > Identités de service.
- Cliquez sur Créer une identité de service. La page Détails de l'identité du service s'ouvre.
- Dans le champ Nom de l'identité du service, saisissez le nom de l'identité de votre service. Exemple :
testserviceidentity
. - Cliquez sur Créer.
gdcloud
Créez une identité de service :
gdcloud iam service-accounts create NAME \
--project=PROJECT
Remplacez les valeurs suivantes :
- NAME : nom du
ProjectServiceAccount
. Le nom doit être unique dans l'espace de noms du projet. - PROJECT : projet dans lequel créer l'identité de service. Si
gdcloud init
est déjà défini, omettez l'option--project
.
Cette commande crée un ProjectServiceAccount
dans l'espace de noms du projet sur le serveur de l'API Management.
API
Créez un fichier YAML de ressource personnalisée
ProjectServiceAccount
, tel quemy-project-sa.yaml
:apiVersion: resourcemanager.global.gdc.goog/v1 kind: ProjectServiceAccount metadata: name: NAME namespace: PROJECT spec: keys: - algorithm: ALGORITHM id: KEY_ID key: KEY validAfter: "START_TIME" validBefore: "EXPIRATION_TIME"
Remplacez les variables suivantes :
NAME
: nom de la ressourceProjectServiceAccount
. Le nom doit être unique dans l'espace de noms du projet.PROJECT
: projet dans lequel créer l'identité de service.ALGORITHM
: algorithme de la clé. Seules les clés ES256 sont acceptées.KEY_ID
: identifiant unique de la clé. L'ID permet de déterminer la clé à valider.KEY
: clé publique encodée en base64 à comparer pour la validation.START_TIME
: heure de début à laquelle la clé devient valide, par exemple2025-02-07T00:59:34Z
.EXPIRATION_TIME
: délai d'expiration de la clé, par exemple2026-02-07T00:59:34Z
.
Appliquez la ressource personnalisée
ProjectServiceAccount
au serveur d'API global :kubectl --kubeconfig GLOBAL_API_SERVER_KUBECONFIG apply -f my-project-sa.yaml
Remplacez la variable
GLOBAL_API_SERVER_KUBECONFIG
par le chemin d'accès au fichier kubeconfig du serveur d'API global.
Afficher les identités de service
Pour afficher la liste des comptes de service dans un projet, utilisez la console GDC ou la CLI gdcloud.
Console
- Connectez-vous à la console GDC.
- Sélectionnez un projet.
- Dans le menu de navigation, cliquez sur Identité et accès > Identités de service pour afficher la liste des comptes de service du projet.
gdcloud
Répertoriez les comptes de service dans un projet :
gdcloud iam service-accounts list \
--project=PROJECT
Attribuer une liaison de rôle à l'identité du service
Pour attribuer une liaison de rôle, vous devez disposer des autorisations appropriées. Pour obtenir les autorisations requises pour attribuer des rôles, demandez à l'administrateur IAM du projet de vous accorder le rôle d'administrateur IAM du projet (project-iam-admin
).
Utilisez la console GDC ou gdcloud CLI pour attribuer une liaison de rôle.
Console
- Connectez-vous à la console GDC.
- Sélectionnez un projet.
- Dans le menu de navigation, sélectionnez Identité et accès > Accès.
- Dans la liste Membres, cliquez sur Ajouter un membre. La page Utilisateurs et rôles s'affiche.
- Dans la liste Type de membre, sélectionnez Identité de service.
- Dans la liste Identité du service, sélectionnez l'identité du service à laquelle vous souhaitez attribuer une liaison de rôle.
- Dans la liste Rôle, sélectionnez le rôle que vous souhaitez attribuer à l'identité de service, par exemple Créateur de sauvegardes.
- Facultatif : Pour ajouter un autre rôle, cliquez sur Ajouter un autre rôle. Sélectionnez le rôle supplémentaire.
- Cliquez sur Ajouter.
gdcloud
Cette commande crée et nomme la liaison de rôle de projet pour associer le rôle spécifié à ProjectServiceAccount
sur le serveur de l'API Management :
gdcloud iam service-accounts add-iam-policy-binding \
--project=PROJECT \
--role=ROLE \
--role-namespace=ROLE_NAMESPACE \
--iam-account=NAME
Remplacez les valeurs suivantes :
- PROJECT : projet dans lequel créer la liaison de rôle.
Si
gdcloud init
est déjà défini, vous pouvez omettre l'option--project
. - ROLE : rôle prédéfini à attribuer à
ProjectServiceAccount
. Spécifiez les rôles au formatRole/name
, où Role correspond au type KubernetesIAMRole
et name au nom du rôle prédéfini. Par exemple, pour attribuer le rôle de lecteur de projet, définissez le rôle surIAMRole/project-viewer
. - ROLE_NAMESPACE : espace de noms du rôle à associer au compte de service. Cela ne s'applique que si votre univers comporte plusieurs zones.
- NAME : nom de l'identité de service à utiliser.
Supprimer une identité de service
Pour supprimer des comptes de service dans un projet, utilisez la console GDC ou la CLI gdcloud.
Console
- Connectez-vous à la console GDC.
- Dans le menu de navigation, sélectionnez Identité et accès > Identités de service.
- Cochez la case correspondant à l'identité de service que vous souhaitez supprimer.
- Cliquez sur Supprimer.
- La boîte de dialogue de confirmation s'affiche. Dans le champ Confirmez en saisissant ce qui suit, saisissez
remove
. - Cliquez sur Supprimer.
gdcloud
Exécutez la commande suivante pour supprimer une identité de service :
gdcloud iam service-accounts delete NAME \
--project=PROJECT
Créer et ajouter des paires de clés
Pour créer et ajouter des paires de clés dans un projet, utilisez la console GDC ou la CLI gdcloud.
Console
- Connectez-vous à la console GDC.
- Dans le menu de navigation, sélectionnez Identité et accès > Identités de service.
- Cliquez sur le nom de l'identité de service que vous souhaitez ajouter à la clé.
- Cliquez sur Créer une clé.
- La nouvelle clé apparaît dans la liste Clés. Une boîte de dialogue confirme que vous avez bien créé la clé.
gdcloud
Cette commande crée le fichier JSON des identifiants par défaut de l'application, ainsi que les paires de clés publique et privée :
gdcloud iam service-accounts keys create APPLICATION_DEFAULT_CREDENTIALS_FILENAME \
--project=PROJECT \
--iam-account=NAME \
--ca-cert-path=CA_CERTIFICATE_PATH
Remplacez les valeurs suivantes :
- APPLICATION_DEFAULT_CREDENTIALS_FILENAME : nom du fichier JSON.
- PROJECT : sélectionne le projet pour lequel créer la clé.
Si
gdcloud init
est déjà défini, vous pouvez omettre l'option--project
. - NAME : nom de l'identité de service pour laquelle ajouter la clé.
- CA_CERTIFICATE_PATH : (facultatif) chemin d'accès au certificat de l'autorité de certification (CA) pour valider le point de terminaison d'authentification. Si vous ne spécifiez pas ce chemin, les certificats CA du système sont utilisés. Vous devez installer l'autorité de certification dans les certificats CA du système.
Distributed Cloud ajoute la clé publique aux clés ProjectServiceAccount
que vous utilisez pour valider les jetons Web JSON (JWT) signés par la clé privée. La clé privée est écrite dans le fichier JSON des identifiants par défaut de l'application.
L'exemple suivant montre le fichier JSON des identifiants par défaut de l'application :
{
"type": "gdch_service_account",
"format_version": "1",
"project": "project_name",
"private_key_id": "abcdef1234567890",
"private_key": "-----BEGIN RSA PRIVATE KEY-----\nETC\n-----END RSA PRIVATE KEY-----\n",
"name": "service_identity_name",
"ca_cert_path": "service_identity_name",
"token_uri": "https://service-identity.<Domain>/authenticate"
}
Cet exemple utilise les valeurs suivantes :
project
: espace de noms du projet dans l'organisation.private_key_id
: ID attribué à la clé.private_key
: clé privée générée par la CLI.name
: nom de l'identité de service.token_uri
: adresse du point de terminaison d'authentification.
Lister les identifiants des comptes de service
Répertoriez les clés publiques d'un ProjectServiceAccount
spécifique dans le projet :
gdcloud iam service-accounts keys list \
--project=PROJECT \
--iam-account=NAME
Supprimer les identifiants
Pour supprimer la clé publique, utilisez la console GDC ou la CLI gdcloud.
Console
- Connectez-vous à la console GDC.
- Dans le menu de navigation, sélectionnez Identité et accès > Identités de service.
- Cliquez sur le nom de l'identité de service associée à la clé que vous souhaitez supprimer.
- Cliquez sur Supprimer.
- Dans la boîte de dialogue de confirmation, cliquez sur Supprimer.
gdcloud
Supprimez la clé publique avec l'ID de clé du ProjectServiceAccount
spécifique dans le projet :
gdcloud iam service-accounts keys delete KEY_ID \
--project=PROJECT \
--iam-account=NAME