Importer des clés de compte de service

Cette page explique comment importer une clé publique pour un compte de service. Après avoir importé la clé publique, vous pouvez utiliser la clé privée de la paire de clés pour vous authentifier en tant que compte de service.

Avant de commencer

Rôles requis

Pour obtenir les autorisations nécessaires pour gérer des clés de compte de service, demandez à votre administrateur de vous attribuer le rôle IAM Administrateur de clés de compte de service (roles/iam.serviceAccountKeyAdmin) sur le projet, ou sur le compte de service dont vous souhaitez gérer les clés. Pour en savoir plus sur l'attribution de rôles, consultez la section Gérer les accès.

Vous pouvez également obtenir les autorisations requises via des rôles personnalisés ou d'autres rôles prédéfinis.

Pour en savoir plus, consultez la section Rôles des comptes de service.

Les rôles de base IAM contiennent également les autorisations nécessaires pour gérer les clés de compte de service. 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.

Importer une clé publique pour un compte de service

Vous pouvez importer la partie publique d'une paire de clés gérée par l'utilisateur pour l'associer à un compte de service. Une fois que vous avez importé la clé publique, vous pouvez utiliser la clé privée de la paire de clés en tant que clé de compte de service.

La clé que vous importez doit être une clé publique RSA encapsulée dans un certificat X.509 v3 et encodée en base64. Vous pouvez utiliser des outils tels que OpenSSL pour générer une clé et un certificat dans ce format.

N'incluez aucune information privée dans le certificat X.509. Plus précisément, utilisez un objet générique et n'ajoutez aucun attribut facultatif. Les certificats sont visibles publiquement. Toute information privée inclue dans le certificat est visible par toute personne qui le récupère. Pour en savoir plus, consultez la section Éviter de divulguer des informations confidentielles dans les certificats X.509 importés.

Par exemple, la commande suivante génère une paire de clés RSA de 2 048 bits et encapsule la clé publique dans un certificat autosigné qui est valide pendant 365 jours :

openssl req -x509 -nodes -newkey rsa:2048 -days 365 \
    -keyout /path/to/private_key.pem \
    -out /path/to/public_key.pem \
    -subj "/CN=unused"

Vous pouvez ensuite importer le fichier public_key.pem en tant que clé publique d'un compte de service.

Console

  1. Dans Google Cloud Console, accédez à la page Comptes de service.

    Accéder à la page "Comptes de service"

    Les étapes restantes apparaîtront automatiquement dans la console Google Cloud.

  2. Sélectionnez un projet.
  3. Sur la page Comptes de service, cliquez sur l'adresse e-mail du compte de service pour lequel vous souhaitez importer une clé.
  4. Cliquez sur l'onglet Clés.
  5. Cliquez sur le menu déroulant Ajouter une clé, puis sélectionnez Importer une clé existante.
  6. Cliquez sur Parcourir, puis recherchez et sélectionnez votre fichier de clé publique. Vous pouvez également copier le contenu de votre fichier de clé publique et le coller dans la zone Coller une clé existante.
  7. Cliquez sur Importer.

gcloud

Exécutez la commande gcloud iam service-accounts keys upload pour importer une clé publique permettant de signer des clés de compte de service.

Remplacez les valeurs suivantes :

  • KEY_FILE : chemin d'accès au fichier contenant les données de clé à importer (par exemple, ./public_key.pem).
  • SA_NAME : nom du compte de service pour lequel importer une clé.
  • PROJECT_ID : ID de votre projet Google Cloud.
gcloud iam service-accounts keys upload KEY_FILE \
    --iam-account=SA_NAME@PROJECT_ID.iam.gserviceaccount.com

Le résultat contient un identifiant unique pour la clé importée :

Name: projects/PROJECT_ID/serviceAccounts/SA_NAME@PROJECT_ID.iam.gserviceaccount.com/keys/c7b74879da78e4cdcbe7e1bf5e129375c0bfa8d0

Pour savoir si la commande a réussi, exécutez la commande gcloud iam service-accounts keys list :

gcloud iam service-accounts keys list \
    --iam-account=SA_NAME@PROJECT_ID.iam.gserviceaccount.com

Le résultat contiendra l'identifiant unique qui a été renvoyé après la création de la clé :

KEY_ID CREATED_AT EXPIRES_AT DÉSACTIVÉ
c7b74879da78e4cdcbe7e1bf5e129375c0bfa8d0 2019-06-26T21:01:42Z 9999-12-31T23:59:59Z  

REST

La méthode projects.serviceAccounts.keys.upload importe la clé publique à partir d'une paire de clés gérée par l'utilisateur et ajoute cette clé au compte de service.

Avant d'utiliser les données de requête, effectuez les remplacements suivants :

  • PROJECT_ID : ID de votre projet Google Cloud. Les ID de projet sont des chaînes alphanumériques, telles que my-project.
  • SA_NAME : nom du compte de service auquel associer la clé.
  • PUBLIC_KEY_DATA : données de la clé publique pour la paire de clés. Il doit s'agir d'une clé publique RSA encapsulée dans un certificat X.509 v3. Encodez les données de clé publique en base64, y compris la première ligne, -----BEGIN CERTIFICATE-----, et la dernière ligne, -----END CERTIFICATE-----.

Méthode HTTP et URL :

POST https://iam.googleapis.com/v1/projects/PROJECT_ID/serviceAccounts/SA_NAME@PROJECT_ID.iam.gserviceaccount.com/keys:upload

Corps JSON de la requête :

{
  "publicKeyData": "PUBLIC_KEY_DATA"
}

Pour envoyer votre requête, développez l'une des options suivantes :

Vous devriez recevoir une réponse JSON de ce type :

{
  "name": "projects/my-project/serviceAccounts/my-service-account@my-project.iam.gserviceaccount.com/keys/c7b74879da78e4cdcbe7e1bf5e129375c0bfa8d0",
  "validAfterTime": "2020-05-17T19:31:19Z",
  "validBeforeTime": "2021-05-17T19:31:19Z",
  "keyAlgorithm": "KEY_ALG_RSA_2048",
  "keyOrigin": "USER_PROVIDED",
  "keyType": "USER_MANAGED"
}

Désactiver l'importation de clés publiques

Pour désactiver l'importation de clés pour votre projet, consultez la section Limiter l'importation des clés de compte de service.

Étapes suivantes

Faites l'essai

Si vous débutez sur Google Cloud, créez un compte pour évaluer les performances de nos produits en conditions réelles. Les nouveaux clients bénéficient également de 300 $ de crédits gratuits pour exécuter, tester et déployer des charges de travail.

Essai gratuit