Crea ed elimina le chiavi degli account di servizio

Questa pagina spiega come creare ed eliminare le chiavi degli account di servizio utilizzando la console Google Cloud, Google Cloud CLI, l'API Identity and Access Management o una delle librerie client di Google Cloud.

Prima di iniziare

  • Enable the IAM API.

    Enable the API

  • Configurare l'autenticazione.

    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#

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

    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.

    Per ulteriori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale nella documentazione sull'autenticazione di Google Cloud.

    C++

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

    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.

    Per ulteriori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale nella documentazione sull'autenticazione di Google Cloud.

    Vai

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

    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.

    Per ulteriori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale nella documentazione sull'autenticazione di Google Cloud.

    Java

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

    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.

    Per ulteriori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale nella documentazione sull'autenticazione di Google Cloud.

    Python

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

    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.

    Per ulteriori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale nella documentazione sull'autenticazione di Google Cloud.

    REST

    Per utilizzare gli esempi dell'API REST in questa pagina in un ambiente di sviluppo locale, utilizza le credenziali fornite a gcloud CLI.

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

      gcloud init

    Per saperne di più, consulta Eseguire l'autenticazione per l'utilizzo di REST nella documentazione sull'autenticazione di Google Cloud.

  • Scopri di più sulle credenziali dell'account di servizio.

Ruoli obbligatori

Per ottenere le autorizzazioni necessarie per creare ed eliminare le chiavi dell'account di servizio, chiedi all'amministratore di concederti il ruolo IAM Amministratore chiavi account di servizio (roles/iam.serviceAccountKeyAdmin) nel progetto o nell'account di servizio di cui vuoi gestire le chiavi. Per saperne di più sulla concessione dei ruoli, consulta Gestire l'accesso a progetti, cartelle e organizzazioni.

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

Per ulteriori informazioni, consulta Ruoli degli account di servizio.

A seconda della configurazione dei criteri dell'organizzazione, potrebbe essere necessario anche consentire la creazione di chiavi dell'account di servizio nel progetto prima di crearne una.

Per ottenere le autorizzazioni necessarie per consentire la creazione di chiavi dell'account di servizio in un progetto, chiedi all'amministratore di concederti i seguenti ruoli IAM nella tua organizzazione:

Per saperne di più sulla concessione dei ruoli, consulta Gestire l'accesso a progetti, cartelle e organizzazioni.

Questi ruoli predefiniti contengono le autorizzazioni necessarie per consentire la creazione di chiavi dell'account di servizio in un progetto. Per visualizzare le autorizzazioni esatte richieste, espandi la sezione Autorizzazioni richieste:

Autorizzazioni obbligatorie

Per consentire la creazione di chiavi dell'account di servizio in un progetto sono necessarie le seguenti autorizzazioni:

  • 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

Potresti anche ottenere queste autorizzazioni con ruoli personalizzati o altri ruoli predefiniti.

Consenti la creazione di chiavi dell'account di servizio

Prima di creare una chiave dell'account di servizio, assicurati che il vincolo del criterio dell'organizzazione iam.disableServiceAccountKeyCreation non sia applicato per il tuo progetto. Se questo vincolo viene applicato al tuo progetto, non puoi creare chiavi degli account di servizio al suo interno.

Ti consigliamo di applicare questo vincolo alla maggior parte dei progetti e di esentare solo i progetti che richiedono effettivamente chiavi del account di servizio. Per saperne di più sui metodi di autenticazione alternativi, vedi Scegliere il metodo di autenticazione più adatto al tuo caso d'uso.

