サービス アカウント キーの作成と削除

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

始める前に

必要なロール

サービス アカウント キーの作成と削除に必要な権限を取得するため、プロジェクトまたは鍵を管理するサービス アカウントに対するサービス アカウント キー管理者roles/iam.serviceAccountKeyAdmin)の IAM ロールを付与するよう管理者に依頼してください。ロールの付与については、プロジェクト、フォルダ、組織へのアクセスを管理するをご覧ください。

必要な権限は、カスタムロールや他の事前定義ロールから取得することもできます。

詳しくは、サービス アカウントのロールをご覧ください。

組織のポリシーの構成によっては、キーを作成する前に、プロジェクトでサービス アカウント キーの作成を許可する必要がある場合もあります。

プロジェクトでサービス アカウント キーを作成できるようにするために必要な権限を取得するには、組織に対する次の IAM ロールを付与するよう管理者に依頼してください。

ロールの付与については、プロジェクト、フォルダ、組織へのアクセスを管理するをご覧ください。

これらの事前定義ロールには、プロジェクトでサービス アカウント キーを作成できるようにするために必要な権限が含まれています。必要とされる正確な権限については、「必要な権限」セクションを開いてご確認ください。

必要な権限

プロジェクトでサービス アカウント キーを作成できるようにするには、次の権限が必要です。

  • orgpolicy.constraints.list
  • orgpolicy.customConstraints.create
  • orgpolicy.customConstraints.delete
  • orgpolicy.customConstraints.get
  • orgpolicy.customConstraints.list
  • orgpolicy.customConstraints.update
  • orgpolicy.policies.create
  • orgpolicy.policies.delete
  • orgpolicy.policies.list
  • orgpolicy.policies.update
  • orgpolicy.policy.get
  • orgpolicy.policy.set
  • resourcemanager.organizations.get
  • resourcemanager.projects.listTagBindings
  • resourcemanager.projects.listEffectiveTags
  • resourcemanager.tagKeys.get
  • resourcemanager.tagKeys.list
  • resourcemanager.tagValues.list
  • resourcemanager.tagValues.get

カスタムロールや他の事前定義ロールを使用して、これらの権限を取得することもできます。

サービス アカウント キーの作成を許可する

サービス アカウント キーを作成する前に、プロジェクトに iam.disableServiceAccountKeyCreation 組織のポリシー制約が適用されていないことを確認してください。この制約がプロジェクトに適用されている場合、そのプロジェクトでサービス アカウント キーを作成することはできません。

ほとんどのプロジェクトにこの制約を適用し、サービス アカウント キーが本当に必要なプロジェクトのみを除外することをおすすめします。その他の認証方法の詳細については、ユースケースに適した認証方法を選択するをご覧ください。

プロジェクトを iam.disableServiceAccountKeyCreation 組織のポリシー制約から除外するには、組織のポリシー管理者に次の操作を依頼します。

  1. 組織レベルで、リソースを組織のポリシーから除外するかどうかを定義するために、タグキーとタグ値を作成します。キー disableServiceAccountKeyCreation と値 enforcednot_enforced を使用してタグを作成することをおすすめします。

    タグキーとタグ値の作成方法については、新しいタグの作成と定義をご覧ください。

  2. disableServiceAccountKeyCreation タグを組織に適用し、その値を enforced に設定します。組織内のすべてのリソースは、別のタグ値で上書きされない限り、このタグ値を継承します。

    リソースにタグを適用する方法については、リソースへのタグの適用をご覧ください。

  3. 組織のポリシーから除外するプロジェクトまたはフォルダごとに disableServiceAccountKeyCreation タグを付けて、その値を not_enforced に設定します。この方法でプロジェクトまたはフォルダにタグ値を設定すると、組織から継承されたタグ値がオーバーライドされます。
  4. 除外リソースに制約が適用されないように、サービス アカウント キーの作成を禁止する組織のポリシーを作成または更新します。このポリシーには、次のルールが必要です。

    • disableServiceAccountKeyCreation: not_enforced タグの付いたリソースに適用されないように iam.disableServiceAccountKeyCreation 制約を構成します。このルールの条件は次のようになります。

      "resource.matchTag('ORGANIZATION_ID/disableServiceAccountKeyCreation', 'not_enforced')"
      
    • 他のすべてのリソースに適用されるように iam.disableServiceAccountKeyCreation 制約を構成します。

サービス アカウント キーを作成する

