Dienstkontoschlüssel erstellen und löschen

Auf dieser Seite wird erläutert, wie Sie Dienstkontoschlüssel mit der Google Cloud Console, Google Cloud CLI, der Identity and Access Management API oder eine der Google Cloud-Clientbibliotheken erstellen und löschen.

Hinweise

  • Enable the IAM API.

    Enable the API

  • Richten Sie die Authentifizierung ein.

    Select the tab for how you plan to use the samples on this page:

    Console

    When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.

    gcloud

    In the Google Cloud console, activate Cloud Shell.

    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.

    C#

    Wenn Sie die .NET Beispiele auf dieser Seite in einer lokalen Entwicklungsumgebung verwenden möchten, installieren und initialisieren Sie die gcloud CLI und richten dann die Standardanmeldedaten für Anwendungen mit Ihren Nutzeranmeldedaten ein.

    1. Install the Google Cloud CLI.
    2. To initialize the gcloud CLI, run the following command:

      gcloud init
    3. If you're using a local shell, then create local authentication credentials for your user account:

      gcloud auth application-default login

      You don't need to do this if you're using Cloud Shell.

    Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten in der Dokumentation zur Google Cloud-Authentifizierung.

    C++

    Wenn Sie die C++ Beispiele auf dieser Seite in einer lokalen Entwicklungsumgebung verwenden möchten, installieren und initialisieren Sie die gcloud CLI und richten dann die Standardanmeldedaten für Anwendungen mit Ihren Nutzeranmeldedaten ein.

    1. Install the Google Cloud CLI.
    2. To initialize the gcloud CLI, run the following command:

      gcloud init
    3. If you're using a local shell, then create local authentication credentials for your user account:

      gcloud auth application-default login

      You don't need to do this if you're using Cloud Shell.

    Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten in der Dokumentation zur Google Cloud-Authentifizierung.

    Go

    Wenn Sie die Go Beispiele auf dieser Seite in einer lokalen Entwicklungsumgebung verwenden möchten, installieren und initialisieren Sie die gcloud CLI und richten dann die Standardanmeldedaten für Anwendungen mit Ihren Nutzeranmeldedaten ein.

    1. Install the Google Cloud CLI.
    2. To initialize the gcloud CLI, run the following command:

      gcloud init
    3. If you're using a local shell, then create local authentication credentials for your user account:

      gcloud auth application-default login

      You don't need to do this if you're using Cloud Shell.

    Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten in der Dokumentation zur Google Cloud-Authentifizierung.

    Java

    Wenn Sie die Java Beispiele auf dieser Seite in einer lokalen Entwicklungsumgebung verwenden möchten, installieren und initialisieren Sie die gcloud CLI und richten dann die Standardanmeldedaten für Anwendungen mit Ihren Nutzeranmeldedaten ein.

    1. Install the Google Cloud CLI.
    2. To initialize the gcloud CLI, run the following command:

      gcloud init
    3. If you're using a local shell, then create local authentication credentials for your user account:

      gcloud auth application-default login

      You don't need to do this if you're using Cloud Shell.

    Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten in der Dokumentation zur Google Cloud-Authentifizierung.

    Python

    Wenn Sie die Python Beispiele auf dieser Seite in einer lokalen Entwicklungsumgebung verwenden möchten, installieren und initialisieren Sie die gcloud CLI und richten dann die Standardanmeldedaten für Anwendungen mit Ihren Nutzeranmeldedaten ein.

    1. Install the Google Cloud CLI.
    2. To initialize the gcloud CLI, run the following command:

      gcloud init
    3. If you're using a local shell, then create local authentication credentials for your user account:

      gcloud auth application-default login

      You don't need to do this if you're using Cloud Shell.

    Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten in der Dokumentation zur Google Cloud-Authentifizierung.

    REST

    Verwenden Sie die von der gcloud CLI bereitgestellten Anmeldedaten, um die REST API-Beispiele auf dieser Seite in einer lokalen Entwicklungsumgebung zu verwenden.

      Install the Google Cloud CLI, then initialize it by running the following command:

      gcloud init

    Weitere Informationen finden Sie unter Für die Verwendung von REST authentifizieren in der Dokumentation zur Google Cloud-Authentifizierung.

  • Dienstkonto-Anmeldedaten

Erforderliche Rollen

