サービス アカウント キーの無効化と有効化

このページでは、Trusted Cloud コンソール、Google Cloud CLIIdentity and Access Management APIGoogle Cloud クライアント ライブラリのいずれかを使用して、サービス アカウント キーを無効または有効にする方法について説明します。

始める前に

必要なロール

サービス アカウント キーの無効化と有効化に必要な権限を取得するには、プロジェクトまたは鍵を管理するサービス アカウントに対してサービス アカウント キー管理者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 をコピーします。keys/ より後のすべての部分が鍵の一意の ID になります。

HTTP メソッドと URL:

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 をコピーします。keys/ より後のすべての部分が鍵の一意の ID になります。

HTTP メソッドと URL:

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

リクエストを送信するには、次のいずれかのオプションを展開します。

次のような JSON レスポンスが返されます。

{
}

次のステップ