他のプラットフォームやオンプレミスなど Trusted Cloudの外部からサービス アカウントを使用するには、最初にサービス アカウントの ID を設定する必要があります。公開鍵 / 秘密鍵ペアを使用すると、これを安全に設定できます。サービス アカウント キーを作成すると、公開部分はTrusted Cloudに保存され、非公開の部分は自分だけが使用できます。公開鍵/秘密鍵のペアの詳細については、サービス アカウント キーをご覧ください。

サービス アカウント キーは、 Trusted Cloud コンソール、gcloud CLI、serviceAccounts.keys.create() メソッド、任意のクライアント ライブラリを使用して作成できます。サービス アカウントには最大 10 個の鍵を設定できます。

デフォルトでは、サービス アカウント キーに有効期限はありません。組織のポリシーの制約を使用して、サービス アカウント キーの有効期間を指定できます。詳細については、ユーザーが管理する鍵の有効期限をご覧ください。

以下の例で、SA_NAME はサービス アカウントの名前、PROJECT_ID はTrusted Cloud by S3NS プロジェクトの ID です。SA_NAME@PROJECT_ID.s3ns-system.iam.gserviceaccount.com 文字列は、 Trusted Cloud コンソールの [サービス アカウント] ページから取得できます。

コンソール

  1. Trusted Cloud コンソールで、[サービス アカウント] ページに移動します。
  2. プロジェクトを選択します。
  3. キーを作成するサービス アカウントのメールアドレスをクリックします。
  4. [キー] タブをクリックします。
  5. [鍵を追加] プルダウン メニューをクリックして、[新しい鍵を作成] を選択します。
  6. 鍵のタイプとして [JSON] を選択し、[作成] をクリックします。

[作成] をクリックすると、サービス アカウント キーファイルがダウンロードされます。鍵ファイルをダウンロードした後、再度ダウンロードすることはできません。

ダウンロードされる鍵の形式は次のとおりです。ここで PRIVATE_KEY は公開鍵 / 秘密鍵ペアの非公開部分です。

{
  "type": "service_account",
  "project_id": "PROJECT_ID",
  "private_key_id": "KEY_ID",
  "private_key": "-----BEGIN PRIVATE KEY-----\nPRIVATE_KEY\n-----END PRIVATE KEY-----\n",
  "client_email": "SERVICE_ACCOUNT_EMAIL",
  "client_id": "CLIENT_ID",
  "auth_uri": "https://accounts.google.com/o/oauth2/auth",
  "token_uri": "https://accounts.google.com/o/oauth2/token",
  "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
  "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/SERVICE_ACCOUNT_EMAIL"
}

鍵ファイルは、サービス アカウントとしての認証で使用できるため、安全な場所に保管してください。このファイルは任意の場所に移動できます。名前を変更することも可能です。

サービス アカウントの鍵ファイルを使用すると、アプリケーションをサービス アカウントとして認証できます。

gcloud

gcloud iam service-accounts keys create コマンドを実行して、サービス アカウント キーを作成します。

次の値を置き換えます。

  • KEY_FILE: 秘密鍵の新しい出力ファイルのパス(例: ~/sa-private-key.json)。
  • SA_NAME: 鍵を作成するサービス アカウントの名前。
  • PROJECT_ID: 実際の Trusted Cloud プロジェクト ID。
gcloud iam service-accounts keys create KEY_FILE \
    --iam-account=SA_NAME@PROJECT_ID.s3ns-system.iam.gserviceaccount.com

出力:

created key [e44da1202f82f8f4bdd9d92bc412d1d8a837fa83] of type [json] as
[/usr/home/username/KEY_FILE] for
[SA_NAME@PROJECT_ID.s3ns-system.iam.gserviceaccount.com]

これで、マシンにサービス アカウント キーファイルがダウンロードされました。鍵ファイルをダウンロードした後、再度ダウンロードすることはできません。

ダウンロードされる鍵の形式は次のとおりです。ここで PRIVATE_KEY は公開鍵 / 秘密鍵ペアの非公開部分です。

{
  "type": "service_account",
  "project_id": "PROJECT_ID",
  "private_key_id": "KEY_ID",
  "private_key": "-----BEGIN PRIVATE KEY-----\nPRIVATE_KEY\n-----END PRIVATE KEY-----\n",
  "client_email": "SERVICE_ACCOUNT_EMAIL",
  "client_id": "CLIENT_ID",
  "auth_uri": "https://accounts.google.com/o/oauth2/auth",
  "token_uri": "https://oauth2.googleapis.com/token",
  "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
  "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/SERVICE_ACCOUNT_EMAIL"
}

