Crie e elimine chaves de contas de serviço

Esta página explica como criar e eliminar chaves de contas de serviço através da Trusted Cloud consola, da CLI do Google Cloud, da API Identity and Access Management ou de uma das bibliotecas cliente do Google Cloud.

Antes de começar

Funções necessárias

Para receber as autorizações de que precisa para criar e eliminar chaves de contas de serviço, peça ao seu administrador para lhe conceder a função Administrador de chaves de contas de serviço (roles/iam.serviceAccountKeyAdmin) do IAM no projeto ou na conta de serviço cujas chaves quer gerir. Para mais informações sobre a atribuição de funções, consulte o artigo Faça a gestão do acesso a projetos, pastas e organizações.

Também pode conseguir as autorizações necessárias através de funções personalizadas ou outras funções predefinidas.

Para mais informações, consulte o artigo Funções das contas de serviço.

Consoante a configuração da política da organização, também pode ter de permitir a criação de chaves de contas de serviço no seu projeto antes de criar uma chave.

Para receber as autorizações de que precisa para permitir a criação de chaves de contas de serviço num projeto, peça ao seu administrador que lhe conceda as seguintes funções de IAM na sua organização:

Para mais informações sobre a atribuição de funções, consulte o artigo Faça a gestão do acesso a projetos, pastas e organizações.

Estas funções predefinidas contêm as autorizações necessárias para permitir a criação de chaves de contas de serviço num projeto. Para ver as autorizações exatas que são necessárias, expanda a secção Autorizações necessárias:

Autorizações necessárias

São necessárias as seguintes autorizações para permitir a criação de chaves de contas de serviço num projeto:

  • 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

Também pode conseguir estas autorizações com funções personalizadas ou outras funções predefinidas.

Permita a criação de chaves de contas de serviço

Antes de criar uma chave de conta de serviço, certifique-se de que a restrição da política da organização iam.disableServiceAccountKeyCreation não é aplicada ao seu projeto. Se esta restrição for aplicada ao seu projeto, não pode criar chaves de contas de serviço nesse projeto.

Recomendamos que aplique esta restrição à maioria dos projetos e que apenas isente os projetos que realmente necessitam de chaves de contas de serviço. Para mais informações sobre métodos de autenticação alternativos, consulte o artigo Escolha o método de autenticação certo para o seu exemplo de utilização.

Para isentar um projeto da restrição da política de organização iam.disableServiceAccountKeyCreation, peça a um administrador da política de organização que faça o seguinte:

  1. Ao nível da organização, crie uma chave de etiqueta e um valor de etiqueta que vai usar para definir se um recurso deve estar isento da política da organização. Recomendamos que crie uma etiqueta com a chave disableServiceAccountKeyCreation e os valores enforced e not_enforced.

    Para saber como criar chaves de etiquetas e valores de etiquetas, consulte o artigo Criar e definir uma nova etiqueta.

  2. Anexe a etiqueta disableServiceAccountKeyCreation à organização e defina o respetivo valor como enforced. Todos os recursos na organização herdam este valor da etiqueta, a menos que seja substituído por um valor da etiqueta diferente.

    Para saber como anexar etiquetas a recursos, consulte o artigo Anexar etiquetas a recursos.

  3. Para cada projeto ou pasta que quer isentar da política da organização, anexe a etiqueta disableServiceAccountKeyCreation e defina o respetivo valor como not_enforced. Definir um valor de etiqueta para um projeto ou uma pasta desta forma substitui o valor de etiqueta herdado da organização.
  4. Crie ou atualize a política da organização que impede a criação de chaves de contas de serviço para que não aplique a restrição aos recursos isentos. Esta política deve ter as seguintes regras:

    • Configure a restrição iam.disableServiceAccountKeyCreation para não ser aplicada a recursos com a etiqueta disableServiceAccountKeyCreation: not_enforced. A condição nesta regra deve ter o seguinte aspeto:

      "resource.matchTag('ORGANIZATION_ID/disableServiceAccountKeyCreation', 'not_enforced')"
      
    • Configure a restrição iam.disableServiceAccountKeyCreation para ser aplicada a todos os outros recursos.

Crie uma chave de conta de serviço

