停用及啟用服務帳戶金鑰

本頁說明如何使用Trusted Cloud 控制台、Google Cloud CLIIdentity and Access Management API 或其中一個 Google Cloud 用戶端程式庫,停用及啟用服務帳戶金鑰。

事前準備

必要的角色

如要取得停用及啟用服務帳戶金鑰所需的權限,請要求管理員授予您專案或服務帳戶的「服務帳戶金鑰管理員」 (roles/iam.serviceAccountKeyAdmin) 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 回應:

{
}

後續步驟