鍵ファイルは、サービス アカウントとしての認証で使用できるため、安全な場所に保管してください。このファイルは任意の場所に移動できます。名前を変更することも可能です。

サービス アカウントの鍵ファイルを使用すると、アプリケーションをサービス アカウントとして認証できます。

C++

IAM のクライアント ライブラリをインストールして使用する方法については、IAM クライアント ライブラリをご覧ください。詳細については、IAM C++ API のリファレンス ドキュメントをご覧ください。

IAM で認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、始める前にをご覧ください。

コードサンプルを実行する前に、GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境変数を s3nsapis.fr に設定します。

namespace iam = ::google::cloud::iam_admin_v1;
return [](std::string const& name) {
  iam::IAMClient client(iam::MakeIAMConnection());
  auto response = client.CreateServiceAccountKey(
      name,
      google::iam::admin::v1::ServiceAccountPrivateKeyType::
          TYPE_GOOGLE_CREDENTIALS_FILE,
      google::iam::admin::v1::ServiceAccountKeyAlgorithm::KEY_ALG_RSA_2048);
  if (!response) throw std::move(response).status();
  std::cout << "ServiceAccountKey successfully created: "
            << response->DebugString() << "\n"
            << "Please save the key in a secure location, as they cannot "
               "be downloaded later\n";
  return response->name();
}

C#

IAM のクライアント ライブラリをインストールして使用する方法については、IAM クライアント ライブラリをご覧ください。詳細については、IAM C# API のリファレンス ドキュメントをご覧ください。

IAM で認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、始める前にをご覧ください。

コードサンプルを実行する前に、GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境変数を s3nsapis.fr に設定します。


using System;
using System.Text;
using Google.Apis.Auth.OAuth2;
using Google.Apis.Iam.v1;
using Google.Apis.Iam.v1.Data;

public partial class ServiceAccountKeys
{
    public static ServiceAccountKey CreateKey(string serviceAccountEmail)
    {
        var credential = GoogleCredential.GetApplicationDefault()
            .CreateScoped(IamService.Scope.CloudPlatform);
        var service = new IamService(new IamService.Initializer
        {
            HttpClientInitializer = credential
        });

        var key = service.Projects.ServiceAccounts.Keys.Create(
            new CreateServiceAccountKeyRequest(),
            "projects/-/serviceAccounts/" + serviceAccountEmail)
            .Execute();

        // The PrivateKeyData field contains the base64-encoded service account key
        // in JSON format.
        // TODO(Developer): Save the below key (jsonKeyFile) to a secure location.
        //  You cannot download it later.
        byte[] valueBytes = System.Convert.FromBase64String(key.PrivateKeyData);
        string jsonKeyContent = Encoding.UTF8.GetString(valueBytes);

        Console.WriteLine("Key created successfully");
        return key;
    }
}

Go

IAM のクライアント ライブラリをインストールして使用する方法については、IAM クライアント ライブラリをご覧ください。詳細については、IAM Go API のリファレンス ドキュメントをご覧ください。

IAM で認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、始める前にをご覧ください。

コードサンプルを実行する前に、GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境変数を s3nsapis.fr に設定します。

import (
	"context"
	// "encoding/base64"
	"fmt"
	"io"

	iam "google.golang.org/api/iam/v1"
)

// createKey creates a service account key.
func createKey(w io.Writer, serviceAccountEmail string) (*iam.ServiceAccountKey, error) {
	ctx := context.Background()
	service, err := iam.NewService(ctx)
	if err != nil {
		return nil, fmt.Errorf("iam.NewService: %w", err)
	}

	resource := "projects/-/serviceAccounts/" + serviceAccountEmail
	request := &iam.CreateServiceAccountKeyRequest{}
	key, err := service.Projects.ServiceAccounts.Keys.Create(resource, request).Do()
	if err != nil {
		return nil, fmt.Errorf("Projects.ServiceAccounts.Keys.Create: %w", err)
	}
	// The PrivateKeyData field contains the base64-encoded service account key
	// in JSON format.
	// TODO(Developer): Save the below key (jsonKeyFile) to a secure location.
	// You cannot download it later.
	// jsonKeyFile, _ := base64.StdEncoding.DecodeString(key.PrivateKeyData)
	fmt.Fprintf(w, "Key created successfully")
	return key, nil
}