Bitten Sie Ihren Administrator, Ihnen die IAM-Rolle Service Account Key Admin (roles/iam.serviceAccountKeyAdmin) für das Projekt oder für das Dienstkonto, dessen Schlüssel Sie verwalten möchten, zuzuweisen, um die Berechtigungen zu erhalten, die Sie zum Erstellen und Löschen von Dienstkontoschlüsseln benötigen. Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.

Sie können die erforderlichen Berechtigungen auch über benutzerdefinierte Rollen oder andere vordefinierte Rollen erhalten.

Weitere Informationen finden Sie unter Dienstkontenrollen.

Abhängig von der Konfiguration Ihrer Organisationsrichtlinie müssen Sie möglicherweise auch das Erstellen von Dienstkontoschlüsseln in Ihrem Projekt zulassen, bevor Sie einen Schlüssel erstellen können.

Bitten Sie Ihren Administrator, Ihnen die folgenden IAM-Rollen für Ihre Organisation zuzuweisen, um die Berechtigungen zu erhalten, die Sie zum Erstellen von Dienstkontoschlüsseln in einem Projekt benötigen:

Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.

Diese vordefinierten Rollen enthalten die Berechtigungen, die zum Erstellen von Dienstkontoschlüsseln in einem Projekt erforderlich sind. Erweitern Sie den Abschnitt Erforderliche Berechtigungen, um die erforderlichen Berechtigungen anzuzeigen:

Erforderliche Berechtigungen

Die folgenden Berechtigungen sind erforderlich, damit Dienstkontoschlüssel in einem Projekt erstellt werden können:

  • orgpolicy.constraints.list
  • orgpolicy.customConstraints.create
  • orgpolicy.customConstraints.delete
  • orgpolicy.customConstraints.get
  • orgpolicy.customConstraints.list
  • orgpolicy.customConstraints.update
  • orgpolicy.policies.create
  • orgpolicy.policies.delete
  • orgpolicy.policies.list
  • orgpolicy.policies.update
  • orgpolicy.policy.get
  • orgpolicy.policy.set
  • resourcemanager.organizations.get
  • resourcemanager.projects.listTagBindings
  • resourcemanager.projects.listEffectiveTags
  • resourcemanager.tagKeys.get
  • resourcemanager.tagKeys.list
  • resourcemanager.tagValues.list
  • resourcemanager.tagValues.get

Sie können diese Berechtigungen auch mit benutzerdefinierten Rollen oder anderen vordefinierten Rollen erhalten.

Erstellen von Dienstkontoschlüsseln zulassen

Bevor Sie einen Dienstkontoschlüssel erstellen, prüfen Sie, ob die Einschränkung der Organisationsrichtlinie iam.disableServiceAccountKeyCreation für Ihr Projekt nicht erzwungen wird. Wenn diese Einschränkung für Ihr Projekt erzwungen wird, können Sie in diesem Projekt keine Dienstkontoschlüssel erstellen.

Wir empfehlen, diese Einschränkung für die meisten Projekte zu erzwingen und nur Projekte auszunehmen, für die wirklich Dienstkontoschlüssel erforderlich sind. Weitere Informationen zu alternativen Authentifizierungsmethoden finden Sie unter Die richtige Authentifizierungsmethode für Ihren Anwendungsfall auswählen.

Wenn Sie ein Projekt von der Einschränkung der Organisationsrichtlinie iam.disableServiceAccountKeyCreation ausnehmen möchten, bitten Sie einen Administrator der Organisationsrichtlinie, Folgendes zu tun:

  1. Erstellen Sie auf Organisationsebene einen Tag-Schlüssel und einen Tag-Wert, mit denen Sie festlegen, ob eine Ressource von der Organisationsrichtlinie ausgenommen werden soll. Wir empfehlen, ein Tag mit dem Schlüssel disableServiceAccountKeyCreation und den Werten enforced und not_enforced zu erstellen.

    Informationen zum Erstellen von Tag-Schlüsseln und -Werten finden Sie unter Neues Tag erstellen und definieren.

  2. Hängen Sie das Tag disableServiceAccountKeyCreation an die Organisation an und legen Sie es auf den Wert enforced fest. Alle Ressourcen in der Organisation übernehmen diesen Tag-Wert, sofern er nicht mit einem anderen Tag-Wert überschrieben wird.

    Informationen zum Anhängen von Tags an Ressourcen finden Sie unter Tags an Ressourcen anhängen.

  3. Hängen Sie für jedes Projekt oder jeden Ordner, den Sie von der Organisationsrichtlinie ausschließen möchten, das Tag disableServiceAccountKeyCreation an und legen Sie als Wert not_enforced fest. Wenn Sie einen Tag-Wert für ein Projekt oder einen Ordner auf diese Weise festlegen, wird der von der Organisation übernommene Tag-Wert überschrieben.
  4. Erstellen oder aktualisieren Sie die Organisationsrichtlinie, die das Erstellen von Dienstkontoschlüsseln verhindert, damit die Einschränkung nicht für ausgenommene Ressourcen erzwungen wird. Diese Richtlinie sollte die folgenden Regeln enthalten:

    • Konfigurieren Sie die Einschränkung iam.disableServiceAccountKeyCreation so, dass sie für Ressourcen mit dem Tag disableServiceAccountKeyCreation: not_enforced nicht erzwungen wird. Die Bedingung in dieser Regel sollte so aussehen:

      "resource.matchTag('ORGANIZATION_ID/disableServiceAccountKeyCreation', 'not_enforced')"
      
    • Konfigurieren Sie die Einschränkung iam.disableServiceAccountKeyCreation so, dass sie für alle anderen Ressourcen erzwungen wird.

