Inhabilitar y habilitar claves de cuentas de servicio

En esta página se explica cómo inhabilitar y habilitar claves de cuentas de servicio mediante laTrusted Cloud consola, la CLI de Google Cloud, la API Identity and Access Management o una de las bibliotecas de cliente de Google Cloud.

Antes de empezar

Roles obligatorios

Para obtener los permisos que necesitas para habilitar e inhabilitar claves de cuentas de servicio, pide a tu administrador que te asigne el rol de gestión de identidades y accesos Administrador de claves de cuenta de servicio (roles/iam.serviceAccountKeyAdmin) en el proyecto o en la cuenta de servicio cuyas claves quieras gestionar. Para obtener más información sobre cómo conceder roles, consulta el artículo Gestionar el acceso a proyectos, carpetas y organizaciones.

También puedes conseguir los permisos necesarios a través de roles personalizados u otros roles predefinidos.

Para obtener más información, consulta Roles de cuentas de servicio.

Los roles básicos de gestión de identidades y accesos también contienen permisos para gestionar claves de cuentas de servicio. No debes conceder roles básicos en un entorno de producción, pero sí puedes hacerlo en un entorno de desarrollo o de pruebas.

Inhabilitar una clave de cuenta de servicio

Si inhabilitas una clave de cuenta de servicio, no podrás usarla para autenticarte en las APIs de Google. Puedes habilitar una clave inhabilitada en cualquier momento.

Antes de eliminar una clave de cuenta de servicio, te recomendamos que inhabilites la clave y esperes hasta que tengas la certeza de que ya no la necesitas. Después, puedes eliminar la clave.

Puedes ver las claves inhabilitadas en la consola Trusted Cloud , pero no puedes usarla para inhabilitar una clave.Trusted Cloud En su lugar, usa la CLI de gcloud o la API REST.

gcloud

Ejecuta el comando gcloud iam service-accounts keys disable para inhabilitar una clave de cuenta de servicio.

Sustituye los siguientes valores:

  • KEY_ID: ID de la clave que se va a inhabilitar. Para encontrar el ID de la clave, consulta todas las claves de la cuenta de servicio, identifica la clave que quieras inhabilitar y copia su ID.
  • SA_NAME: el nombre de la cuenta de servicio a la que pertenece la clave.
  • PROJECT_ID: tu ID de proyecto Trusted Cloud .
gcloud iam service-accounts keys disable KEY_ID \
    --iam-account=SA_NAME@PROJECT_ID. \
    --project=PROJECT_ID

Resultado:

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

Java

Para saber cómo instalar y usar la biblioteca de cliente de IAM, consulta Bibliotecas de cliente de IAM. Para obtener más información, consulta la documentación de referencia de la API Java de gestión de identidades y accesos.

Para autenticarte en IAM, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta la sección Antes de empezar.


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

El método projects.serviceAccounts.keys.disable inhabilita una clave de cuenta de servicio.

Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

  • PROJECT_ID: tu ID de proyecto. Trusted Cloud Los IDs de proyecto son cadenas alfanuméricas, como my-project.
  • SA_NAME: el nombre de la cuenta de servicio cuya clave quieres inhabilitar.
  • KEY_ID: el ID de la clave que quieras inhabilitar. Para encontrar el ID de la clave, consulta todas las claves de la cuenta de servicio, identifica la clave que quieras inhabilitar y, a continuación, copia su ID del final del campo name. El ID de la clave es todo lo que hay después de keys/.

Método HTTP y URL:

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

Para enviar tu solicitud, despliega una de estas opciones:

Deberías recibir una respuesta JSON similar a la siguiente:

{
}

Habilitar una clave de cuenta de servicio

Después de inhabilitar una clave de cuenta de servicio, puedes habilitarla en cualquier momento y usarla para autenticarte en las APIs de Google.

No puedes usar la consola Trusted Cloud para habilitar las claves de cuentas de servicio. Usa la CLI de gcloud o la API REST.

gcloud

Ejecuta el comando gcloud iam service-accounts keys enable para habilitar una clave de cuenta de servicio.

Sustituye los siguientes valores:

  • KEY_ID: el ID de la clave que se va a habilitar. Para encontrar el ID de la clave, consulta todas las claves de la cuenta de servicio, identifica la clave que quieras habilitar y, a continuación, copia su ID.
  • SA_NAME: el nombre de la cuenta de servicio a la que pertenece la clave.
  • PROJECT_ID: tu ID de proyecto Trusted Cloud .
gcloud iam service-accounts keys enable KEY_ID \
    --iam-account=SA_NAME@PROJECT_ID.\
    --project=PROJECT_ID

Resultado:

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

Java

Para saber cómo instalar y usar la biblioteca de cliente de IAM, consulta Bibliotecas de cliente de IAM. Para obtener más información, consulta la documentación de referencia de la API Java de gestión de identidades y accesos.

Para autenticarte en IAM, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta la sección Antes de empezar.


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

El método projects.serviceAccounts.keys.enable habilita una clave de cuenta de servicio.

Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

  • PROJECT_ID: tu ID de proyecto. Trusted Cloud Los IDs de proyecto son cadenas alfanuméricas, como my-project.
  • SA_NAME: nombre de la cuenta de servicio cuya clave quieres habilitar.
  • KEY_ID: el ID de la clave que quieres habilitar. Para encontrar el ID de la clave, consulta todas las claves de la cuenta de servicio, identifica la clave que quieras habilitar y, a continuación, copia su ID del final del campo name. El ID de la clave es todo lo que hay después de keys/.

Método HTTP y URL:

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

Para enviar tu solicitud, despliega una de estas opciones:

Deberías recibir una respuesta JSON similar a la siguiente:

{
}

Siguientes pasos