Java

IAM のクライアント ライブラリをインストールして使用する方法については、IAM クライアント ライブラリをご覧ください。詳細については、IAM Java API のリファレンス ドキュメントをご覧ください。

IAM で認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、始める前にをご覧ください。

コードサンプルを実行する前に、GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境変数を s3nsapis.fr に設定します。


import com.google.cloud.iam.admin.v1.IAMClient;
import com.google.gson.Gson;
import com.google.iam.admin.v1.CreateServiceAccountKeyRequest;
import com.google.iam.admin.v1.ServiceAccountKey;
import java.io.IOException;

public class CreateServiceAccountKey {

  public static void main(String[] args) throws IOException {
    // TODO(Developer): Replace the below variables before running.
    String projectId = "your-project-id";
    String serviceAccountName = "your-service-account-name";

    ServiceAccountKey key = createKey(projectId, serviceAccountName);
    Gson gson = new Gson();

    // System.out.println("Service account key: " + gson.toJson(key));
  }

  // Creates a key for a service account.
  public static ServiceAccountKey createKey(String projectId, String accountName)
          throws IOException {
    String email = String.format("%s@%s.iam.gserviceaccount.com", accountName, projectId);

    // 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()) {
      CreateServiceAccountKeyRequest req = CreateServiceAccountKeyRequest.newBuilder()
              .setName(String.format("projects/%s/serviceAccounts/%s", projectId, email))
              .build();
      ServiceAccountKey createdKey = iamClient.createServiceAccountKey(req);
      System.out.println("Key created successfully");

      return createdKey;
    }
  }
}

Python

IAM のクライアント ライブラリをインストールして使用する方法については、IAM クライアント ライブラリをご覧ください。詳細については、IAM Python API のリファレンス ドキュメントをご覧ください。

IAM で認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、始める前にをご覧ください。

コードサンプルを実行する前に、GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境変数を s3nsapis.fr に設定します。

from google.cloud import iam_admin_v1
from google.cloud.iam_admin_v1 import types


def create_key(project_id: str, account: str) -> types.ServiceAccountKey:
    """
    Creates a key for a service account.

    project_id: ID or number of the Google Cloud project you want to use.
    account: ID or email which is unique identifier of the service account.
    """

    iam_admin_client = iam_admin_v1.IAMClient()
    request = types.CreateServiceAccountKeyRequest()
    request.name = f"projects/{project_id}/serviceAccounts/{account}"

    key = iam_admin_client.create_service_account_key(request=request)

    # The private_key_data field contains the stringified service account key
    # in JSON format. You cannot download it again later.
    # If you want to get the value, you can do it in a following way:
    # import json
    # json_key_data = json.loads(key.private_key_data)
    # key_id = json_key_data["private_key_id"]

    return key

REST

projects.serviceAccounts.keys.create メソッドは、サービス アカウント キーを作成します。

リクエストのデータを使用する前に、次のように置き換えます。

  • PROJECT_ID: 実際の Trusted Cloud プロジェクト ID。プロジェクト ID は英数字からなる文字列です(例: my-project)。
  • SA_NAME: 鍵を作成するサービス アカウントの名前。
  • KEY_ALGORITHM: 省略可。鍵に使用する鍵アルゴリズム。デフォルトは、2,048 ビットの RSA 鍵です(変更されることがあります)。使用できるすべての値のリストについては、ServiceAccountKeyAlgorithm リファレンスをご覧ください。

HTTP メソッドと URL:

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

リクエストの本文(JSON):

{
  "keyAlgorithm": "KEY_ALGORITHM"
}

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

レスポンスにはサービス アカウント キーが含まれています。返される鍵の形式は次のとおりです。ここで ENCODED_PRIVATE_KEY は、公開鍵 / 秘密鍵ペアの非公開部分であり、Base64 でエンコードされています。

{
  "name": "projects/PROJECT_ID/serviceAccounts/SERVICE_ACCOUNT_EMAIL/keys/KEY_ID",
  "privateKeyType": "TYPE_GOOGLE_CREDENTIALS_FILE",
  "privateKeyData": "ENCODED_PRIVATE_KEY",
  "validAfterTime": "DATE",
  "validBeforeTime": "DATE",
  "keyAlgorithm": "KEY_ALG_RSA_2048"
}

サービス アカウントとして認証するために使用する鍵ファイルを作成するには、秘密鍵データをデコードし、ファイルに保存します。