Dienstkontoschlüssel erstellen

Sie müssen erst die Identität des Dienstkontos bestätigen, um ein Dienstkonto außerhalb von Google Cloud zu verwenden, zum Beispiel auf anderen Plattformen oder lokal. Paare aus öffentlichen und privaten Schlüsseln bieten dafür eine sichere Möglichkeit. Wenn Sie einen Dienstkontoschlüssel erstellen, wird der öffentliche Teil in Google Cloud gespeichert, während der private Teil nur für Sie verfügbar ist. Weitere Informationen zu öffentlichen/privaten Schlüsselpaaren finden Sie unter Dienstkontoschlüssel.

Sie können einen Dienstkontoschlüssel mithilfe der Google Cloud Console, der gcloud CLI, der Methode serviceAccounts.keys.create() oder einer der Clientbibliotheken erstellen. Ein Dienstkonto kann bis zu 10 Schlüssel haben.

Standardmäßig laufen Dienstkontoschlüssel niemals ab. Sie können eine Einschränkung für die Organisationsrichtlinie verwenden, um die Dauer anzugeben, für die ein Dienstkontoschlüssel gültig ist. Weitere Informationen finden Sie unter Ablaufzeiten für von Nutzern verwaltete Schlüssel.

In den folgenden Beispielen ist SA_NAME der Name Ihres Dienstkontos und PROJECT_ID die ID Ihres Google Cloud-Projekts. Sie können den String SA_NAME@PROJECT_ID.iam.gserviceaccount.com auf der Seite Dienstkonten in der Google Cloud Console abrufen.

Console

  1. Rufen Sie in der Google Cloud Console die Seite Dienstkonten auf:

    Zur Seite „Dienstkonten“

    Die verbleibenden Schritte werden in der Google Cloud Console angezeigt.

  2. Wählen Sie ein Projekt aus.
  3. Klicken Sie auf die E-Mail-Adresse des Dienstkontos, für das Sie einen Schlüssel erstellen möchten.
  4. Klicken Sie auf den Tab Schlüssel.
  5. Klicken Sie auf das Drop-down-Menü Schlüssel hinzufügen und wählen Sie Neuen Schlüssel erstellen aus.
  6. Wählen Sie als Schlüsseltyp JSON aus und klicken Sie dann auf Erstellen.

Wenn Sie auf Erstellen klicken, wird eine Dienstkontoschlüsseldatei heruntergeladen. Nachdem Sie die Schlüsseldatei heruntergeladen haben, können Sie sie nicht noch einmal herunterladen.

Der heruntergeladene Schlüssel hat das folgende Format, wobei PRIVATE_KEY der private Teil des öffentlichen/privaten Schlüsselpaars ist:

{
  "type": "service_account",
  "project_id": "PROJECT_ID",
  "private_key_id": "KEY_ID",
  "private_key": "-----BEGIN PRIVATE KEY-----\nPRIVATE_KEY\n-----END PRIVATE KEY-----\n",
  "client_email": "SERVICE_ACCOUNT_EMAIL",
  "client_id": "CLIENT_ID",
  "auth_uri": "https://accounts.google.com/o/oauth2/auth",
  "token_uri": "https://accounts.google.com/o/oauth2/token",
  "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
  "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/SERVICE_ACCOUNT_EMAIL"
}

