サービス アカウントは、ワークロードまたはサービスがリソースをプログラムで消費し、マイクロサービスに安全にアクセスするために使用するアカウントです。これらは、ユーザーではなく、アプリケーションやワークロードで使用される特別な種類の ID です。ユーザー アカウントと同様に、サービス アカウントには権限とロールを付与できますが、人間のユーザーのようにログインすることはできません。
サービス アカウントは、次のような Google Distributed Cloud(GDC)エアギャップ インフラストラクチャの管理に役立ちます。
- 内部の Distributed Cloud サービスとワークロードが Distributed Cloud コントロール プレーン アプリケーション プログラミング インターフェース(API)に安全にアクセスできるようにします。たとえば、Kubernetes API とやり取りしてデータベースを作成および削除する Database Services などです。
- Distributed Cloud のお客様のワークロードが Distributed Cloud サービスにアクセスし、承認されたアプリケーション プログラミング インターフェース(API)呼び出しを行う。たとえば、サービス アカウントは、Vertex AI Workbench ノートブックを使用して Speech-to-Text API で音声ファイルを文字変換することで、顧客を管理できます。
- Distributed Cloud と連携する外部ワークロード。たとえば、サービス アカウントは、ドキュメントをデジタル化する Distributed Cloud の外部にあるアプリケーションを管理できますが、現在の OCR エンジンを置き換えるために光学文字認識(OCR)API を使用したいと考えています。
- 分散クラウド サービスまたはシステム コントローラが顧客リソースまたはユーザー クラスタに安全にアクセスできるようにします。たとえば、サービス アカウントは、管理者クラスタで実行されているサービス コントローラが、顧客が管理するユーザー クラスタ内でワークロードを実行する必要がある認証と認可のワークフローを管理できます。
アカウントは、GDC コンソールまたは gdcloud CLI を使用して管理できます。gdcloud CLI では、サービス ID 機能はグローバル ProjectServiceAccount
API に基づいて構築されています。サービス アカウントはグローバルに構成されるため、gdcloud ユニバースのすべてのゾーンで動作します。
始める前に
サービス アカウントはプロジェクト内でのみ作成できます。プロジェクトの作成について詳しくは、プロジェクトを作成するをご覧ください。
サービス ID を作成する
サービス アカウントの作成に必要な権限を取得するには、プロジェクト IAM 管理者にプロジェクト IAM 管理者(project-iam-admin
)ロールの付与を依頼してください。
サービス アカウントへのアクセス権を持つユーザーは、プロジェクト内のすべてのサービス アカウントにアクセスできます。
プロジェクトでサービス アカウントを作成するには、GDC コンソールまたは gdcloud CLI を使用します。
コンソール
- GDC コンソールにログインします。
- ナビゲーション メニューで、[ID とアクセス] > [サービス ID] を選択します。
- [ サービス ID を作成] をクリックします。[サービス ID の詳細] ページが開きます。
- [サービス ID 名] フィールドに、サービス ID の名前を入力します。例:
testserviceidentity
。 - [作成] をクリックします。
gdcloud
サービス ID を作成します。
gdcloud iam service-accounts create NAME \
--project=PROJECT
次の値を置き換えます。
- NAME:
ProjectServiceAccount
の名前。名前はプロジェクト Namespace 内で一意である必要があります。 - PROJECT: サービス ID を作成するプロジェクト。
gdcloud init
がすでに設定されている場合は、--project
フラグを省略します。
このコマンドは、Management API サーバーのプロジェクト Namespace に ProjectServiceAccount
を作成します。
API
my-project-sa.yaml
などのProjectServiceAccount
カスタム リソース YAML ファイルを作成します。apiVersion: resourcemanager.global.gdc.goog/v1 kind: ProjectServiceAccount metadata: name: NAME namespace: PROJECT spec: keys: - algorithm: ALGORITHM id: KEY_ID key: KEY validAfter: "START_TIME" validBefore: "EXPIRATION_TIME"
次の変数を置き換えます。
NAME
:ProjectServiceAccount
リソースの名前。名前はプロジェクト名前空間内で一意である必要があります。PROJECT
: サービス ID を作成するプロジェクト。ALGORITHM
: 鍵のアルゴリズム。ES256 鍵のみがサポートされています。KEY_ID
: 鍵の固有識別子。この ID は、検証に使用する鍵を特定するために使用されます。KEY
: 照合する Base64 エンコードされた公開鍵。START_TIME
: キーが有効になる開始時間(2025-02-07T00:59:34Z
など)。EXPIRATION_TIME
: 鍵の有効期限(2026-02-07T00:59:34Z
など)。
ProjectServiceAccount
カスタム リソースをグローバル API サーバーに適用します。kubectl --kubeconfig GLOBAL_API_SERVER_KUBECONFIG apply -f my-project-sa.yaml
GLOBAL_API_SERVER_KUBECONFIG
変数を、グローバル API サーバーの kubeconfig ファイルへのパスに置き換えます。
サービス ID を表示する
プロジェクト内のサービス アカウントの一覧を表示するには、GDC コンソールまたは gdcloud CLI を使用します。
コンソール
- GDC コンソールにログインします。
- プロジェクトを選択します。
- ナビゲーション メニューで、[Identity & Access > Service Identities] をクリックして、プロジェクトのサービス アカウントのリストを表示します。
gdcloud
プロジェクトのサービス アカウントを一覧表示します。
gdcloud iam service-accounts list \
--project=PROJECT
サービス ID にロール バインディングを割り当てる
ロール バインディングを割り当てるには、適切な権限が必要です。ロールの割り当てに必要な権限を取得するには、プロジェクト IAM 管理者にプロジェクト IAM 管理者(project-iam-admin
)ロールの付与を依頼してください。
GDC コンソールまたは gdcloud CLI を使用して、ロール バインディングを割り当てます。
コンソール
- GDC コンソールにログインします。
- プロジェクトを選択します。
- ナビゲーション メニューで、[ID とアクセス] > [アクセス] を選択します。
- [メンバー] リストで、[ メンバーを追加] をクリックします。[ユーザーとロール] ページが表示されます。
- [メンバー タイプ] リストで [サービス ID] を選択します。
- [サービス ID] リストで、ロール バインディングを割り当てるサービス ID を選択します。
- [ロール] リストで、サービス ID に割り当てるロール(バックアップ作成者など)を選択します。
- 省略可: 別のロールを追加するには、[ 別のロールを追加] をクリックします。追加のロールを選択します。
- [追加] をクリックします。
gdcloud
このコマンドは、指定されたロールを Management API サーバーの ProjectServiceAccount
にバインドするプロジェクト ロール バインディングを作成して名前を付けます。
gdcloud iam service-accounts add-iam-policy-binding \
--project=PROJECT \
--role=ROLE \
--role-namespace=ROLE_NAMESPACE \
--iam-account=NAME
次の値を置き換えます。
- PROJECT: ロール バインディングを作成するプロジェクト。
gdcloud init
がすでに設定されている場合は、--project
フラグを省略できます。 - ROLE:
ProjectServiceAccount
に割り当てる事前定義ロール。ロールはRole/name
形式で指定します。ここで、Role は Kubernetes タイプIAMRole
、name は事前定義ロールの名前です。たとえば、プロジェクト閲覧者のロールを割り当てるには、ロールをIAMRole/project-viewer
に設定します。 - ROLE_NAMESPACE: サービス アカウントにバインドするロールの名前空間。これは、ユニバースに複数のゾーンがある場合にのみ適用されます。
- NAME: 使用するサービス ID の名前。
サービス ID を削除する
プロジェクト内のサービス アカウントを削除するには、GDC コンソールまたは gdcloud CLI を使用します。
コンソール
- GDC コンソールにログインします。
- ナビゲーション メニューで、[ID とアクセス] > [サービス ID] を選択します。
- 削除するサービス ID のチェックボックスをオンにします。
- [削除] をクリックします。
- 確認ダイアログが表示されます。[Confirm by typing the following below] フィールドに「
remove
」と入力します。 - [削除] をクリックします。
gdcloud
次のコマンドを実行して、サービス ID を削除します。
gdcloud iam service-accounts delete NAME \
--project=PROJECT
鍵ペアを作成して追加する
プロジェクトで鍵ペアを作成して追加するには、GDC コンソールまたは gdcloud CLI を使用します。
コンソール
- GDC コンソールにログインします。
- ナビゲーション メニューで、[ID とアクセス] > [サービス ID] を選択します。
- キーに追加するサービス ID の名前をクリックします。
- [ 新しいキーを作成] をクリックします。
- 新しいキーが [キー] リストに表示され、キーが正常に作成されたことを確認するダイアログが表示されます。
gdcloud
このコマンドは、アプリケーションのデフォルト認証情報の JSON ファイルと公開鍵と秘密鍵のペアを作成します。
gdcloud iam service-accounts keys create APPLICATION_DEFAULT_CREDENTIALS_FILENAME \
--project=PROJECT \
--iam-account=NAME \
--ca-cert-path=CA_CERTIFICATE_PATH
次の値を置き換えます。
- APPLICATION_DEFAULT_CREDENTIALS_FILENAME: JSON ファイルの名前。
- PROJECT : 鍵を作成するプロジェクトを選択します。
gdcloud init
がすでに設定されている場合は、--project
フラグを省略できます。 - NAME: 鍵を追加するサービス ID の名前。
- CA_CERTIFICATE_PATH: 省略可。認証エンドポイントを検証するための認証局(CA)証明書のパス。このパスを指定しない場合、システム CA 証明書が使用されます。CA はシステムの CA 証明書にインストールする必要があります。
Distributed Cloud は、秘密鍵が署名する JSON ウェブトークン(JWT)の検証に使用する ProjectServiceAccount
鍵に公開鍵を追加します。秘密鍵は、アプリケーションのデフォルト認証情報の JSON ファイルに書き込まれます。
次の例は、アプリケーションのデフォルト認証情報の JSON ファイルを示しています。
{
"type": "gdch_service_account",
"format_version": "1",
"project": "project_name",
"private_key_id": "abcdef1234567890",
"private_key": "-----BEGIN RSA PRIVATE KEY-----\nETC\n-----END RSA PRIVATE KEY-----\n",
"name": "service_identity_name",
"ca_cert_path": "service_identity_name",
"token_uri": "https://service-identity.<Domain>/authenticate"
}
この例では次の値を使用します。
project
: 組織内のプロジェクト Namespace。private_key_id
: 鍵に割り当てられた ID。private_key
: CLI が生成する秘密鍵。name
: サービス ID の名前。token_uri
: 認証エンドポイントのアドレス。
サービス アカウントの認証情報を一覧表示する
プロジェクト内の特定の ProjectServiceAccount
の公開鍵を一覧表示します。
gdcloud iam service-accounts keys list \
--project=PROJECT \
--iam-account=NAME
認証情報を削除
公開鍵を削除するには、GDC コンソールまたは gdcloud CLI を使用します。
コンソール
- GDC コンソールにログインします。
- ナビゲーション メニューで、[ID とアクセス] > [サービス ID] を選択します。
- 削除する鍵があるサービス ID の名前をクリックします。
- [ 削除] をクリックします。
- 確認ダイアログで [削除] をクリックします。
gdcloud
鍵 ID を使用して、プロジェクトの特定の ProjectServiceAccount
から公開鍵を削除します。
gdcloud iam service-accounts keys delete KEY_ID \
--project=PROJECT \
--iam-account=NAME