Linux

次のコマンドを実行します。

echo 'ENCODED_PRIVATE_KEY' | base64 --decode > PATH

PATH は、鍵を保存するファイルのパスで置き換えます。ファイル拡張子に .json を使用します。

macOS

次のコマンドを実行します。

echo 'ENCODED_PRIVATE_KEY' | base64 --decode > PATH

PATH は、鍵を保存するファイルのパスで置き換えます。ファイル拡張子に .json を使用します。

PowerShell

  1. エンコードされた秘密鍵データ(ENCODED_PRIVATE_KEY)をファイルに保存します。

  2. certutil を使用して、ファイルをデコードします。

    certutil -decode ENCODED_FILE DECODED_FILE

    次の値を置き換えます。

    • ENCODED_FILE: エンコードされた秘密鍵データを含むファイルのパス。
    • DECODED_FILE: 鍵を保存するファイルのパス。ファイル拡張子に .json を使用します。

鍵データは、サービス アカウントとしての認証で使用されるため、安全な場所に保管してください。

サービス アカウントの鍵ファイルを使用すると、アプリケーションをサービス アカウントとして認証できます。

サービス アカウント キーを削除する

サービス アカウント キーを完全に削除すると、その鍵を使用して Google API で認証できなくなります。

キーの削除を取り消すことはできません。キーを削除する前にキーを無効にして、そのキーが不要になるまで待つことをおすすめします。その後、キーを削除できます。

サービス アカウント キーを定期的にローテーションすることをおすすめします。サービス アカウント キーのローテーションの詳細については、サービス アカウント キーのローテーションをご覧ください。

コンソール

  1. Trusted Cloud コンソールで、[サービス アカウント] ページに移動します。
  2. プロジェクトを選択します。
  3. [サービス アカウント] ページで、キーを削除するサービス アカウントのメールアドレスをクリックします。
  4. [キー] タブをクリックします。
  5. キーの一覧で、削除するキーの [削除] をクリックします。

gcloud

gcloud iam service-accounts keys delete コマンドを実行して、サービス アカウント キーを削除します。

次の値を置き換えます。

  • KEY_ID: 削除する鍵の ID。鍵の ID を確認するには、サービス アカウントのすべての鍵を一覧表示し、削除する鍵を特定して、その ID をコピーします。
  • SA_NAME: 鍵が属するサービス アカウントの名前。
  • PROJECT_ID: 実際の Trusted Cloud プロジェクト ID。
gcloud iam service-accounts keys delete KEY_ID \
    --iam-account=SA_NAME@PROJECT_ID.s3ns-system.iam.gserviceaccount.com

出力:

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

C++

IAM のクライアント ライブラリをインストールして使用する方法については、IAM クライアント ライブラリをご覧ください。詳細については、IAM C++ API のリファレンス ドキュメントをご覧ください。

IAM で認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、始める前にをご覧ください。

コードサンプルを実行する前に、GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境変数を s3nsapis.fr に設定します。

namespace iam = ::google::cloud::iam_admin_v1;
[](std::string const& name) {
  iam::IAMClient client(iam::MakeIAMConnection());
  auto response = client.DeleteServiceAccountKey(name);
  if (!response.ok()) throw std::runtime_error(response.message());
  std::cout << "ServiceAccountKey successfully deleted.\n";
}

C#

IAM のクライアント ライブラリをインストールして使用する方法については、IAM クライアント ライブラリをご覧ください。詳細については、IAM C# API のリファレンス ドキュメントをご覧ください。

IAM で認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、始める前にをご覧ください。

コードサンプルを実行する前に、GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境変数を s3nsapis.fr に設定します。


using System;
using Google.Apis.Auth.OAuth2;
using Google.Apis.Iam.v1;
using Google.Apis.Iam.v1.Data;

public partial class ServiceAccountKeys
{
    public static void DeleteKey(string fullKeyName)
    {
        var credential = GoogleCredential.GetApplicationDefault()
            .CreateScoped(IamService.Scope.CloudPlatform);
        var service = new IamService(new IamService.Initializer
        {
            HttpClientInitializer = credential
        });

        service.Projects.ServiceAccounts.Keys.Delete(fullKeyName).Execute();
        Console.WriteLine("Deleted key: " + fullKeyName);
    }
}

Go

IAM のクライアント ライブラリをインストールして使用する方法については、IAM クライアント ライブラリをご覧ください。詳細については、IAM Go API のリファレンス ドキュメントをご覧ください。