Bewahren Sie die Schlüsseldatei sicher auf, da sie zur Authentifizierung als Ihr Dienstkonto verwendet werden kann. Sie können diese Datei beliebig verschieben und umbenennen.

Sie können Dienstkonto-Schlüsseldateien verwenden, um eine Anwendung als Dienstkonto zu authentifizieren.

gcloud

Mit dem Befehl gcloud iam service-accounts keys create können Sie Dienstkontoschlüssel erstellen.

Ersetzen Sie die folgenden Werte:

  • KEY_FILE: Der Pfad zu einer neuen Ausgabedatei für den privaten Schlüssel, z. B. ~/sa-private-key.json.
  • SA_NAME: Der Name des Dienstkontos, für das ein Schlüssel erstellt werden soll.
  • PROJECT_ID: Ihre Google Cloud-Projekt-ID.
gcloud iam service-accounts keys create KEY_FILE \
    --iam-account=SA_NAME@PROJECT_ID.iam.gserviceaccount.com

Ausgabe:

created key [e44da1202f82f8f4bdd9d92bc412d1d8a837fa83] of type [json] as
[/usr/home/username/KEY_FILE] for
[SA_NAME@PROJECT_ID.iam.gserviceaccount.com]

Die Dienstkontoschlüsseldatei wird jetzt auf Ihren Computer heruntergeladen. Nachdem Sie die Schlüsseldatei heruntergeladen haben, können Sie sie nicht noch einmal herunterladen.

Der heruntergeladene Schlüssel hat das folgende Format, wobei PRIVATE_KEY der private Teil des öffentlichen/privaten Schlüsselpaars ist:

{
  "type": "service_account",
  "project_id": "PROJECT_ID",
  "private_key_id": "KEY_ID",
  "private_key": "-----BEGIN PRIVATE KEY-----\nPRIVATE_KEY\n-----END PRIVATE KEY-----\n",
  "client_email": "SERVICE_ACCOUNT_EMAIL",
  "client_id": "CLIENT_ID",
  "auth_uri": "https://accounts.google.com/o/oauth2/auth",
  "token_uri": "https://oauth2.googleapis.com/token",
  "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
  "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/SERVICE_ACCOUNT_EMAIL"
}

Bewahren Sie die Schlüsseldatei sicher auf, da sie zur Authentifizierung als Ihr Dienstkonto verwendet werden kann. Sie können diese Datei beliebig verschieben und umbenennen.

Sie können Dienstkonto-Schlüsseldateien verwenden, um eine Anwendung als Dienstkonto zu authentifizieren.

C++

Informationen zum Installieren und Verwenden der Clientbibliothek für IAM finden Sie unter IAM-Clientbibliotheken. Weitere Informationen finden Sie in der IAM-Referenzdokumentation zur C++ API.

Richten Sie zur Authentifizierung bei IAM die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Vorbereitung.

namespace iam = ::google::cloud::iam_admin_v1;
return [](std::string const& name) {
  iam::IAMClient client(iam::MakeIAMConnection());
  auto response = client.CreateServiceAccountKey(
      name,
      google::iam::admin::v1::ServiceAccountPrivateKeyType::
          TYPE_GOOGLE_CREDENTIALS_FILE,
      google::iam::admin::v1::ServiceAccountKeyAlgorithm::KEY_ALG_RSA_2048);
  if (!response) throw std::move(response).status();
  std::cout << "ServiceAccountKey successfully created: "
            << response->DebugString() << "\n"
            << "Please save the key in a secure location, as they cannot "
               "be downloaded later\n";
  return response->name();
}

C#

Informationen zum Installieren und Verwenden der Clientbibliothek für IAM finden Sie unter IAM-Clientbibliotheken. Weitere Informationen finden Sie in der IAM-Referenzdokumentation zur C# API.

Richten Sie zur Authentifizierung bei IAM die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Vorbereitung.


using System;
using System.Text;
using Google.Apis.Auth.OAuth2;
using Google.Apis.Iam.v1;
using Google.Apis.Iam.v1.Data;

