Creazione di account di servizio

Questa pagina spiega come creare service account utilizzando l'API Identity and Access Management (IAM), la console Trusted Cloud e lo strumento a riga di comando gcloud.

Per impostazione predefinita, ogni progetto può avere fino a 100 service account che controllano l'accesso alle tue risorse. Se necessario, puoi richiedere un aumento della quota. Scopri di più su quote e limiti.

Prima di iniziare

Ruoli obbligatori

Per ottenere le autorizzazioni necessarie per creare service account, chiedi all'amministratore di concederti il ruolo IAM Creazione service account (roles/iam.serviceAccountCreator) nel progetto. Per saperne di più sulla concessione dei ruoli, consulta Gestisci l'accesso a progetti, cartelle e organizzazioni.

Potresti anche riuscire a ottenere le autorizzazioni richieste tramite i ruoli personalizzati o altri ruoli predefiniti.

Se vuoi concedere agli account di servizio appena creati l'accesso al tuo progetto, devi disporre anche del ruolo Amministratore IAM progetto (roles/resourcemanager.projectIamAdmin).

Crea un account di servizio

Quando crei un account di servizio, devi fornire un ID alfanumerico (SERVICE_ACCOUNT_NAME negli esempi riportati di seguito), ad esempio my-service-account. L'ID deve essere compreso tra 6 e 30 caratteri e può contenere caratteri alfanumerici minuscoli e trattini. Una volta creato un account di servizio, non puoi modificarne il nome.

Il nome del account di servizio viene visualizzato nell'indirizzo email di cui viene eseguito il provisioning durante la creazione, nel formato SERVICE_ACCOUNT_NAME@PROJECT_ID.s3ns-system.iam.gserviceaccount.com.

Ogni account di servizio ha anche un ID numerico univoco permanente, generato automaticamente.

Quando crei un account di servizio, fornisci anche le seguenti informazioni:

  • DESCRIPTION è una descrizione facoltativa per il account di serviziot.
  • DISPLAY_NAME è un nome intuitivo per il service account.
  • PROJECT_ID è l'ID del tuo progetto Trusted Cloud by S3NS .

Dopo aver creato un account di servizio, potresti dover attendere 60 secondi o più prima di utilizzarlo. Questo comportamento si verifica perché le operazioni di lettura sono coerenti nel tempo; potrebbe essere necessario del tempo prima che il nuovaccount di serviziont diventi visibile. Se provi a leggere o utilizzare un account di servizio subito dopo averlo creato e ricevi un errore, puoi riprovare a inviare la richiesta con il backoff esponenziale.

