Elenca e modifica i service account

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

Prima di iniziare

  • Abilita l'API IAM.

    Ruoli richiesti per abilitare le API

    Per abilitare le API, devi disporre dell'autorizzazione serviceusage.services.enable. Se hai creato il progetto, probabilmente disponi già di questa autorizzazione tramite il ruolo Proprietario (roles/owner). In caso contrario, puoi ottenere questa autorizzazione tramite il ruolo Amministratore utilizzo dei servizi (roles/serviceusage.serviceUsageAdmin). Scopri come concedere i ruoli.

    Abilitare l'API

  • Configurare l'autenticazione.

    Seleziona la scheda relativa a come prevedi di utilizzare gli esempi in questa pagina:

    Console

    Quando utilizzi la console Cloud de Confiance per accedere ai servizi Cloud de Confiance by S3NS e alle API, non devi configurare l'autenticazione.

    gcloud

    Installa Google Cloud CLI, quindi accedi a gcloud CLI con la tua identità federata. Dopo aver eseguito l'accesso, inizializza Google Cloud CLI eseguendo il comando seguente:

    gcloud init

    C#

    Per utilizzare gli esempi di .NET in questa pagina in un ambiente di sviluppo locale, installa e inizializza gcloud CLI, quindi configura Credenziali predefinite dell'applicazione con le tue credenziali utente.

    1. Installa Google Cloud CLI.

    2. Configura gcloud CLI per utilizzare la tua identità federata.

      Per ulteriori informazioni, vedi Accedi a gcloud CLI con la tua identità federata.

    3. Crea le credenziali di autenticazione locali per il tuo account utente:

      gcloud auth application-default login

      Se viene restituito un errore di autenticazione e utilizzi un provider di identità (IdP) esterno, verifica di aver acceduto a gcloud CLI con la tua identità federata.

    Per saperne di più, consulta Configura ADC per un ambiente di sviluppo locale nella documentazione sull'autenticazione di Cloud de Confiance .

    C++

    Per utilizzare gli esempi di C++ in questa pagina in un ambiente di sviluppo locale, installa e inizializza gcloud CLI, quindi configura Credenziali predefinite dell'applicazione con le tue credenziali utente.

    1. Installa Google Cloud CLI.

    2. Configura gcloud CLI per utilizzare la tua identità federata.

      Per ulteriori informazioni, vedi Accedi a gcloud CLI con la tua identità federata.

    3. Crea le credenziali di autenticazione locali per il tuo account utente:

      gcloud auth application-default login

      Se viene restituito un errore di autenticazione e utilizzi un provider di identità (IdP) esterno, verifica di aver acceduto a gcloud CLI con la tua identità federata.

    Per saperne di più, consulta Configura ADC per un ambiente di sviluppo locale nella documentazione sull'autenticazione di Cloud de Confiance .

    Vai

    Per utilizzare gli esempi di Go in questa pagina in un ambiente di sviluppo locale, installa e inizializza gcloud CLI, quindi configura Credenziali predefinite dell'applicazione con le tue credenziali utente.

    1. Installa Google Cloud CLI.

    2. Configura gcloud CLI per utilizzare la tua identità federata.

      Per ulteriori informazioni, vedi Accedi a gcloud CLI con la tua identità federata.

    3. Crea le credenziali di autenticazione locali per il tuo account utente:

      gcloud auth application-default login

      Se viene restituito un errore di autenticazione e utilizzi un provider di identità (IdP) esterno, verifica di aver acceduto a gcloud CLI con la tua identità federata.

    Per saperne di più, consulta Configura ADC per un ambiente di sviluppo locale nella documentazione sull'autenticazione di Cloud de Confiance .

    Java

    Per utilizzare gli esempi Java in questa pagina in un ambiente di sviluppo locale, installa e inizializza gcloud CLI, quindi configura Credenziali predefinite dell'applicazione con le tue credenziali utente.

    1. Installa Google Cloud CLI.

    2. Configura gcloud CLI per utilizzare la tua identità federata.

      Per ulteriori informazioni, vedi Accedi a gcloud CLI con la tua identità federata.

    3. Crea le credenziali di autenticazione locali per il tuo account utente:

      gcloud auth application-default login

      Se viene restituito un errore di autenticazione e utilizzi un provider di identità (IdP) esterno, verifica di aver acceduto a gcloud CLI con la tua identità federata.

    Per saperne di più, consulta Configura ADC per un ambiente di sviluppo locale nella documentazione sull'autenticazione di Cloud de Confiance .

    Python

    Per utilizzare gli esempi di Python in questa pagina in un ambiente di sviluppo locale, installa e inizializza gcloud CLI, quindi configura Credenziali predefinite dell'applicazione con le tue credenziali utente.

    1. Installa Google Cloud CLI.

    2. Configura gcloud CLI per utilizzare la tua identità federata.

      Per ulteriori informazioni, vedi Accedi a gcloud CLI con la tua identità federata.

    3. Crea le credenziali di autenticazione locali per il tuo account utente:

      gcloud auth application-default login

      Se viene restituito un errore di autenticazione e utilizzi un provider di identità (IdP) esterno, verifica di aver acceduto a gcloud CLI con la tua identità federata.

    Per saperne di più, consulta Configura ADC per un ambiente di sviluppo locale nella documentazione sull'autenticazione di Cloud de Confiance .

    REST

    Per utilizzare gli esempi di API REST in questa pagina in un ambiente di sviluppo locale, utilizzi le credenziali che fornisci a gcloud CLI.

      Installa Google Cloud CLI, quindi accedi a gcloud CLI con la tua identità federata.

    Per saperne di più, consulta Autenticati per usare REST nella documentazione sull'autenticazione di Cloud de Confiance .

  • Informazioni sui service account IAM