public partial class ServiceAccountKeys
{
    public static ServiceAccountKey CreateKey(string serviceAccountEmail)
    {
        var credential = GoogleCredential.GetApplicationDefault()
            .CreateScoped(IamService.Scope.CloudPlatform);
        var service = new IamService(new IamService.Initializer
        {
            HttpClientInitializer = credential
        });

        var key = service.Projects.ServiceAccounts.Keys.Create(
            new CreateServiceAccountKeyRequest(),
            "projects/-/serviceAccounts/" + serviceAccountEmail)
            .Execute();

        // The PrivateKeyData field contains the base64-encoded service account key
        // in JSON format.
        // TODO(Developer): Save the below key (jsonKeyFile) to a secure location.
        //  You cannot download it later.
        byte[] valueBytes = System.Convert.FromBase64String(key.PrivateKeyData);
        string jsonKeyContent = Encoding.UTF8.GetString(valueBytes);

        Console.WriteLine("Key created successfully");
        return key;
    }
}

Go

Informationen zum Installieren und Verwenden der Clientbibliothek für IAM finden Sie unter IAM-Clientbibliotheken. Weitere Informationen finden Sie in der IAM-Referenzdokumentation zur Go API.

Richten Sie zur Authentifizierung bei IAM die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Vorbereitung.

import (
	"context"
	// "encoding/base64"
	"fmt"
	"io"

	iam "google.golang.org/api/iam/v1"
)

// createKey creates a service account key.
func createKey(w io.Writer, serviceAccountEmail string) (*iam.ServiceAccountKey, error) {
	ctx := context.Background()
	service, err := iam.NewService(ctx)
	if err != nil {
		return nil, fmt.Errorf("iam.NewService: %w", err)
	}

	resource := "projects/-/serviceAccounts/" + serviceAccountEmail
	request := &iam.CreateServiceAccountKeyRequest{}
	key, err := service.Projects.ServiceAccounts.Keys.Create(resource, request).Do()
	if err != nil {
		return nil, fmt.Errorf("Projects.ServiceAccounts.Keys.Create: %w", err)
	}
	// The PrivateKeyData field contains the base64-encoded service account key
	// in JSON format.
	// TODO(Developer): Save the below key (jsonKeyFile) to a secure location.
	// You cannot download it later.
	// jsonKeyFile, _ := base64.StdEncoding.DecodeString(key.PrivateKeyData)
	fmt.Fprintf(w, "Key created successfully")
	return key, nil
}

Java

Informationen zum Installieren und Verwenden der Clientbibliothek für IAM finden Sie unter IAM-Clientbibliotheken. Weitere Informationen finden Sie in der IAM-Referenzdokumentation zur Java API.

Richten Sie zur Authentifizierung bei IAM die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Vorbereitung.


import com.google.cloud.iam.admin.v1.IAMClient;
import com.google.gson.Gson;
import com.google.iam.admin.v1.CreateServiceAccountKeyRequest;
import com.google.iam.admin.v1.ServiceAccountKey;
import java.io.IOException;

public class CreateServiceAccountKey {

  public static void main(String[] args) throws IOException {
    // TODO(Developer): Replace the below variables before running.
    String projectId = "your-project-id";
    String serviceAccountName = "your-service-account-name";

    ServiceAccountKey key = createKey(projectId, serviceAccountName);
    Gson gson = new Gson();

    // System.out.println("Service account key: " + gson.toJson(key));
  }

  // Creates a key for a service account.
  public static ServiceAccountKey createKey(String projectId, String accountName)
          throws IOException {
    String email = String.format("%s@%s.iam.gserviceaccount.com", accountName, projectId);

    // Initialize client that will be used to send requests.
    // This client only needs to be created once, and can be reused for multiple requests.
    try (IAMClient iamClient = IAMClient.create()) {
      CreateServiceAccountKeyRequest req = CreateServiceAccountKeyRequest.newBuilder()
              .setName(String.format("projects/%s/serviceAccounts/%s", projectId, email))
              .build();
      ServiceAccountKey createdKey = iamClient.createServiceAccountKey(req);
      System.out.println("Key created successfully");

      return createdKey;
    }
  }
}

Python

Informationen zum Installieren und Verwenden der Clientbibliothek für IAM finden Sie unter IAM-Clientbibliotheken. Weitere Informationen finden Sie in der IAM-Referenzdokumentation zur Python API.

Richten Sie zur Authentifizierung bei IAM die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Vorbereitung.

from google.cloud import iam_admin_v1
from google.cloud.iam_admin_v1 import types