Console

  1. Nella console Trusted Cloud vai a Crea service account.
  2. Seleziona un Trusted Cloud progetto.
  3. Inserisci il nome di un service account da visualizzare nella Trusted Cloud console.

    La Trusted Cloud console genera un ID service account in base a questo nome. Modifica l'ID, se necessario. Non potrai modificare l'ID in un secondo momento.

  4. (Facoltativo) Inserisci una descrizione del service account.
  5. Se non vuoi impostare i controlli dell'accesso, fai clic su Fine per completare la creazione del service account. Per impostare i controlli dell'accesso ora, fai clic su Crea e continua e vai al passaggio successivo.
  6. (Facoltativo) Scegli uno o più ruoli IAM da concedere al service account nel progetto.
  7. Quando hai finito di aggiungere i ruoli, fai clic su Continua.
  8. (Facoltativo) Nel campo Ruolo degli utenti del service account, aggiungi i membri che devono collegare il service account ad altre risorse.
  9. (Facoltativo) Nel campo Ruolo degli amministratori del service account, aggiungi i membri che devono gestire il service account.
  10. Fai clic su Fine per completare la creazione del service account.

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. Per creare il account di servizio, esegui il comando gcloud iam service-accounts create:

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

    Sostituisci i seguenti valori:

    • SERVICE_ACCOUNT_NAME: il nome del account di servizio

    • DESCRIPTION: una descrizione facoltativa del account di servizio

    • DISPLAY_NAME: un nome del account di servizio da visualizzare nella Trusted Cloud console

  3. (Facoltativo) Per concedere al tuo account di servizio un ruolo IAM nel tuo progetto, esegui il comando gcloud projects add-iam-policy-binding:

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

    Sostituisci i seguenti valori:

    • PROJECT_ID: l'ID progetto

    • SERVICE_ACCOUNT_NAME: il nome del account di servizio

    • ROLE_NAME: un nome di ruolo, ad esempio roles/compute.osLogin

  4. (Facoltativo) Per consentire agli utenti di collegare il account di servizio ad altre risorse, esegui il comando gcloud iam service-accounts add-iam-policy-binding per concedere a un utente il ruolo Service Account User (roles/iam.serviceAccountUser) nel account di servizio:

    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"

    Sostituisci i seguenti valori:

    • PROJECT_ID: l'ID progetto

    • SERVICE_ACCOUNT_NAME: il nome del account di serviziot

    • USER_EMAIL: l'indirizzo email dell'utente

  5. C++

    Per scoprire come installare e utilizzare la libreria client per IAM, consulta Librerie client IAM. Per saperne di più, consulta la documentazione di riferimento dell'API IAM C++.

    Per autenticarti in IAM, configura le Credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Prima di iniziare.

    Prima di eseguire gli esempi di codice, imposta la variabile di ambiente GOOGLE_CLOUD_UNIVERSE_DOMAIN su s3nsapis.fr.

    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#

    Per scoprire come installare e utilizzare la libreria client per IAM, consulta Librerie client IAM. Per saperne di più, consulta la documentazione di riferimento dell'API IAM C#.

    Per autenticarti in IAM, configura le Credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Prima di iniziare.

    Prima di eseguire gli esempi di codice, imposta la variabile di ambiente GOOGLE_CLOUD_UNIVERSE_DOMAIN su s3nsapis.fr.

    
    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

    Per scoprire come installare e utilizzare la libreria client per IAM, consulta Librerie client IAM. Per saperne di più, consulta la documentazione di riferimento dell'API IAM Go.

    Per autenticarti in IAM, configura le Credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Prima di iniziare.

    Prima di eseguire gli esempi di codice, imposta la variabile di ambiente GOOGLE_CLOUD_UNIVERSE_DOMAIN su s3nsapis.fr.

    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

    Per scoprire come installare e utilizzare la libreria client per IAM, consulta Librerie client IAM. Per saperne di più, consulta la documentazione di riferimento dell'API IAM Java.

    Per autenticarti in IAM, configura le Credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Prima di iniziare.

    Prima di eseguire gli esempi di codice, imposta la variabile di ambiente GOOGLE_CLOUD_UNIVERSE_DOMAIN su s3nsapis.fr.

    
    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

    Per scoprire come installare e utilizzare la libreria client per IAM, consulta Librerie client IAM. Per saperne di più, consulta la documentazione di riferimento dell'API IAM Python.

    Per autenticarti in IAM, configura le Credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Prima di iniziare.

    Prima di eseguire gli esempi di codice, imposta la variabile di ambiente GOOGLE_CLOUD_UNIVERSE_DOMAIN su s3nsapis.fr.

    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

    Il metodo serviceAccounts.create crea un account di servizio.

    Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:

    • PROJECT_ID: il tuo ID progetto Trusted Cloud . Gli ID progetto sono stringhe alfanumeriche, come my-project.
    • SA_NAME: l'ID alfanumerico del account di servizio. Il nome deve essere compreso tra 6 e 30 caratteri e può contenere caratteri alfanumerici minuscoli e trattini.
    • SA_DESCRIPTION: (Facoltativo) Una descrizione per ilaccount di serviziot.
    • SA_DISPLAY_NAME: Un nome leggibile per ilaccount di serviziot.

    Metodo HTTP e URL:

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

    Corpo JSON della richiesta:

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

    Per inviare la richiesta, espandi una di queste opzioni:

    Dovresti ricevere una risposta JSON simile alla seguente:

    {
      "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"
    }
    

Dopo aver creato un account di servizio, assegnagli uno o più ruoli in modo che possa agire per tuo conto.

Inoltre, se il account di servizio deve accedere alle risorse in altri progetti, in genere devi abilitare le API per queste risorse nel progetto in cui hai creato il account di servizio.

Passaggi successivi