Ruoli obbligatori

Per ottenere le autorizzazioni necessarie per gestire i service account, chiedi all'amministratore di concederti i seguenti ruoli IAM sul 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.

I ruoli di base IAM contengono anche le autorizzazioni per gestire i service account. Non devi concedere ruoli di base in un ambiente di produzione, ma puoi concederli in un ambiente di sviluppo o di test.

Elenco dei service account

Puoi elencare i service account gestiti dall'utente in un progetto per eseguire l'audit di service account e chiavi o come parte di uno strumento personalizzato per gestire i service account.

Non puoi elencare gli agenti di servizio che potrebbero essere visualizzati nei log di controllo e nella policy di autorizzazione del tuo progetto. Gli agenti di servizio non si trovano nel tuo progetto e non puoi accedervi direttamente.

Console

  1. Nella Cloud de Confiance console, vai alla pagina Service account.

    Vai ad Account di servizio

  2. Seleziona un progetto.

    La pagina Service account elenca tutti i service account gestiti dall'utente nel progetto selezionato.

gcloud

Il comando gcloud iam service-accounts list elenca tutti i account di servizio gestiti dall'utente nel progetto specificato.

Prima di utilizzare i dati dei comandi riportati di seguito, effettua le seguenti sostituzioni:

  • PROJECT_ID: il tuo ID progetto Cloud de Confiance . Gli ID progetto sono stringhe alfanumeriche, come my-project.

Esegui questo comando:

Linux, macOS o Cloud Shell

gcloud iam service-accounts list --project=PROJECT_ID

Windows (PowerShell)

gcloud iam service-accounts list --project=PROJECT_ID

Windows (cmd.exe)

gcloud iam service-accounts list --project=PROJECT_ID

Dovresti ricevere una risposta simile alla seguente:

DISPLAY NAME: SA_DISPLAY_NAME_1
EMAIL: SA_NAME_1@PROJECT_ID.s3ns.iam.gserviceaccount.com
DISABLED: False