def create_key(project_id: str, account: str) -> types.ServiceAccountKey:
    """
    Creates a key for a service account.

    project_id: ID or number of the Google Cloud project you want to use.
    account: ID or email which is unique identifier of the service account.
    """

    iam_admin_client = iam_admin_v1.IAMClient()
    request = types.CreateServiceAccountKeyRequest()
    request.name = f"projects/{project_id}/serviceAccounts/{account}"

    key = iam_admin_client.create_service_account_key(request=request)

    # The private_key_data field contains the stringified service account key
    # in JSON format. You cannot download it again later.
    # If you want to get the value, you can do it in a following way:
    # import json
    # json_key_data = json.loads(key.private_key_data)
    # key_id = json_key_data["private_key_id"]

    return key

REST

Die Methode projects.serviceAccounts.keys.create ermöglicht es, einen Schlüssel für ein Dienstkonto zu erstellen.

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • PROJECT_ID: Ihre Google Cloud-Projekt-ID. Projekt-IDs sind alphanumerische Strings, wie my-project.
  • SA_NAME: Den Namen des Dienstkontos, für das Sie einen Schlüssel erstellen möchten.
  • KEY_ALGORITHM: Optional. Den Schlüsselalgorithmus, der für den Schlüssel verwendet werden soll. Der Standardwert ist ein 2.048-Bit-RSA-Schlüssel. Dieser Wert kann geändert werden. Eine Liste aller anwendbaren Werte finden Sie in der Referenz zu ServiceAccountKeyAlgorithm.

HTTP-Methode und URL:

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

JSON-Text anfordern:

{
  "keyAlgorithm": "KEY_ALGORITHM"
}

Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:

Die Antwort enthält einen Schlüssel für Ihr Dienstkonto. Der zurückgegebene Schlüssel hat das folgende Format, wobei ENCODED_PRIVATE_KEY der private Teil des öffentlichen/privaten Schlüsselpaars in base64 codiert ist.

{
  "name": "projects/PROJECT_ID/serviceAccounts/SERVICE_ACCOUNT_EMAIL/keys/KEY_ID",
  "privateKeyType": "TYPE_GOOGLE_CREDENTIALS_FILE",
  "privateKeyData": "ENCODED_PRIVATE_KEY",
  "validAfterTime": "DATE",
  "validBeforeTime": "DATE",
  "keyAlgorithm": "KEY_ALG_RSA_2048"
}

Zum Erstellen einer Schlüsseldatei, die Sie zur Authentifizierung als Dienstkonto verwenden können, decodieren Sie die privaten Schlüsseldaten und speichern Sie sie in einer Datei:

Linux

Führen Sie dazu diesen Befehl aus:

echo 'ENCODED_PRIVATE_KEY' | base64 --decode > PATH

Ersetzen Sie PATH durch den Pfad der Datei, in der Sie den Schlüssel speichern möchten. Verwenden Sie die Dateiendung .json.

macOS

Führen Sie dazu diesen Befehl aus:

echo 'ENCODED_PRIVATE_KEY' | base64 --decode > PATH

Ersetzen Sie PATH durch den Pfad der Datei, in der Sie den Schlüssel speichern möchten. Verwenden Sie die Dateiendung .json.

PowerShell

  1. Speichern Sie die codierten privaten Schlüsseldaten (ENCODED_PRIVATE_KEY) in einer Datei.

  2. Decodieren Sie die Datei mit certutil:

    certutil -decode ENCODED_FILE DECODED_FILE

    Ersetzen Sie die folgenden Werte:

    • ENCODED_FILE: Der Pfad zur Datei mit den codierten privaten Schlüsseldaten.
    • DECODED_FILE: Der Pfad der Datei, in der Sie den Schlüssel speichern möchten. Verwenden Sie die Dateiendung .json.

Bewahren Sie die Schlüsseldaten sicher auf, da sie zur Authentifizierung als Ihr Dienstkonto verwendet werden können.

Sie können Dienstkonto-Schlüsseldateien verwenden, um eine Anwendung als Dienstkonto zu authentifizieren.

Dienstkontoschlüssel löschen

Wenn Sie einen Dienstkontoschlüssel endgültig löschen, können Sie den Schlüssel nicht mehr für die Authentifizierung bei Google APIs verwenden.

Ein gelöschter Schlüssel kann nicht wiederhergestellt werden. Bevor Sie einen Dienstkontoschlüssel löschen, sollten Sie den Schlüssel deaktivieren und warten, bis Sie sicher sind, dass der Schlüssel nicht mehr benötigt wird. Anschließend können Sie den Schlüssel löschen.