Para usar uma conta de serviço fora do Trusted Cloud, como noutras plataformas ou no local, primeiro tem de estabelecer a identidade da conta de serviço. Os pares de chaves públicas/privadas oferecem uma forma segura de atingir este objetivo. Quando cria uma chave de conta de serviço, a parte pública é armazenada em Trusted Cloud, enquanto a parte privada só está disponível para si. Para mais informações sobre pares de chaves públicas/privadas, consulte o artigo Chaves de contas de serviço.

Pode criar uma chave de conta de serviço através da Trusted Cloud consola, da CLI gcloud, do método serviceAccounts.keys.create() ou de uma das bibliotecas cliente. Uma conta de serviço pode ter até 10 chaves.

Por predefinição, as chaves de contas de serviço nunca expiram. Pode usar uma restrição da política da organização para especificar o período durante o qual uma chave da conta de serviço é válida. Para ver detalhes, consulte o artigo Tempos de expiração das chaves geridas pelo utilizador.

Nos exemplos abaixo, SA_NAME é o nome da sua conta de serviço e PROJECT_ID é o ID do seu projeto doTrusted Cloud by S3NS . Pode obter a string na página Contas de serviço na consola Trusted Cloud .SA_NAME@PROJECT_ID.s3ns-system.iam.gserviceaccount.com

Consola

  1. Na Trusted Cloud consola, aceda à página Contas de serviço.
  2. Selecione um projeto.
  3. Clique no endereço de email da conta de serviço para a qual quer criar uma chave.
  4. Clique no separador Chaves.
  5. Clique no menu pendente Adicionar chave e, de seguida, selecione Criar nova chave.
  6. Selecione JSON como o Tipo de chave e clique em Criar.

Se clicar em Criar, transfere um ficheiro de chave da conta de serviço. Depois de transferir o ficheiro de chave, não o pode transferir novamente.

A chave transferida tem o seguinte formato, em que PRIVATE_KEY é a parte privada do par de chaves público/privado:

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

Certifique-se de que armazena o ficheiro de chave em segurança, uma vez que pode ser usado para autenticar como a sua conta de serviço. Pode mover e mudar o nome deste ficheiro como quiser.

Pode usar ficheiros de chaves de contas de serviço para autenticar uma aplicação como uma conta de serviço.

gcloud

Execute o comando gcloud iam service-accounts keys create para criar chaves de contas de serviço.

Substitua os seguintes valores:

  • KEY_FILE: o caminho para um novo ficheiro de saída para a chave privada, por exemplo, ~/sa-private-key.json.
  • SA_NAME: o nome da conta de serviço para a qual criar uma chave.
  • PROJECT_ID: o ID do seu Trusted Cloud projeto.
gcloud iam service-accounts keys create KEY_FILE \
    --iam-account=SA_NAME@PROJECT_ID.s3ns-system.iam.gserviceaccount.com

Saída:

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

O ficheiro de chave da conta de serviço é transferido para o seu computador. Depois de transferir o ficheiro de chave, não o pode transferir novamente.

A chave transferida tem o seguinte formato, em que PRIVATE_KEY é a parte privada do par de chaves público/privado:

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

Certifique-se de que armazena o ficheiro de chave em segurança, uma vez que pode ser usado para autenticar como a sua conta de serviço. Pode mover e mudar o nome deste ficheiro como quiser.

Pode usar ficheiros de chaves de contas de serviço para autenticar uma aplicação como uma conta de serviço.

C++

Para saber como instalar e usar a biblioteca cliente para a IAM, consulte o artigo Bibliotecas cliente da IAM. Para mais informações, consulte a documentação de referência da API C++ IAM.

Para se autenticar no IAM, configure as Credenciais padrão da aplicação. Para mais informações, consulte a secção Antes de começar.

Antes de executar exemplos de código, defina a variável GOOGLE_CLOUD_UNIVERSE_DOMAIN environment como s3nsapis.fr.

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#

Para saber como instalar e usar a biblioteca cliente para a IAM, consulte o artigo Bibliotecas cliente da IAM. Para mais informações, consulte a documentação de referência da API C# IAM.

Para se autenticar no IAM, configure as Credenciais padrão da aplicação. Para mais informações, consulte a secção Antes de começar.

Antes de executar exemplos de código, defina a variável GOOGLE_CLOUD_UNIVERSE_DOMAIN environment como s3nsapis.fr.


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

