Dienstkonten erstellen

Auf dieser Seite wird erläutert, wie Sie Dienstkonten mit der Identity and Access Management (IAM) API, der Trusted Cloud -Console und dem gcloud-Befehlszeilentool erstellen.

Standardmäßig können Sie jedem Projekt bis zu 100 Dienstkonten hinzufügen, die den Zugriff auf Ihre Ressourcen steuern. Sie können gegebenenfalls eine Kontingenterhöhung anfordern. Weitere Informationen zu Kontingenten und Limits finden Sie in diesem Artikel.

Hinweise

Erforderliche Rollen

Bitten Sie Ihren Administrator, Ihnen für das Projekt die IAM-Rolle Create Service Accounts (roles/iam.serviceAccountCreator) zuzuweisen, um die Berechtigungen zu erhalten, die Sie zum Erstellen von Dienstkonten 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.

Wenn Sie neu erstellten Dienstkonten Zugriff auf Ihr Projekt gewähren möchten, benötigen Sie außerdem die Rolle „Projekt-IAM-Administrator“ (roles/resourcemanager.projectIamAdmin).

Dienstkonto erstellen

Wenn Sie ein Dienstkonto erstellen, müssen Sie eine alphanumerische ID angeben (in den Beispielen unten SERVICE_ACCOUNT_NAME). Beispiel: my-service-account. Die ID muss zwischen 6 und 30 Zeichen lang sein und alphanumerische Zeichen in Kleinschreibung sowie Bindestriche enthalten. Nachdem Sie ein Dienstkonto erstellt haben, können Sie den Namen nicht mehr ändern.

Der Name des Dienstkontos wird in der E-Mail-Adresse angezeigt, die während der Erstellung bereitgestellt wird. Sie hat folgendes Format: SERVICE_ACCOUNT_NAME@PROJECT_ID.s3ns-system.iam.gserviceaccount.com.

Jedes Dienstkonto hat außerdem eine dauerhafte und eindeutige numerische ID, die automatisch erstellt wird.

Außerdem geben Sie beim Erstellen eines Dienstkontos diese Informationen an:

  • DESCRIPTION ist eine optionale Beschreibung für das Dienstkonto.
  • DISPLAY_NAME ist ein Anzeigename für das Dienstkonto.
  • PROJECT_ID ist die ID Ihres Trusted Cloud by S3NS Projekts.

Nachdem Sie ein Dienstkonto erstellt haben, müssen Sie möglicherweise 60 Sekunden oder länger warten, bis Sie das Dienstkonto verwenden können. Dieses Verhalten tritt auf, weil Lesevorgänge Eventual Consistency haben. Es kann einige Zeit dauern, bis das neue Dienstkonto sichtbar ist. Wenn Sie versuchen, ein Dienstkonto direkt nach dem Erstellen zu lesen oder zu verwenden und eine Fehlermeldung erhalten, können Sie die Anfrage mit exponentiellem Backoff wiederholen.

Console

  1. Wechseln Sie in der Trusted Cloud Console zur Seite Dienstkonto erstellen.
  2. Ein Trusted Cloud -Projekt auswählen
  3. Geben Sie einen Dienstkontonamen ein, der in der Trusted Cloud Console angezeigt werden soll.

    Die​COMMENTConsole generiert anhand dieses Namens eine Dienstkonto-ID. Bearbeiten Sie gegebenenfalls die ID. Sie können die ID später nicht mehr ändern.

  4. Optional: Geben Sie eine Beschreibung für das Dienstkonto ein.
  5. Wenn Sie die Zugriffssteuerungen derzeit nicht festlegen möchten, klicken Sie auf Fertig, um das Erstellen des Dienstkontos abzuschließen. Klicken Sie auf Erstellen und fortfahren und fahren Sie mit dem nächsten Schritt fort, wenn Sie die Zugriffssteuerungen jetzt festlegen möchten.
  6. Optional: Wählen Sie eine oder mehrere IAM-Rollen aus, die dem Dienstkonto für das Projekt zugewiesen werden sollen.
  7. Klicken Sie auf Weiter, wenn Sie alle Rollen hinzugefügt haben.
  8. Optional: Fügen Sie im Feld Rolle „Dienstkontonutzer“ Mitglieder hinzu, die das Dienstkonto an andere Ressourcen anhängen müssen.
  9. Optional: Fügen Sie im Feld Rolle „Dienstkontoadministrator“ Mitglieder hinzu, die das Dienstkonto verwalten müssen.
  10. Klicken Sie auf Fertig, um das Erstellen des Dienstkontos abzuschließen.