DISPLAY NAME: SA_DISPLAY_NAME_2
EMAIL: SA_NAME_2@PROJECT_ID.s3ns.iam.gserviceaccount.com
DISABLED: False

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 eseguire l'autenticazione in IAM, configura le Credenziali predefinite dell'applicazione. Per saperne di più, 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) {
  iam::IAMClient client(iam::MakeIAMConnection());
  int count = 0;
  for (auto& sa : client.ListServiceAccounts("projects/" + project_id)) {
    if (!sa) throw std::move(sa).status();
    std::cout << "ServiceAccount successfully retrieved: " << sa->name()
              << "\n";
    ++count;
  }
  if (count == 0) {
    std::cout << "No service accounts found in project: " << project_id
              << "\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 eseguire l'autenticazione in IAM, configura le Credenziali predefinite dell'applicazione. Per saperne di più, 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 System.Collections.Generic;
using Google.Apis.Auth.OAuth2;
using Google.Apis.Iam.v1;
using Google.Apis.Iam.v1.Data;

public partial class ServiceAccounts
{
    public static IList<ServiceAccount> ListServiceAccounts(string projectId)
    {
        var credential = GoogleCredential.GetApplicationDefault()
            .CreateScoped(IamService.Scope.CloudPlatform);
        var service = new IamService(new IamService.Initializer
        {
            HttpClientInitializer = credential
        });

        var response = service.Projects.ServiceAccounts.List(
            "projects/" + projectId).Execute();
        foreach (ServiceAccount account in response.Accounts)
        {
            Console.WriteLine("Name: " + account.Name);
            Console.WriteLine("Display Name: " + account.DisplayName);
            Console.WriteLine("Email: " + account.Email);
            Console.WriteLine();
        }
        return response.Accounts;
    }
}

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 eseguire l'autenticazione in IAM, configura le Credenziali predefinite dell'applicazione. Per saperne di più, 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"
)

// listServiceAccounts lists a project's service accounts.
func listServiceAccounts(w io.Writer, projectID string) ([]*iam.ServiceAccount, error) {
	ctx := context.Background()
	service, err := iam.NewService(ctx)
	if err != nil {
		return nil, fmt.Errorf("iam.NewService: %w", err)
	}

	response, err := service.Projects.ServiceAccounts.List("projects/" + projectID).Do()
	if err != nil {
		return nil, fmt.Errorf("Projects.ServiceAccounts.List: %w", err)
	}
	for _, account := range response.Accounts {
		fmt.Fprintf(w, "Listing service account: %v\n", account.Name)
	}
	return response.Accounts, 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 eseguire l'autenticazione in IAM, configura le Credenziali predefinite dell'applicazione. Per saperne di più, 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.ServiceAccount;
import java.io.IOException;

public class ListServiceAccounts {

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

    listServiceAccounts(projectId);
  }

  // Lists all service accounts for the current project.
  public static IAMClient.ListServiceAccountsPagedResponse listServiceAccounts(String projectId)
          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()) {
      IAMClient.ListServiceAccountsPagedResponse response =
              iamClient.listServiceAccounts(String.format("projects/%s", projectId));

      for (ServiceAccount account : response.iterateAll()) {
        System.out.println("Name: " + account.getName());
        System.out.println("Display name: " + account.getDisplayName());
        System.out.println("Email: " + account.getEmail() + "\n");
      }

      return response;
    }
  }
}

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 eseguire l'autenticazione in IAM, configura le Credenziali predefinite dell'applicazione. Per saperne di più, 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 List

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


def list_service_accounts(project_id: str) -> List[iam_admin_v1.ServiceAccount]:
    """Get list of project service accounts.

    project_id: ID or number of the Google Cloud project you want to use.

    returns a list of iam_admin_v1.ServiceAccount
    """

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

    accounts = iam_admin_client.list_service_accounts(request=request)
    return accounts.accounts