Para saber como instalar e usar a biblioteca cliente para a IAM, consulte o artigo Bibliotecas cliente da IAM. Para mais informações, consulte a documentação de referência da API Go IAM.

Para se autenticar no IAM, configure as Credenciais padrão da aplicação. Para mais informações, consulte a secção Antes de começar.

Antes de executar exemplos de código, defina a variável GOOGLE_CLOUD_UNIVERSE_DOMAIN environment como s3nsapis.fr.

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

Para saber como instalar e usar a biblioteca cliente para a IAM, consulte o artigo Bibliotecas cliente da IAM. Para mais informações, consulte a documentação de referência da API Java IAM.

Para se autenticar no IAM, configure as Credenciais padrão da aplicação. Para mais informações, consulte a secção Antes de começar.

Antes de executar exemplos de código, defina a variável GOOGLE_CLOUD_UNIVERSE_DOMAIN environment como s3nsapis.fr.


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

Para saber como instalar e usar a biblioteca cliente para a IAM, consulte o artigo Bibliotecas cliente da IAM. Para mais informações, consulte a documentação de referência da API Python IAM.

Para se autenticar no IAM, configure as Credenciais padrão da aplicação. Para mais informações, consulte a secção Antes de começar.

Antes de executar exemplos de código, defina a variável GOOGLE_CLOUD_UNIVERSE_DOMAIN environment como s3nsapis.fr.

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

O método projects.serviceAccounts.keys.create cria uma chave para uma conta de serviço.

Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:

  • PROJECT_ID: O ID do seu Trusted Cloud projeto. Os IDs dos projetos são strings alfanuméricas, como my-project.
  • SA_NAME: o nome da conta de serviço para a qual quer criar uma chave.
  • KEY_ALGORITHM: opcional. O algoritmo de chave a usar para a chave. A predefinição, que está sujeita a alterações, é uma chave RSA de 2048 bits. Para ver uma lista de todos os valores possíveis, consulte a referência ServiceAccountKeyAlgorithm.

Método HTTP e URL:

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

Corpo JSON do pedido:

{
  "keyAlgorithm": "KEY_ALGORITHM"
}

Para enviar o seu pedido, expanda uma destas opções:

A resposta contém uma chave para a sua conta de serviço. A chave devolvida tem o seguinte formato, em que ENCODED_PRIVATE_KEY é a parte privada do par de chaves pública/privada, codificada em 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"
}

Para criar um ficheiro de chave que possa usar para autenticar como a conta de serviço, descodifique os dados da chave privada e guarde-os num ficheiro:

Linux

Execute o seguinte comando:

echo 'ENCODED_PRIVATE_KEY' | base64 --decode > PATH

Substitua PATH pelo caminho do ficheiro no qual quer guardar a chave. Use a extensão de ficheiro .json.

macOS

Execute o seguinte comando:

echo 'ENCODED_PRIVATE_KEY' | base64 --decode > PATH

Substitua PATH pelo caminho do ficheiro no qual quer guardar a chave. Use a extensão de ficheiro .json.

PowerShell

  1. Guarde os dados da chave privada codificados (ENCODED_PRIVATE_KEY) num ficheiro.

  2. Use certutil para descodificar o ficheiro:

    certutil -decode ENCODED_FILE DECODED_FILE

    Substitua os seguintes valores:

    • ENCODED_FILE: o caminho para o ficheiro que contém os dados da chave privada codificados.
    • DECODED_FILE: o caminho do ficheiro no qual quer guardar a chave. Use a extensão de ficheiro .json.

Certifique-se de que armazena os dados da chave de forma segura, uma vez que podem ser usados para autenticar como a sua conta de serviço.

Pode usar ficheiros de chaves de contas de serviço para autenticar uma aplicação como uma conta de serviço.

Elimine uma chave de conta de serviço

A eliminação de uma chave da conta de serviço impede permanentemente a utilização da chave para fazer a autenticação nas APIs Google.

Não pode anular a eliminação de uma chave eliminada. Antes de eliminar uma chave, recomendamos que desative a chave e, em seguida, aguarde até ter a certeza de que já não precisa da chave. Em seguida, pode eliminar a chave.

