停用和启用服务账号密钥

本页面介绍了如何使用Trusted Cloud 控制台、Google Cloud CLIIdentity and Access Management API 或某个 Google Cloud 客户端库来停用和启用服务账号密钥。

准备工作

所需的角色

如需获得停用和启用服务账号密钥所需的权限,请让您的管理员为您授予项目或者您要管理其密钥的服务账号的 Service Account Key Admin (roles/iam.serviceAccountKeyAdmin) IAM 角色。 如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限

您也可以通过自定义角色或其他预定义角色来获取所需的权限。

如需了解详情,请参阅服务账号角色

IAM 基本角色还包含管理服务账号密钥的权限。 您不应在生产环境中授予基本角色,但可以在开发或测试环境中授予这些角色。

停用服务账号密钥

停用服务账号密钥会导致您无法使用该密钥向 Google API 进行身份验证。您可以随时启用已停用的密钥

删除服务账号密钥之前,我们建议您先停用密钥,等到您确定不再需要该密钥时,即可将其删除。

您可以在 Trusted Cloud 控制台中查看已停用的密钥,但不能使用Trusted Cloud 控制台停用密钥。请改用 gcloud CLI 或 REST API。

gcloud

执行 gcloud iam service-accounts keys disable 命令可停用服务账号密钥。

替换以下值:

  • KEY_ID:要停用的密钥的 ID。 如需查找密钥的 ID,请列出服务账号的所有密钥,找到要停用的密钥,然后复制其 ID。
  • SA_NAME:密钥所属服务账号的名称。
  • PROJECT_ID:您的 Trusted Cloud 项目 ID。
gcloud iam service-accounts keys disable KEY_ID \
    --iam-account=SA_NAME@PROJECT_ID.s3ns-system.iam.gserviceaccount.com \
    --project=PROJECT_ID

输出:

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

Java

如需了解如何安装和使用 IAM 客户端库,请参阅 IAM 客户端库。 如需了解详情,请参阅 IAM Java API 参考文档

如需向 IAM 进行身份验证,请设置应用默认凭证。 如需了解详情,请参阅准备工作

在运行代码示例之前,请将 GOOGLE_CLOUD_UNIVERSE_DOMAIN 环境变量设置为 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

projects.serviceAccounts.keys.disable 方法可停用服务账号密钥。

在使用任何请求数据之前,请先进行以下替换:

  • PROJECT_ID:您的 Trusted Cloud 项目 ID。项目 ID 是字母数字字符串,例如 my-project
  • SA_NAME:您要停用其密钥的服务账号的名称。
  • KEY_ID:您要停用的密钥的 ID。 如需查找密钥的 ID,请列出服务账号的所有密钥,找到要停用的密钥,然后从 name 字段的末尾复制其 ID。密钥的 ID 是 keys/ 之后的所有内容。

HTTP 方法和网址:

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

如需发送您的请求,请展开以下选项之一:

您应该收到类似以下内容的 JSON 响应:

{
}

启用服务账号密钥

停用服务账号密钥后,您可以随时启用该密钥,然后使用该密钥向 Google API 进行身份验证。

您不能使用 Trusted Cloud 控制台启用服务账号密钥。请改用 gcloud CLI 或 REST API。

gcloud

执行 gcloud iam service-accounts keys enable 命令可启用服务账号密钥。

替换以下值:

  • KEY_ID:要启用的密钥的 ID。 如需查找密钥的 ID,请列出服务账号的所有密钥,找到要启用的密钥,然后复制其 ID。
  • SA_NAME:密钥所属服务账号的名称。
  • PROJECT_ID:您的 Trusted Cloud 项目 ID。
gcloud iam service-accounts keys enable KEY_ID \
    --iam-account=SA_NAME@PROJECT_ID.s3ns-system.iam.gserviceaccount.com\
    --project=PROJECT_ID

输出:

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

Java

如需了解如何安装和使用 IAM 客户端库,请参阅 IAM 客户端库。 如需了解详情,请参阅 IAM Java API 参考文档

如需向 IAM 进行身份验证,请设置应用默认凭证。 如需了解详情,请参阅准备工作

在运行代码示例之前,请将 GOOGLE_CLOUD_UNIVERSE_DOMAIN 环境变量设置为 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

projects.serviceAccounts.keys.enable 方法可启用服务账号密钥。

在使用任何请求数据之前,请先进行以下替换:

  • PROJECT_ID:您的 Trusted Cloud 项目 ID。项目 ID 是字母数字字符串,例如 my-project
  • SA_NAME:您要启用其密钥的服务账号的名称。
  • KEY_ID:您要启用的密钥的 ID。 如需查找密钥的 ID,请列出服务账号的所有密钥,找到要启用的密钥,然后从 name 字段的末尾复制其 ID。密钥的 ID 是 keys/ 之后的所有内容。

HTTP 方法和网址:

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

如需发送您的请求,请展开以下选项之一:

您应该收到类似以下内容的 JSON 响应:

{
}

后续步骤