REST

Il metodo serviceAccounts.list elenca tutti i account di servizio gestiti dall'utente nel progetto specificato.

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

  • PROJECT_ID: il tuo ID progetto Cloud de Confiance . Gli ID progetto sono stringhe alfanumeriche, come my-project.

Metodo HTTP e URL:

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

Per inviare la richiesta, espandi una di queste opzioni:

Dovresti ricevere una risposta JSON simile alla seguente:

{
  "accounts": [
    {
      "name": "projects/my-project/serviceAccounts/sa-1@my-project.s3ns.iam.gserviceaccount.com",
      "projectId": "my-project",
      "uniqueId": "123456789012345678901",
      "email": "sa-1@my-project.s3ns.iam.gserviceaccount.com",
      "description": "My first service account",
      "displayName": "Service account 1",
      "etag": "BwUpTsLVUkQ=",
      "oauth2ClientId": "987654321098765432109"
    },
    {
      "name": "projects/my-project/serviceAccounts/sa-2@my-project.s3ns.iam.gserviceaccount.com",
      "projectId": "my-project",
      "uniqueId": "234567890123456789012",
      "email": "sa-2@my-project.s3ns.iam.gserviceaccount.com",
      "description": "My second service account",
      "displayName": "Service account 2",
      "etag": "UkQpTwBVUsL=",
      "oauth2ClientId": "876543210987654321098"
    }
  ]
}

Modificare un account di servizio

Il nome visualizzato (nome descrittivo) e la descrizione di un account di servizio sono di uso comune per acquisire informazioni aggiuntive sulaccount di serviziot, ad esempio lo scopo deaccount di serviziont o una persona di contatto per l'account.

Console

  1. Nella Cloud de Confiance console, vai alla pagina Service account.

    Vai ad Account di servizio

  2. Seleziona un progetto.

  3. Fai clic sull'indirizzo email del account di servizio che vuoi rinominare.

  4. Inserisci il nuovo nome nella casella Nome, quindi fai clic su Salva.

gcloud

Il comando gcloud iam service-accounts update aggiorna un account di servizio.

Prima di utilizzare i dati dei comandi riportati di seguito, effettua le seguenti sostituzioni:

  • SA_NAME: l'ID alfanumerico del tuo account di servizio. Il nome deve essere compreso tra 6 e 30 caratteri e può contenere caratteri alfanumerici minuscoli e trattini.
  • PROJECT_ID: il tuo ID progetto Cloud de Confiance . Gli ID progetto sono stringhe alfanumeriche, come my-project.
  • Sostituisci almeno uno dei seguenti elementi:
    • UPDATED_DISPLAY_NAME: un nuovo nome visualizzato per il tuo service account.
    • UPDATED_DESCRIPTION: una nuova descrizione per il service account.

Esegui questo comando:

Linux, macOS o Cloud Shell

gcloud iam service-accounts update \
    SA_NAME@PROJECT_ID.s3ns.iam.gserviceaccount.com \
    --project=PROJECT_ID
    --description="UPDATED_SA_DESCRIPTION" \
    --display-name="UPDATED_DISPLAY_NAME"

Windows (PowerShell)

