Desativar e ativar chaves de conta de serviço

Nesta página, explicamos como desativar e ativar chaves de conta de serviço usando o console doTrusted Cloud , a Google Cloud CLI, a API Identity and Access Management ou uma das bibliotecas de cliente do Google Cloud.

Antes de começar

Funções exigidas

Para ter as permissões necessárias para desativar e ativar as chaves da conta de serviço, peça ao administrador que conceda a você o papel do IAM Administrador da chave da conta de serviço (roles/iam.serviceAccountKeyAdmin) no projeto ou a conta de serviço com as chaves que você quer gerenciar. Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.

Também é possível conseguir as permissões necessárias por meio de papéis personalizados ou de outros papéis predefinidos.

Para mais informações, consulte papéis de contas de serviço.

Os papéis básicos do IAM também contêm permissões para gerenciar as chaves da conta de serviço. Não conceda papéis básicos em um ambiente de produção, recomendamos que você faça isso em um ambiente de desenvolvimento ou teste.

Desativar uma chave da conta de serviço

Desativar uma chave da conta de serviço impede o uso dela na autenticação com as APIs do Google. É possível ativar uma chave desativada a qualquer momento.

Antes de excluir uma chave de conta de serviço, recomendamos que você desative a chave e espere até ter certeza de que a chave não é mais necessária. Depois, exclua a chave.

É possível ver as chaves desativadas no console Trusted Cloud , mas não é possível usar o consoleTrusted Cloud para desativar uma chave. 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 ser desativada. Para encontrar o ID da chave, liste todas as chaves da conta de serviço, identifique a chave que você quer desativar e copie o ID.
  • SA_NAME: o nome da conta de serviço a que a chave pertence.
  • PROJECT_ID: o ID do projeto do Trusted Cloud .
gcloud iam service-accounts keys disable KEY_ID \
    --iam-account=SA_NAME@PROJECT_ID.s3ns-system.iam.gserviceaccount.com \
    --project=PROJECT_ID

Saída:

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

Java

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

Para autenticar no IAM, configure o Application Default Credentials. Para mais informações, consulte Antes de começar.

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


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 os dados da solicitação abaixo, faça as substituições a seguir:

  • PROJECT_ID: o ID do projeto do Trusted Cloud . Os IDs do projeto são strings alfanuméricas, como my-project.
  • SA_NAME: o nome da conta de serviço com a chave que você quer desativar.
  • KEY_ID: o ID da chave que você quer desativar. Para encontrar o ID da chave, liste todas as chaves da conta de serviço, identifique a chave que você quer desativar e copie o ID do final de name campo O ID da chave é tudo o que vem depois de keys/.

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/KEY_ID:disable

Para enviar a solicitação, expanda uma destas opções:

Você receberá uma resposta JSON semelhante a esta:

{
}

Ativar uma chave de conta de serviço

Depois de desativar uma chave da conta de serviço, é possível ativá-la a qualquer momento e usá-la para autenticação com as APIs do Google.

Não é possível usar o console Trusted Cloud para ativar chaves de conta de serviço. Use a CLI gcloud ou a API REST.

gcloud

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

Substitua os seguintes valores:

  • KEY_ID: o ID da chave a ser ativada. Para encontrar o ID da chave, liste todas as chaves da conta de serviço, identifique a chave que você quer ativar e copie o ID.
  • SA_NAME: o nome da conta de serviço a que a chave pertence.
  • PROJECT_ID: o ID do projeto do Trusted Cloud .
gcloud iam service-accounts keys enable KEY_ID \
    --iam-account=SA_NAME@PROJECT_ID.s3ns-system.iam.gserviceaccount.com\
    --project=PROJECT_ID

Saída:

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

Java

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

Para autenticar no IAM, configure o Application Default Credentials. Para mais informações, consulte Antes de começar.

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


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 ativa uma chave de conta de serviço.

Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

  • PROJECT_ID: o ID do projeto do Trusted Cloud . Os IDs do projeto são strings alfanuméricas, como my-project.
  • SA_NAME: o nome da conta de serviço com a chave que você quer ativar.
  • KEY_ID: o ID da chave que você quer ativar. Para encontrar o ID da chave, liste todas as chaves da conta de serviço, identifique a chave que você quer ativar e copie o ID do final de name campo O ID da chave é tudo o que vem depois de keys/.

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/KEY_ID:enable

Para enviar a solicitação, expanda uma destas opções:

Você receberá uma resposta JSON semelhante a esta:

{
}

A seguir