Per esentare un progetto dal vincolo dei criteri dell'organizzazione iam.disableServiceAccountKeyCreation, chiedi a un amministratore dei criteri dell'organizzazione di svolgere i seguenti passaggi:

  1. A livello di organizzazione, crea una chiave e un valore del tag che utilizzerai per definire se un progetto o una cartella deve essere esente dal criterio dell'organizzazione. Ti consigliamo di creare un tag con la chiave disableServiceAccountKeyCreation e i valori enforced e not_enforced.

    Per scoprire come creare chiavi e valori dei tag, consulta Creare e definire un nuovo tag.

  2. Collega il tag disableServiceAccountKeyCreation all'organizzazione e impostane il valore su enforced. Tutti i progetti o le cartelle dell'organizzazione ereditano questo valore del tag, a meno che non venga sovrascritto con un valore del tag diverso.

    Per scoprire come associare i tag alle risorse, consulta Associare i tag alle risorse.

  3. Per ogni progetto o cartella che vuoi esentare dai criteri dell'organizzazione, allega il tag disableServiceAccountKeyCreation e imposta il relativo valore su not_enforced. L'impostazione di un valore tag per un progetto o una cartella in questo modo sostituisce il valore tag ereditato dall'organizzazione.
  4. Crea o aggiorna il criterio dell'organizzazione che impedisce la creazione di chiavi dell'account di servizio in modo che non applichi il vincolo per le risorse esenti. Queste norme devono avere le seguenti regole:

    • Configura il vincolo iam.disableServiceAccountKeyCreation in modo che non venga applicato alle risorse con il tag disableServiceAccountKeyCreation: not_enforced. La condizione in questa regola dovrebbe avere il seguente aspetto:

      resource.matchTag(\"ORGANIZATION_ID/disableServiceAccountKeyCreation\", \"not_enforced\")
      
    • Configura il vincolo iam.disableServiceAccountKeyCreation da applicare su tutte le altre risorse.

    Per scoprire come creare criteri dell'organizzazione con condizioni dei tag, consulta Impostazione di un criterio dell'organizzazione con tag.

Crea una chiave dell'account di servizio

Per utilizzare un account di servizio dall'esterno di Google Cloud, ad esempio su altre piattaforme o on-premise, devi prima stabilire l'identità dell'account di servizio. Le coppie di chiavi pubblica/privata offrono un modo sicuro per raggiungere questo obiettivo. Quando crei una chiave dell'account di servizio, la parte pubblica viene archiviata in Google Cloud, mentre la parte privata è disponibile solo per te. Per ulteriori informazioni sulle coppie di chiave pubblica/privata, consulta Chiavi dell'account di servizio.

Puoi creare una chiave dell'account di servizio utilizzando la console Google Cloud, l'gcloud CLI, il metodo serviceAccounts.keys.create() o una delle librerie client. Un account di servizio può avere fino a 10 chiavi.

Per impostazione predefinita, le chiavi dell'account di servizio non scadono mai. Puoi utilizzare un vincolo dei criteri dell'organizzazione per specificare la durata per la quale una chiave del account di servizio è valida. Per maggiori dettagli, consulta Tempi di scadenza per le chiavi gestite dall'utente.

Negli esempi riportati di seguito, SA_NAME è il nome del tuo account di servizio e PROJECT_ID è l'ID del tuo progetto Google Cloud. Puoi recuperare la stringaSA_NAME@PROJECT_ID.iam.gserviceaccount.com dalla pagina Account di servizio nella console Google Cloud.

Console

  1. Nella console Google Cloud, vai alla pagina Account di servizio.

    Vai ad Account di servizio

    I passaggi rimanenti vengono visualizzati nella console Google Cloud.

  2. Seleziona un progetto.
  3. Fai clic sull'indirizzo email del service account per cui vuoi creare una chiave.
  4. Fai clic sulla scheda Chiavi.
  5. Fai clic sul menu a discesa Aggiungi chiave, quindi seleziona Crea nuova chiave.
  6. In Tipo di chiave, seleziona JSON e fai clic su Crea.

Facendo clic su Crea viene scaricato un file della chiave del service account. Una volta scaricato, il file della chiave non potrà essere scaricato di nuovo.

La chiave scaricata ha il seguente formato, dove PRIVATE_KEY è la parte privata della coppia di chiavi pubbliche/private:

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

Assicurati di archiviare il file della chiave in modo sicuro perché può essere utilizzato per l'autenticazione come service account. Puoi spostare e rinominare il file come preferisci.

Puoi utilizzare i file della chiave del service account per autenticare un'applicazione come service account.

gcloud

Esegui il comando gcloud iam service-accounts keys create per creare le chiavi degli account di servizio.

Sostituisci i seguenti valori:

  • KEY_FILE: il percorso di un nuovo file di output per la chiave privata, ad esempio ~/sa-private-key.json.
  • SA_NAME: il nome dell'account di servizio per cui creare una chiave.
  • PROJECT_ID: l'ID del tuo progetto Google Cloud.
gcloud iam service-accounts keys create KEY_FILE \
    --iam-account=SA_NAME@PROJECT_ID.iam.gserviceaccount.com

Output:

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

Il file della chiave dell'account di servizio è stato scaricato sul computer. Una volta scaricato, il file della chiave non potrà essere scaricato di nuovo.

La chiave scaricata ha il seguente formato, dove PRIVATE_KEY è la parte privata della coppia di chiavi pubbliche/private:

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

Assicurati di archiviare il file della chiave in modo sicuro perché può essere utilizzato per l'autenticazione come service account. Puoi spostare e rinominare il file come preferisci.

Puoi utilizzare i file della chiave dell'account di servizio per autenticare un'applicazione come account di servizio.

C++

Per scoprire come installare e utilizzare la libreria client per IAM, consulta Librerie client IAM. Per ulteriori informazioni, 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.

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#

Per scoprire come installare e utilizzare la libreria client per IAM, consulta Librerie client IAM. Per ulteriori informazioni, 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.


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

Per scoprire come installare e utilizzare la libreria client per IAM, consulta Librerie client IAM. Per ulteriori informazioni, 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.

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

Per scoprire come installare e utilizzare la libreria client per IAM, consulta Librerie client IAM. Per ulteriori informazioni, 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.


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

Per scoprire come installare e utilizzare la libreria client per IAM, consulta Librerie client IAM. Per ulteriori informazioni, 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.

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

Il metodo projects.serviceAccounts.keys.create crea una chiave per un account di servizio.

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

  • PROJECT_ID: l'ID del tuo progetto Google Cloud. Gli ID progetto sono stringhe alfanumeriche, ad esempio my-project.
  • SA_NAME: il nome dell'account di servizio per cui vuoi creare una chiave.
  • KEY_ALGORITHM: facoltativo. L'algoritmo chiave da utilizzare per la chiave. Il valore predefinito, soggetto a modifiche, è una chiave RSA a 2048 bit. Per un elenco di tutti i valori possibili, consulta la sezione di riferimento ServiceAccountKeyAlgorithm.

Metodo HTTP e URL:

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

Corpo JSON della richiesta:

{
  "keyAlgorithm": "KEY_ALGORITHM"
}

Per inviare la richiesta, espandi una di queste opzioni:

La risposta contiene una chiave per il tuo account di servizio. La chiave restituita ha il seguente formato, dove ENCODED_PRIVATE_KEY è la parte privata della coppia di chiave pubblica/privata, codificata in base64.

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

Per creare un file della chiave che puoi utilizzare per l'autenticazione come account di servizio, decodifica i dati della chiave privata e salvali in un file:

Linux

Esegui questo comando:

echo 'ENCODED_PRIVATE_KEY' | base64 --decode > PATH

Sostituisci PATH con il percorso del file in cui vuoi salvare la chiave. Utilizza l'estensione del file .json.

macOS

Esegui questo comando:

echo 'ENCODED_PRIVATE_KEY' | base64 --decode > PATH

Sostituisci PATH con il percorso del file in cui vuoi salvare la chiave. Utilizza l'estensione del file .json.

PowerShell

  1. Salva i dati della chiave privata codificata (ENCODED_PRIVATE_KEY) in un file.

  2. Usa certutil per decodificare il file:

    certutil -decode ENCODED_FILE DECODED_FILE

    Sostituisci i seguenti valori:

    • ENCODED_FILE: il percorso del file contenente i dati della chiave privata codificati.
    • DECODED_FILE: il percorso del file in cui vuoi salvare la chiave. Utilizza l'estensione del file .json.

Assicurati di archiviare i dati della chiave in modo sicuro perché possono essere utilizzati per l'autenticazione come account di servizio.

Puoi utilizzare i file della chiave dell'account di servizio per autenticare un'applicazione come account di servizio.

Elimina una chiave dell'account di servizio

L'eliminazione di una chiave dell'account di servizio impedisce definitivamente di utilizzarla per l'autenticazione con le API di Google.

Non puoi annullare l'eliminazione di una chiave. Prima di eliminare una chiave, ti consigliamo di disattivarla e di attendere fino a quando non avrai la certezza che non sia più necessaria. Dopodiché puoi eliminare la chiave.

Come best practice, ruota regolarmente le chiavi dell'account di servizio. Per scoprire di più sulla rotazione delle chiavi dell'account di servizio, consulta la sezione Rotazione delle chiavi dell'account di servizio.

Console

  1. Nella console Google Cloud, vai alla pagina Account di servizio.

    Vai ad Account di servizio

    I passaggi rimanenti vengono visualizzati nella console Google Cloud.

  2. Seleziona un progetto.
  3. Nella pagina Account di servizio, fai clic sull'indirizzo email dell'account di servizio di cui vuoi eliminare la chiave.
  4. Fai clic sulla scheda Chiavi.
  5. Nell'elenco delle chiavi, fai clic su Elimina per ogni chiave da eliminare.

gcloud

Esegui il comando gcloud iam service-accounts keys delete per eliminare le chiavi dell'account di servizio.

Sostituisci i seguenti valori:

  • KEY_ID: l'ID della chiave da eliminare. Per trovare l'ID della chiave, elenca tutte le chiavi per l'account di servizio, identifica la chiave che vuoi eliminare e poi copia il relativo ID.
  • SA_NAME: il nome dell'account di servizio a cui appartiene la chiave.
  • PROJECT_ID: l'ID del tuo progetto Google Cloud.
gcloud iam service-accounts keys delete KEY_ID \
    --iam-account=SA_NAME@PROJECT_ID.iam.gserviceaccount.com

Output:

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

C++

Per scoprire come installare e utilizzare la libreria client per IAM, consulta Librerie client IAM. Per ulteriori informazioni, 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.

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#

Per scoprire come installare e utilizzare la libreria client per IAM, consulta Librerie client IAM. Per ulteriori informazioni, 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.


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

Per scoprire come installare e utilizzare la libreria client per IAM, consulta Librerie client IAM. Per ulteriori informazioni, 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.

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

Per scoprire come installare e utilizzare la libreria client per IAM, consulta Librerie client IAM. Per ulteriori informazioni, 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.


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

Per scoprire come installare e utilizzare la libreria client per IAM, consulta Librerie client IAM. Per ulteriori informazioni, 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.

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

Il metodo projects.serviceAccounts.keys.delete elimina una chiave dell'account di servizio.

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

  • PROJECT_ID: l'ID del tuo progetto Google Cloud. Gli ID progetto sono stringhe alfanumeriche, ad esempio my-project.
  • SA_NAME: il nome dell'account di servizio di cui vuoi eliminare la chiave.
  • KEY_ID: l'ID della chiave che vuoi eliminare. Per trovare l'ID della chiave, elenca tutte le chiavi per l'account di servizio, identifica la chiave che vuoi eliminare e poi copia il relativo ID dalla fine del campo name. L'ID della chiave è tutto ciò che segue keys/.

Metodo HTTP e URL:

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

Per inviare la richiesta, espandi una di queste opzioni:

Dovresti ricevere una risposta JSON simile alla seguente:

{
}

Passaggi successivi

Provalo

Se non conosci Google Cloud, crea un account per valutare le prestazioni dei nostri prodotti in scenari reali. I nuovi clienti ricevono anche 300 $ di crediti gratuiti per l'esecuzione, il test e il deployment dei carichi di lavoro.

Inizia gratuitamente