gcloud iam service-accounts update `
    SA_NAME@PROJECT_ID.s3ns.iam.gserviceaccount.com `
    --project=PROJECT_ID
    --description="UPDATED_SA_DESCRIPTION" `
    --display-name="UPDATED_DISPLAY_NAME"

Windows (cmd.exe)

gcloud iam service-accounts update ^
    SA_NAME@PROJECT_ID.s3ns.iam.gserviceaccount.com ^
    --project=PROJECT_ID
    --description="UPDATED_SA_DESCRIPTION" ^
    --display-name="UPDATED_DISPLAY_NAME"

Dovresti ricevere una risposta simile alla seguente:

Updated serviceAccount [SA_NAME@PROJECT_ID.s3ns.iam.gserviceaccount.com].
description: UPDATED_SA_DESCRIPTION
displayName: UPDATED_DISPLAY_NAME
name: projects/PROJECT_ID/serviceAccounts/SA_NAME@PROJECT_ID.s3ns.iam.gserviceaccount.com

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 eseguire l'autenticazione in IAM, configura le Credenziali predefinite dell'applicazione. Per saperne di più, 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& name, std::string const& display_name) {
  iam::IAMClient client(iam::MakeIAMConnection());
  google::iam::admin::v1::PatchServiceAccountRequest request;
  google::iam::admin::v1::ServiceAccount service_account;
  service_account.set_name(name);
  service_account.set_display_name(display_name);
  google::protobuf::FieldMask update_mask;
  *update_mask.add_paths() = "display_name";
  *request.mutable_service_account() = service_account;
  *request.mutable_update_mask() = update_mask;
  auto response = client.PatchServiceAccount(request);
  if (!response) throw std::move(response).status();
  std::cout << "ServiceAccount successfully updated: "
            << 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 eseguire l'autenticazione in IAM, configura le Credenziali predefinite dell'applicazione. Per saperne di più, 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 RenameServiceAccount(string email,
        string newDisplayName)
    {
        var credential = GoogleCredential.GetApplicationDefault()
            .CreateScoped(IamService.Scope.CloudPlatform);
        var service = new IamService(new IamService.Initializer
        {
            HttpClientInitializer = credential
        });

        // First, get a ServiceAccount using List() or Get().
        string resource = "projects/-/serviceAccounts/" + email;
        var serviceAccount = service.Projects.ServiceAccounts.Get(resource)
            .Execute();
        // Then you can update the display name.
        serviceAccount.DisplayName = newDisplayName;
        serviceAccount = service.Projects.ServiceAccounts.Update(
            serviceAccount, resource).Execute();
        Console.WriteLine($"Updated display name for {serviceAccount.Email} " +
            "to: " + serviceAccount.DisplayName);
        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 eseguire l'autenticazione in IAM, configura le Credenziali predefinite dell'applicazione. Per saperne di più, 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"
)

// renameServiceAccount renames a service account.
func renameServiceAccount(w io.Writer, email, newDisplayName string) (*iam.ServiceAccount, error) {
	ctx := context.Background()
	service, err := iam.NewService(ctx)
	if err != nil {
		return nil, fmt.Errorf("iam.NewService: %w", err)
	}

	// First, get a ServiceAccount using List() or Get().
	resource := "projects/-/serviceAccounts/" + email
	serviceAccount, err := service.Projects.ServiceAccounts.Get(resource).Do()
	if err != nil {
		return nil, fmt.Errorf("Projects.ServiceAccounts.Get: %w", err)
	}
	// Then you can update the display name.
	serviceAccount.DisplayName = newDisplayName
	serviceAccount, err = service.Projects.ServiceAccounts.Update(resource, serviceAccount).Do()
	if err != nil {
		return nil, fmt.Errorf("Projects.ServiceAccounts.Update: %w", err)
	}

	fmt.Fprintf(w, "Updated service account: %v", serviceAccount.Email)
	return serviceAccount, 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 eseguire l'autenticazione in IAM, configura le Credenziali predefinite dell'applicazione. Per saperne di più, 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.GetServiceAccountRequest;
import com.google.iam.admin.v1.PatchServiceAccountRequest;
import com.google.iam.admin.v1.ServiceAccount;
import com.google.iam.admin.v1.ServiceAccountName;
import com.google.protobuf.FieldMask;
import java.io.IOException;

public class RenameServiceAccount {
  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 displayName = "your-new-display-name";

    renameServiceAccount(projectId, serviceAccountName, displayName);
  }

  // Changes a service account's display name.
  public static ServiceAccount renameServiceAccount(String projectId, String serviceAccountName,
                                                    String displayName) throws IOException {
    // 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?hl=en#deleting
    String serviceAccountEmail = serviceAccountName + "@" + projectId + ".iam.gserviceaccount.com";

    // 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()) {
      // First, get a service account using getServiceAccount or listServiceAccounts
      GetServiceAccountRequest serviceAccountRequest = GetServiceAccountRequest.newBuilder()
              .setName(ServiceAccountName.of(projectId, serviceAccountEmail).toString())
              .build();
      ServiceAccount serviceAccount = iamClient.getServiceAccount(serviceAccountRequest);

      // You can patch only the `display_name` and `description` fields. You must use
      //  the `update_mask` field to specify which of these fields you want to patch.
      serviceAccount = serviceAccount.toBuilder().setDisplayName(displayName).build();
      PatchServiceAccountRequest patchServiceAccountRequest =
              PatchServiceAccountRequest.newBuilder()
                      .setServiceAccount(serviceAccount)
                      .setUpdateMask(FieldMask.newBuilder().addPaths("display_name").build())
                      .build();
      serviceAccount = iamClient.patchServiceAccount(patchServiceAccountRequest);

      System.out.println(
              "Updated display name for "
                      + serviceAccount.getName()
                      + " to: "
                      + serviceAccount.getDisplayName());
      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 eseguire l'autenticazione in IAM, configura le Credenziali predefinite dell'applicazione. Per saperne di più, consulta Prima di iniziare.

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

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


def rename_service_account(
    project_id: str, account: str, new_name: str
) -> types.ServiceAccount:
    """Renames service account display name.

    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.
    new_name: New display name of the service account.
    """

    iam_admin_client = iam_admin_v1.IAMClient()

    get_request = types.GetServiceAccountRequest()
    get_request.name = f"projects/{project_id}/serviceAccounts/{account}"
    service_account = iam_admin_client.get_service_account(request=get_request)

    service_account.display_name = new_name

    request = types.PatchServiceAccountRequest()
    request.service_account = service_account
    # You can patch only the `display_name` and `description` fields.
    # You must use the `update_mask` field to specify which of these fields
    # you want to patch.
    # To successfully set update mask you need to transform
    # snake_case field to camelCase.
    # e.g. `display_name` will become `displayName`
    request.update_mask = "displayName"

    updated_account = iam_admin_client.patch_service_account(request=request)
    return updated_account

REST

Il metodo serviceAccounts.patch aggiorna un account di servizio.

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

  • PROJECT_ID: il tuo ID progetto Cloud de Confiance . Gli ID progetto sono stringhe alfanumeriche, come my-project.
  • SA_ID: l'ID del tuo account di servizio. Può trattarsi dell'indirizzo email del account di servizio nel formato SA_NAME@PROJECT_ID.s3ns.iam.gserviceaccount.com o dell'ID numerico univoco del service account.
  • SA_NAME: l'ID alfanumerico del tuo account di servizio. Il nome deve essere compreso tra 6 e 30 caratteri e può contenere caratteri alfanumerici minuscoli e trattini.
  • Sostituisci almeno uno dei seguenti elementi:
    • UPDATED_DISPLAY_NAME: un nuovo nome visualizzato per il tuo service account.
    • UPDATED_DESCRIPTION: una nuova descrizione per il service account.

Metodo HTTP e URL:

PATCH https://iam.googleapis.com/v1/projects/PROJECT_ID/serviceAccounts/SA_ID

Corpo JSON della richiesta:

{
  "serviceAccount": {
    "email": "SA_NAME@PROJECT_ID.s3ns.iam.gserviceaccount.com",
    "displayName": "UPDATED_DISPLAY_NAME",
    "description": "UPDATED_DESCRIPTION"
  },
  "updateMask": "displayName,description"
}

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.iam.gserviceaccount.com",
  "displayName": "My updated service account",
  "description": "An updated description of my service account"
}

Passaggi successivi