Als Best Practice sollten Sie Ihre Dienstkontoschlüssel regelmäßig rotieren. Weitere Informationen zum Rotieren von Dienstkontoschlüsseln finden Sie unter Dienstkontoschlüsselrotation.

Console

  1. Rufen Sie in der Google Cloud Console die Seite Dienstkonten auf:

    Zur Seite „Dienstkonten“

    Die verbleibenden Schritte werden in der Google Cloud Console angezeigt.

  2. Wählen Sie ein Projekt aus.
  3. Klicken Sie auf der Seite Dienstkonten auf die E-Mail-Adresse des Dienstkontos, dessen Schlüssel Sie löschen möchten.
  4. Klicken Sie auf den Tab Schlüssel.
  5. Klicken Sie in der Liste der Schlüssel bei jedem Schlüssel, den Sie löschen möchten, auf Löschen .

gcloud

Mit dem Befehl gcloud iam service-accounts keys delete können Sie Dienstkontoschlüssel löschen.

Ersetzen Sie die folgenden Werte:

  • KEY_ID: Die ID des zu löschenden Schlüssels. Listen Sie alle Schlüssel für das Dienstkonto auf, identifizieren Sie den zu löschenden Schlüssel und kopieren Sie seine ID, um die ID des Schlüssels zu ermitteln.
  • SA_NAME: Der Name des Dienstkontos, zu dem der Schlüssel gehört.
  • PROJECT_ID: Ihre Google Cloud-Projekt-ID.
gcloud iam service-accounts keys delete KEY_ID \
    --iam-account=SA_NAME@PROJECT_ID.iam.gserviceaccount.com

Ausgabe:

Deleted key [KEY_ID] for service account
[SA_NAME@PROJECT_ID.iam.gserviceaccount.com]

C++

Informationen zum Installieren und Verwenden der Clientbibliothek für IAM finden Sie unter IAM-Clientbibliotheken. Weitere Informationen finden Sie in der IAM-Referenzdokumentation zur C++ API.

Richten Sie zur Authentifizierung bei IAM die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Vorbereitung.

namespace iam = ::google::cloud::iam_admin_v1;
[](std::string const& name) {
  iam::IAMClient client(iam::MakeIAMConnection());
  auto response = client.DeleteServiceAccountKey(name);
  if (!response.ok()) throw std::runtime_error(response.message());
  std::cout << "ServiceAccountKey successfully deleted.\n";
}

C#

Informationen zum Installieren und Verwenden der Clientbibliothek für IAM finden Sie unter IAM-Clientbibliotheken. Weitere Informationen finden Sie in der IAM-Referenzdokumentation zur C# API.

Richten Sie zur Authentifizierung bei IAM die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Vorbereitung.


using System;
using Google.Apis.Auth.OAuth2;
using Google.Apis.Iam.v1;
using Google.Apis.Iam.v1.Data;

public partial class ServiceAccountKeys
{
    public static void DeleteKey(string fullKeyName)
    {
        var credential = GoogleCredential.GetApplicationDefault()
            .CreateScoped(IamService.Scope.CloudPlatform);
        var service = new IamService(new IamService.Initializer
        {
            HttpClientInitializer = credential
        });

        service.Projects.ServiceAccounts.Keys.Delete(fullKeyName).Execute();
        Console.WriteLine("Deleted key: " + fullKeyName);
    }
}

Go

Informationen zum Installieren und Verwenden der Clientbibliothek für IAM finden Sie unter IAM-Clientbibliotheken. Weitere Informationen finden Sie in der IAM-Referenzdokumentation zur Go API.

Richten Sie zur Authentifizierung bei IAM die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Vorbereitung.

import (
	"context"
	"fmt"
	"io"

	iam "google.golang.org/api/iam/v1"
)

// deleteKey deletes a service account key.
func deleteKey(w io.Writer, fullKeyName string) error {
	ctx := context.Background()
	service, err := iam.NewService(ctx)
	if err != nil {
		return fmt.Errorf("iam.NewService: %w", err)
	}

	_, err = service.Projects.ServiceAccounts.Keys.Delete(fullKeyName).Do()
	if err != nil {
		return fmt.Errorf("Projects.ServiceAccounts.Keys.Delete: %w", err)
	}
	fmt.Fprintf(w, "Deleted key: %v", fullKeyName)
	return nil
}

