Desative e ative chaves de contas de serviço

Esta página explica como desativar e ativar 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 de cliente do Google Cloud.

Antes de começar

Funções necessárias

Para receber as autorizações de que precisa para desativar e ativar 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.

As funções básicas do IAM também contêm autorizações para gerir chaves de contas de serviço. Não deve conceder funções básicas num ambiente de produção, mas pode concedê-las num ambiente de desenvolvimento ou de teste.

Desative uma chave de conta de serviço

A desativação de uma chave da conta de serviço impede a utilização da chave para autenticar com as APIs Google. Pode ativar uma chave desativada em qualquer altura.

Antes de eliminar uma chave de conta de serviço, recomendamos que desative a chave e, em seguida, aguarde até ter a certeza de que já não é necessária. Em seguida, pode eliminar a chave.

Pode ver as chaves desativadas na Trusted Cloud consola, mas não pode usar a Trusted Cloud consola para desativar uma chave. Em alternativa, use a CLI gcloud ou a API REST.

gcloud

Execute o comando gcloud iam service-accounts keys disable para desativar uma chave de conta de serviço.

Substitua os seguintes valores:

  • KEY_ID: o ID da chave a desativar. Para encontrar o ID da chave, liste todas as chaves da conta de serviço, identifique a chave que quer desativar 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 disable KEY_ID \
    --iam-account=SA_NAME@PROJECT_ID. \
    --project=PROJECT_ID

Saída:

Disabled key [KEY_ID] for service account
[SA_NAME@PROJECT_ID.]

Java

Para saber como instalar e usar a biblioteca cliente para a IAM, consulte as 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.


import com.google.cloud.iam.admin.v1.IAMClient;
import java.io.IOException;


public class DisableServiceAccountKey {

  public static void main(String[] args) throws IOException {
    // TODO(Developer): Replace the below variables before running.
    String projectId = "gcloud-project-id";
    String serviceAccountName = "service-account-name";
    String serviceAccountKeyName = "service-account-key-name";

    disableServiceAccountKey(projectId, serviceAccountName, serviceAccountKeyName);
  }

  // Disables a service account key.
  public static void disableServiceAccountKey(String projectId,
                                              String accountName,
                                              String key) 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 disable the key.
    // See, https://cloud.google.com/iam/docs/creating-managing-service-account-keys#disabling
    String email = String.format("%s@%s.iam.gserviceaccount.com", accountName, projectId);
    String name = String.format("projects/%s/serviceAccounts/%s/keys/%s", projectId, email, key);

    // 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.disableServiceAccountKey(name);

      System.out.println("Disabled service account key: " + name);
    }
  }
}

REST

O método projects.serviceAccounts.keys.disable desativa 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 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 desativar.
  • KEY_ID: o ID da chave que quer desativar. Para encontrar o ID da chave, liste todas as chaves da conta de serviço, identifique a chave que quer desativar 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:

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

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

Deve receber uma resposta JSON semelhante à seguinte:

{
}

Ative uma chave de conta de serviço

Depois de desativar uma chave da conta de serviço, pode ativá-la em qualquer altura e, em seguida, usar a chave para fazer a autenticação com as APIs Google.

Não pode usar a consola Trusted Cloud para ativar chaves de contas de serviço. Em alternativa, use a CLI gcloud ou a API REST.

gcloud

Execute o comando gcloud iam service-accounts keys enable para ativar uma chave de conta de serviço.

Substitua os seguintes valores:

  • KEY_ID: o ID da chave a ativar. Para encontrar o ID da chave, liste todas as chaves da conta de serviço, identifique a chave que quer ativar 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 enable KEY_ID \
    --iam-account=SA_NAME@PROJECT_ID.\
    --project=PROJECT_ID

Saída:

Enabled key [KEY_ID] for service account
[SA_NAME@PROJECT_ID.]

Java

Para saber como instalar e usar a biblioteca cliente para a IAM, consulte as 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.


import com.google.cloud.iam.admin.v1.IAMClient;
import java.io.IOException;


public class EnableServiceAccountKey {

  public static void main(String[] args) throws IOException {
    // TODO(Developer): Replace the below variables before running.
    String projectId = "gcloud-project-id";
    String serviceAccountName = "service-account-name";
    String serviceAccountKeyName = "service-account-key-name";

    enableServiceAccountKey(projectId, serviceAccountName, serviceAccountKeyName);
  }

  // Enables a service account key.
  public static void enableServiceAccountKey(String projectId,
                                             String accountName,
                                             String key) 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 enable the key.
    // See, https://cloud.google.com/iam/docs/creating-managing-service-account-keys#enabling
    String email = String.format("%s@%s.iam.gserviceaccount.com", accountName, projectId);
    String name = String.format("projects/%s/serviceAccounts/%s/keys/%s", projectId, email, key);

    // 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.enableServiceAccountKey(name);

      System.out.println("Enabled service account key: " + name);
    }
  }
}

REST

O método projects.serviceAccounts.keys.enable permite 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 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 ativar.
  • KEY_ID: o ID da chave que quer ativar. Para encontrar o ID da chave: liste todas as chaves da conta de serviço, identifique a chave que quer ativar e, em seguida, copie o respetivo ID do final do campo name. O ID da chave é tudo o que se encontra após keys/.

Método HTTP e URL:

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

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

Deve receber uma resposta JSON semelhante à seguinte:

{
}

O que se segue?