Como prática recomendada, alterne as chaves das contas de serviço regularmente. Para saber mais sobre a rotação das chaves de contas de serviço, consulte o artigo Rotação das chaves de contas de serviço.

Consola

  1. Na Trusted Cloud consola, aceda à página Contas de serviço.
  2. Selecione um projeto.
  3. Na página Contas de serviço, clique no endereço de email da conta de serviço cuja chave quer eliminar.
  4. Clique no separador Chaves.
  5. Na lista de chaves, clique em Eliminar para cada chave que quer eliminar.

gcloud

Execute o comando gcloud iam service-accounts keys delete para eliminar chaves de contas de serviço.

Substitua os seguintes valores:

  • KEY_ID: o ID da chave a eliminar. Para encontrar o ID da chave, liste todas as chaves da conta de serviço, identifique a chave que quer eliminar e, em seguida, copie o respetivo ID.
  • SA_NAME: o nome da conta de serviço à qual a chave pertence.
  • PROJECT_ID: o ID do seu Trusted Cloud projeto.
gcloud iam service-accounts keys delete KEY_ID \
    --iam-account=SA_NAME@PROJECT_ID.s3ns-system.iam.gserviceaccount.com

Saída:

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

C++

Para saber como instalar e usar a biblioteca cliente para a IAM, consulte o artigo Bibliotecas cliente da IAM. Para mais informações, consulte a documentação de referência da API C++ IAM.

Para se autenticar no IAM, configure as Credenciais padrão da aplicação. Para mais informações, consulte a secção Antes de começar.

Antes de executar exemplos de código, defina a variável GOOGLE_CLOUD_UNIVERSE_DOMAIN environment como s3nsapis.fr.

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#

Para saber como instalar e usar a biblioteca cliente para a IAM, consulte o artigo Bibliotecas cliente da IAM. Para mais informações, consulte a documentação de referência da API C# IAM.

Para se autenticar no IAM, configure as Credenciais padrão da aplicação. Para mais informações, consulte a secção Antes de começar.

Antes de executar exemplos de código, defina a variável GOOGLE_CLOUD_UNIVERSE_DOMAIN environment como s3nsapis.fr.


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

Para saber como instalar e usar a biblioteca cliente para a IAM, consulte o artigo Bibliotecas cliente da IAM. Para mais informações, consulte a documentação de referência da API Go IAM.

Para se autenticar no IAM, configure as Credenciais padrão da aplicação. Para mais informações, consulte a secção Antes de começar.

Antes de executar exemplos de código, defina a variável GOOGLE_CLOUD_UNIVERSE_DOMAIN environment como s3nsapis.fr.

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

Para saber como instalar e usar a biblioteca cliente para a IAM, consulte o artigo Bibliotecas cliente da IAM. Para mais informações, consulte a documentação de referência da API Java IAM.

Para se autenticar no IAM, configure as Credenciais padrão da aplicação. Para mais informações, consulte a secção Antes de começar.

Antes de executar exemplos de código, defina a variável GOOGLE_CLOUD_UNIVERSE_DOMAIN environment como s3nsapis.fr.


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

Para saber como instalar e usar a biblioteca cliente para a IAM, consulte o artigo Bibliotecas cliente da IAM. Para mais informações, consulte a documentação de referência da API Python IAM.

Para se autenticar no IAM, configure as Credenciais padrão da aplicação. Para mais informações, consulte a secção Antes de começar.

Antes de executar exemplos de código, defina a variável GOOGLE_CLOUD_UNIVERSE_DOMAIN environment como s3nsapis.fr.

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

O método projects.serviceAccounts.keys.delete elimina uma chave de conta de serviço.

Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:

  • PROJECT_ID: O ID do seu Trusted Cloud projeto. Os IDs dos projetos são strings alfanuméricas, como my-project.
  • SA_NAME: o nome da conta de serviço cuja chave quer eliminar.
  • KEY_ID: o ID da chave que quer eliminar. Para encontrar o ID da chave, liste todas as chaves da conta de serviço, identifique a chave que quer eliminar e, de seguida, copie o respetivo ID do final do campo name. O ID da chave é tudo o que se encontra depois de keys/.

Método HTTP e URL:

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

Para enviar o seu pedido, expanda uma destas opções:

Deve receber uma resposta JSON semelhante à seguinte:

{
}

O que se segue?