IAM で認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、始める前にをご覧ください。

コードサンプルを実行する前に、GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境変数を s3nsapis.fr に設定します。

import (
	"context"
	"fmt"
	"io"

	iam "google.golang.org/api/iam/v1"
)

// deleteKey deletes a service account key.
func deleteKey(w io.Writer, fullKeyName string) error {
	ctx := context.Background()
	service, err := iam.NewService(ctx)
	if err != nil {
		return fmt.Errorf("iam.NewService: %w", err)
	}

	_, err = service.Projects.ServiceAccounts.Keys.Delete(fullKeyName).Do()
	if err != nil {
		return fmt.Errorf("Projects.ServiceAccounts.Keys.Delete: %w", err)
	}
	fmt.Fprintf(w, "Deleted key: %v", fullKeyName)
	return nil
}

Java

IAM のクライアント ライブラリをインストールして使用する方法については、IAM クライアント ライブラリをご覧ください。詳細については、IAM Java API のリファレンス ドキュメントをご覧ください。

IAM で認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、始める前にをご覧ください。

コードサンプルを実行する前に、GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境変数を s3nsapis.fr に設定します。


import com.google.cloud.iam.admin.v1.IAMClient;
import com.google.iam.admin.v1.DeleteServiceAccountKeyRequest;
import com.google.iam.admin.v1.KeyName;
import java.io.IOException;

public class DeleteServiceAccountKey {

  public static void main(String[] args) throws IOException {
    // TODO(developer): Replace the variables before running the sample.
    String projectId = "your-project-id";
    String serviceAccountName = "my-service-account-name";
    String serviceAccountKeyId = "service-account-key-id";

    deleteKey(projectId, serviceAccountName, serviceAccountKeyId);
  }

  // Deletes a service account key.
  public static void deleteKey(String projectId, String accountName,
                               String serviceAccountKeyId) throws IOException {
    //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()) {

      //Construct the service account email.
      //You can modify the ".iam.gserviceaccount.com" to match the service account name in which
      //you want to delete the key.
      //See, https://cloud.google.com/iam/docs/creating-managing-service-account-keys#deleting

      String accountEmail = String.format("%s@%s.iam.gserviceaccount.com", accountName, projectId);

      String name = KeyName.of(projectId, accountEmail, serviceAccountKeyId).toString();

      DeleteServiceAccountKeyRequest request = DeleteServiceAccountKeyRequest.newBuilder()
              .setName(name)
              .build();

      // Then you can delete the key
      iamClient.deleteServiceAccountKey(request);

      System.out.println("Deleted key: " + serviceAccountKeyId);
    }
  }
}

Python

IAM のクライアント ライブラリをインストールして使用する方法については、IAM クライアント ライブラリをご覧ください。詳細については、IAM Python API のリファレンス ドキュメントをご覧ください。

IAM で認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、始める前にをご覧ください。

コードサンプルを実行する前に、GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境変数を s3nsapis.fr に設定します。

from google.cloud import iam_admin_v1
from google.cloud.iam_admin_v1 import types


def delete_key(project_id: str, account: str, key_id: str) -> None:
    """Deletes a key for a service account.

    project_id: ID or number of the Google Cloud project you want to use.
    account: ID or email which is unique identifier of the service account.
    key_id: unique ID of the key.
    """

    iam_admin_client = iam_admin_v1.IAMClient()
    request = types.DeleteServiceAccountKeyRequest()
    request.name = f"projects/{project_id}/serviceAccounts/{account}/keys/{key_id}"

    iam_admin_client.delete_service_account_key(request=request)
    print(f"Deleted key: {key_id}")

REST

projects.serviceAccounts.keys.delete メソッドはサービス アカウント キーを削除します。

リクエストのデータを使用する前に、次のように置き換えます。

  • PROJECT_ID: 実際の Trusted Cloud プロジェクト ID。プロジェクト ID は英数字からなる文字列です(例: my-project)。
  • SA_NAME: 鍵を削除するサービス アカウントの名前。
  • KEY_ID: 削除する鍵の ID。鍵の ID を確認するには、サービス アカウントのすべての鍵を一覧表示して、削除する鍵を特定し、name フィールドの最後からその ID をコピーします。keys/ より後のすべての部分が鍵の一意の ID になります。

HTTP メソッドと URL:

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

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

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

{
}

次のステップ