Java

Informationen zum Installieren und Verwenden der Clientbibliothek für IAM finden Sie unter IAM-Clientbibliotheken. Weitere Informationen finden Sie in der IAM-Referenzdokumentation zur Java API.

Richten Sie zur Authentifizierung bei IAM die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Vorbereitung.


import com.google.cloud.iam.admin.v1.IAMClient;
import com.google.iam.admin.v1.DeleteServiceAccountKeyRequest;
import com.google.iam.admin.v1.KeyName;
import java.io.IOException;

public class DeleteServiceAccountKey {

  public static void main(String[] args) throws IOException {
    // TODO(developer): Replace the variables before running the sample.
    String projectId = "your-project-id";
    String serviceAccountName = "my-service-account-name";
    String serviceAccountKeyId = "service-account-key-id";

    deleteKey(projectId, serviceAccountName, serviceAccountKeyId);
  }

  // Deletes a service account key.
  public static void deleteKey(String projectId, String accountName,
                               String serviceAccountKeyId) throws IOException {
    //Initialize client that will be used to send requests.
    //This client only needs to be created once, and can be reused for multiple requests.
    try (IAMClient iamClient = IAMClient.create()) {

      //Construct the service account email.
      //You can modify the ".iam.gserviceaccount.com" to match the service account name in which
      //you want to delete the key.
      //See, https://cloud.google.com/iam/docs/creating-managing-service-account-keys#deleting

      String accountEmail = String.format("%s@%s.iam.gserviceaccount.com", accountName, projectId);

      String name = KeyName.of(projectId, accountEmail, serviceAccountKeyId).toString();

      DeleteServiceAccountKeyRequest request = DeleteServiceAccountKeyRequest.newBuilder()
              .setName(name)
              .build();

      // Then you can delete the key
      iamClient.deleteServiceAccountKey(request);

      System.out.println("Deleted key: " + serviceAccountKeyId);
    }
  }
}

Python

Informationen zum Installieren und Verwenden der Clientbibliothek für IAM finden Sie unter IAM-Clientbibliotheken. Weitere Informationen finden Sie in der IAM-Referenzdokumentation zur Python API.

Richten Sie zur Authentifizierung bei IAM die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Vorbereitung.

from google.cloud import iam_admin_v1
from google.cloud.iam_admin_v1 import types


def delete_key(project_id: str, account: str, key_id: str) -> None:
    """
    Deletes a key for a service account.

    project_id: ID or number of the Google Cloud project you want to use.
    account: ID or email which is unique identifier of the service account.
    key_id: unique ID of the key.
    """

    iam_admin_client = iam_admin_v1.IAMClient()
    request = types.DeleteServiceAccountKeyRequest()
    request.name = f"projects/{project_id}/serviceAccounts/{account}/keys/{key_id}"

    iam_admin_client.delete_service_account_key(request=request)
    print(f"Deleted key: {key_id}")

REST

Mit der Methode projects.serviceAccounts.keys.delete können Sie Dienstkontoschlüssel löschen.

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • PROJECT_ID: Ihre Google Cloud-Projekt-ID. Projekt-IDs sind alphanumerische Strings, wie my-project.
  • SA_NAME: Den Namen des Dienstkontos, dessen Schlüssel Sie löschen möchten.
  • KEY_ID: Die ID des Schlüssels, den Sie löschen möchten. Listen Sie alle Schlüssel für das Dienstkonto auf, identifizieren Sie den zu löschenden Schlüssel und kopieren Sie seine ID am Ende von Feld name, um die ID des Schlüssels zu finden. Die ID des Schlüssels ist alles, was auf keys/ folgt.

HTTP-Methode und URL:

DELETE https://iam.googleapis.com/v1/projects/PROJECT_ID/serviceAccounts/SA_NAME@PROJECT_ID.iam.gserviceaccount.com/keys/KEY_ID

Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:

Sie sollten eine JSON-Antwort ähnlich wie diese erhalten:

{
}

Nächste Schritte

Überzeugen Sie sich selbst

Wenn Sie mit Google Cloud noch nicht vertraut sind, erstellen Sie einfach ein Konto, um die Leistungsfähigkeit unserer Produkte in der Praxis sehen und bewerten zu können. Neukunden erhalten außerdem ein Guthaben von 300 $, um Arbeitslasten auszuführen, zu testen und bereitzustellen.

Jetzt kostenlos starten