gcloud

  1. In the Trusted Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Trusted 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.

  2. Führen Sie den Befehl gcloud iam service-accounts create aus, um das Dienstkonto zu erstellen:

    gcloud iam service-accounts create SERVICE_ACCOUNT_NAME \
      --description="DESCRIPTION" \
      --display-name="DISPLAY_NAME"

    Ersetzen Sie die folgenden Werte:

    • SERVICE_ACCOUNT_NAME: der Name des Dienstkontos

    • DESCRIPTION: Eine optionale Beschreibung des Dienstkontos.

    • DISPLAY_NAME: ein Dienstkontoname, der in der Trusted Cloud Console angezeigt werden soll

  3. Optional: Führen Sie den Befehl gcloud projects add-iam-policy-binding aus, um dem Dienstkonto eine IAM-Rolle für Ihr Projekt zuzuweisen:

    gcloud projects add-iam-policy-binding PROJECT_ID \
      --member="serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.s3ns-system.iam.gserviceaccount.com" \
      --role="ROLE_NAME"

    Ersetzen Sie die folgenden Werte:

    • PROJECT_ID: die Projekt-ID

    • SERVICE_ACCOUNT_NAME: der Name des Dienstkontos

    • ROLE_NAME: ein Rollenname, z. B. roles/compute.osLogin

  4. Optional: Damit Nutzer ein Dienstkonto an andere Ressourcen anhängen können, müssen Sie den gcloud iam service-accounts add-iam-policy-binding-Befehl ausführen, um einem Nutzer die Rolle "Dienstkontonutzer" (roles/iam.serviceAccountUser) zuzuweisen:

    gcloud iam service-accounts add-iam-policy-binding \
      SERVICE_ACCOUNT_NAME@PROJECT_ID.s3ns-system.iam.gserviceaccount.com \
      --member="user:USER_EMAIL" \
      --role="roles/iam.serviceAccountUser"

    Ersetzen Sie die folgenden Werte:

    • PROJECT_ID: die Projekt-ID

    • SERVICE_ACCOUNT_NAME: der Name des Dienstkontos.

    • USER_EMAIL: die E-Mail-Adresse des Nutzers

  5. 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.

    Legen Sie vor dem Ausführen von Codebeispielen die Umgebungsvariable GOOGLE_CLOUD_UNIVERSE_DOMAIN auf s3nsapis.fr fest.

    namespace iam = ::google::cloud::iam_admin_v1;
    [](std::string const& project_id, std::string const& account_id,
       std::string const& display_name, std::string const& description) {
      iam::IAMClient client(iam::MakeIAMConnection());
      google::iam::admin::v1::ServiceAccount service_account;
      service_account.set_display_name(display_name);
      service_account.set_description(description);
      auto response = client.CreateServiceAccount("projects/" + project_id,
                                                  account_id, service_account);
      if (!response) throw std::move(response).status();
      std::cout << "ServiceAccount successfully created: "
                << response->DebugString() << "\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.

    Legen Sie vor dem Ausführen von Codebeispielen die Umgebungsvariable GOOGLE_CLOUD_UNIVERSE_DOMAIN auf s3nsapis.fr fest.

    
    using System;
    using Google.Apis.Auth.OAuth2;
    using Google.Apis.Iam.v1;
    using Google.Apis.Iam.v1.Data;
    
    public partial class ServiceAccounts
    {
        public static ServiceAccount CreateServiceAccount(string projectId,
            string name, string displayName)
        {
            var credential = GoogleCredential.GetApplicationDefault()
                .CreateScoped(IamService.Scope.CloudPlatform);
            var service = new IamService(new IamService.Initializer
            {
                HttpClientInitializer = credential
            });
    
            var request = new CreateServiceAccountRequest
            {
                AccountId = name,
                ServiceAccount = new ServiceAccount
                {
                    DisplayName = displayName
                }
            };
            var serviceAccount = service.Projects.ServiceAccounts.Create(
                request, "projects/" + projectId).Execute();
            Console.WriteLine("Created service account: " + serviceAccount.Email);
            return serviceAccount;
        }
    }
    

    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.

    Legen Sie vor dem Ausführen von Codebeispielen die Umgebungsvariable GOOGLE_CLOUD_UNIVERSE_DOMAIN auf s3nsapis.fr fest.

    import (
    	"context"
    	"fmt"
    	"io"
    
    	iam "google.golang.org/api/iam/v1"
    )
    
    // createServiceAccount creates a service account.
    func createServiceAccount(w io.Writer, projectID, name, displayName string) (*iam.ServiceAccount, error) {
    	ctx := context.Background()
    	service, err := iam.NewService(ctx)
    	if err != nil {
    		return nil, fmt.Errorf("iam.NewService: %w", err)
    	}
    
    	request := &iam.CreateServiceAccountRequest{
    		AccountId: name,
    		ServiceAccount: &iam.ServiceAccount{
    			DisplayName: displayName,
    		},
    	}
    	account, err := service.Projects.ServiceAccounts.Create("projects/"+projectID, request).Do()
    	if err != nil {
    		return nil, fmt.Errorf("Projects.ServiceAccounts.Create: %w", err)
    	}
    	fmt.Fprintf(w, "Created service account: %v", account)
    	return account, 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.

    Legen Sie vor dem Ausführen von Codebeispielen die Umgebungsvariable GOOGLE_CLOUD_UNIVERSE_DOMAIN auf s3nsapis.fr fest.

    
    import com.google.cloud.iam.admin.v1.IAMClient;
    import com.google.iam.admin.v1.CreateServiceAccountRequest;
    import com.google.iam.admin.v1.ProjectName;
    import com.google.iam.admin.v1.ServiceAccount;
    import java.io.IOException;
    
    public class CreateServiceAccount {
      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";
    
        createServiceAccount(projectId, serviceAccountName);
      }
    
      // Creates a service account.
      public static ServiceAccount createServiceAccount(String projectId, String serviceAccountName)
              throws IOException {
        ServiceAccount serviceAccount = ServiceAccount
                .newBuilder()
                .setDisplayName("your-display-name")
                .build();
        CreateServiceAccountRequest request = CreateServiceAccountRequest.newBuilder()
                .setName(ProjectName.of(projectId).toString())
                .setAccountId(serviceAccountName)
                .setServiceAccount(serviceAccount)
                .build();
        // 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()) {
          serviceAccount = iamClient.createServiceAccount(request);
          System.out.println("Created service account: " + serviceAccount.getEmail());
        }
        return serviceAccount;
      }
    }

    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.

    Legen Sie vor dem Ausführen von Codebeispielen die Umgebungsvariable GOOGLE_CLOUD_UNIVERSE_DOMAIN auf s3nsapis.fr fest.

    from typing import Optional
    
    from google.cloud import iam_admin_v1
    from google.cloud.iam_admin_v1 import types
    
    
    def create_service_account(
        project_id: str, account_id: str, display_name: Optional[str] = None
    ) -> types.ServiceAccount:
        """Creates a service account.
    
        project_id: ID or number of the Google Cloud project you want to use.
        account_id: ID which will be unique identifier of the service account
        display_name (optional): human-readable name, which will be assigned
            to the service account
    
        return: ServiceAccount
        """
    
        iam_admin_client = iam_admin_v1.IAMClient()
        request = types.CreateServiceAccountRequest()
    
        request.account_id = account_id
        request.name = f"projects/{project_id}"
    
        service_account = types.ServiceAccount()
        service_account.display_name = display_name
        request.service_account = service_account
    
        account = iam_admin_client.create_service_account(request=request)
    
        print(f"Created a service account: {account.email}")
        return account

    REST

    Mit der Methode serviceAccounts.create wird ein Dienstkonto erstellt.

    Ersetzen Sie diese Werte in den folgenden Anfragedaten:

    • PROJECT_ID: Ihre Trusted Cloud -Projekt-ID. Projekt-IDs sind alphanumerische Strings, wie my-project.
    • SA_NAME: Die alphanumerische ID Ihres Dienstkontos. Dieser Name muss zwischen 6 und 30 Zeichen lang sein und kann alphanumerische Zeichen in Kleinbuchstaben sowie Bindestriche enthalten.
    • SA_DESCRIPTION: Optional. Eine Beschreibung des Dienstkontos.
    • SA_DISPLAY_NAME: Ein für Nutzer lesbarer Name des Dienstkontos.

    HTTP-Methode und URL:

    POST https://iam.googleapis.com/v1/projects/PROJECT_ID/serviceAccounts

    JSON-Text anfordern:

    {
      "accountId": "SA_NAME",
      "serviceAccount": {
        "description": "SA_DESCRIPTION",
        "displayName": "SA_DISPLAY_NAME"
      }
    }
    

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

    Sie sollten in etwa folgende JSON-Antwort erhalten:

    {
      "name": "projects/my-project/serviceAccounts/my-service-account@my-project.s3ns-system.iam.gserviceaccount.com",
      "projectId": "my-project",
      "uniqueId": "123456789012345678901",
      "email": "my-service-account@my-project.s3ns-system.iam.gserviceaccount.com",
      "displayName": "My service account",
      "etag": "BwUp3rVlzes=",
      "description": "A service account for running jobs in my project",
      "oauth2ClientId": "987654321098765432109"
    }
    

Nachdem Sie ein Dienstkonto erstellt haben, weisen Sie dem Dienstkonto mindestens eine Rolle zu, damit es Aufgaben für Sie erfüllen kann.

Wenn das Dienstkonto auf Ressourcen in anderen Projekten zugreifen muss, müssen Sie außerdem in der Regel die APIs für diese Ressourcen in dem Projekt aktivieren, in dem Sie das Dienstkonto erstellt haben.

Nächste Schritte