サービス アカウントとキー

このドキュメントでは、Google Distributed Cloud の実装でクラスタの作成に必要な Google Cloud サービス アカウントとキーについて説明します。

ここでは手順全体を詳しく解説します。サービス アカウントの使用に関する概要については、最小限のインフラストラクチャを設定するをご覧ください。

始める前に

Google Cloud プロジェクトを作成します

サービス アカウントの概要

管理者クラスタとユーザー クラスタを作成する前に、次のサービス アカウントが必要です。

  • コンポーネント アクセス サービス アカウント
  • Connect-register サービス アカウント
  • logging-monitoring サービス アカウント

有効にする機能によっては、オプションのサービス アカウントも必要になる場合があります。

サービス アカウントと Google Cloud プロジェクトについて

サービス アカウントは、作成時に Google Cloud プロジェクトに関連付けます。この Google Cloud プロジェクトをサービス アカウントの親プロジェクトといいます。

サービス アカウントの親プロジェクトは、そのサービス アカウントのメールアドレスで確認できます。たとえば、logger という名前のサービス アカウントのメールアドレスを次に示します。親プロジェクトは alice-123 です。

logger@alice-123.iam.gserviceaccount.com

Identity and Access Management(IAM)のロールをサービス アカウントに付与する場合は、特定の Google Cloud プロジェクトのサービス アカウントにロールを付与します。これは、リソースのプリンシパルにロールを付与するの一般的なパターンに従っています。

たとえば、bob-456 プロジェクトの logger@alice-123.iam.gserviceaccount.com サービス アカウントに bigquery.dataEditor ロールを付与できます。この場合、サービス アカウントがプリンシパルで、Google Cloud プロジェクトがリソースです。

重要なことは、サービス アカウントの親でない Google Cloud プロジェクトのサービス アカウントにロールを付与できる点です。

サービス アカウントにロールを付与する権限

各サービス アカウントに、関連する Google Cloud プロジェクトに対する特定のロールを付与する必要があります。たとえば、connect-register サービス アカウントには、フリート ホスト プロジェクトの gkehub.editor ロールが付与されている必要があります。

Google Cloud プロジェクトに対するロールを付与するには、プロジェクトに対する特定の権限が必要です。詳しくは、ロールについてroles/resourcemanager.projectIamAdmin をご覧ください。

必要な権限があれば、自分でロールを付与できます。それ以外の場合は、組織内の別のユーザーがロールを付与する必要があります。

gkeadm を使用してサービス アカウントを自動的に作成する

このページでは、サービス アカウントを手動で作成して、サービス アカウントにロールを付与する方法を説明します。手動で行う代わりに、管理者ワークステーションの作成時に gkeadm でサービス アカウントを作成してロールを付与することもできます。詳細については、管理ワークステーションの作成をご覧ください。

コンポーネント アクセス サービス アカウント

Google Distributed Cloud は、このサービス アカウントを使用して、ユーザーに代わって Container Registry からクラスタ コンポーネントをダウンロードします。

コンポーネント アクセス サービス アカウントを作成するには、次のコマンドを実行します。

gcloud iam service-accounts create component-access-sa \
    --display-name "Component Access Service Account" \
    --project PROJECT_ID

PROJECT_ID は、サービス アカウントの親プロジェクトとして使用する、Google Cloud プロジェクトの ID に置き換えます。

コンポーネント アクセス サービス アカウントの JSON キーを作成するには、次のコマンドを実行します。

gcloud iam service-accounts keys create component-access-key.json \
   --iam-account SERVICE_ACCOUNT_EMAIL

SERVICE_ACCOUNT_EMAIL は、コンポーネント アクセス サービス アカウントのメールアドレスに置き換えます。

コンポーネント アクセス サービス アカウントにロールを付与する

コンポーネント アクセス サービス アカウントには、フリート ホスト プロジェクトに対する次の IAM ロールが付与されている必要があります。これらのロールは、Google Distributed Cloud がプリフライト チェックを実行するために必要です。

  • serviceusage.serviceUsageViewer
  • iam.roleViewer
  • iam.serviceAccountViewer
  • compute.viewer

ロールを付与するには:

gcloud projects add-iam-policy-binding FLEET_HOST_PROJECT_ID \
    --member "serviceAccount:SERVICE_ACCOUNT_EMAIL" \
    --role "roles/serviceusage.serviceUsageViewer"
gcloud projects add-iam-policy-binding FLEET_HOST_PROJECT_ID \
    --member "serviceAccount:SERVICE_ACCOUNT_EMAIL" \
    --role "roles/iam.roleViewer"
gcloud projects add-iam-policy-binding FLEET_HOST_PROJECT_ID \
    --member "serviceAccount:SERVICE_ACCOUNT_EMAIL" \
    --role "roles/iam.serviceAccountViewer"
gcloud projects add-iam-policy-binding FLEET_HOST_PROJECT_ID \
    --member "serviceAccount:SERVICE_ACCOUNT_EMAIL" \
    --role "roles/compute.viewer"

次のように置き換えます。

  • FLEET_HOST_PROJECT_ID: フリート ホスト プロジェクトの ID。

  • SERVICE_ACCOUNT_EMAIL: コンポーネント アクセス サービス アカウントのメールアドレス。

Connect-register サービス アカウント

Google Distributed Cloud は、このサービス アカウントを使用して、クラスタをフリートに登録します。

connect-register サービス アカウントを作成するには、次のコマンドを実行します。

gcloud iam service-accounts create connect-register-sa \
    --project PROJECT_ID

PROJECT_ID は、connect-register サービス アカウントの親に設定する Google Cloud プロジェクトの ID に置き換えます。

connect-register サービス アカウントの JSON キーを作成するには、次のコマンドを実行します。

gcloud iam service-accounts keys create connect-register-key.json \
   --iam-account SERVICE_ACCOUNT_EMAIL

SERVICE_ACCOUNT_EMAIL は、connect-register サービス アカウントのメールアドレスに置き換えます。

connect-register サービス アカウントには、フリートホスト プロジェクトgkehub.editor ロールを付与する必要があります。

connect-register サービス アカウントに gkehub.editor ロールを付与します。

gcloud projects add-iam-policy-binding FLEET_HOST_PROJECT_ID \
    --member "serviceAccount:SERVICE_ACCOUNT_EMAIL" \
    --role "roles/gkehub.editor"

logging-monitoring サービス アカウント

Google Distributed Cloud は、このサービス アカウントを使用して、クラスタから Cloud LoggingCloud Monitoring にログと指標をエクスポートします。

logging-monitoring サービス アカウントを作成するには、次のコマンドを実行します。

gcloud iam service-accounts create logging-monitoring-sa \
    --project=PROJECT_ID

PROJECT_ID は、logging-monitoring サービス アカウントの親に設定する Google Cloud プロジェクトの ID に置き換えます。

logging-monitoring サービス アカウントの JSON キーを作成するには、次のコマンドを実行します。

gcloud iam service-accounts keys create logging-monitoring-key.json \
    --iam-account SERVICE_ACCOUNT_EMAIL

ロギング モニタリング サービス アカウントには、フリート ホスト プロジェクトに対する次のロールが付与されている必要があります。

  • opsconfigmonitoring.resourceMetadata.writer
  • logging.logWriter
  • monitoring.metricWriter
  • monitoring.dashboardEditor
  • kubernetesmetadata.publisher

必要なロールを logging-monitoring サービス アカウントに付与するには、次のコマンドを実行します。

gcloud projects add-iam-policy-binding FLEET_HOST_PROJECT_ID \
    --member "serviceAccount:SERVICE_ACCOUNT_EMAIL" \
    --role "roles/opsconfigmonitoring.resourceMetadata.writer"
gcloud projects add-iam-policy-binding FLEET_HOST_PROJECT_ID \
    --member "serviceAccount:SERVICE_ACCOUNT_EMAIL" \
    --role "roles/logging.logWriter"
gcloud projects add-iam-policy-binding FLEET_HOST_PROJECT_ID \
    --member "serviceAccount:SERVICE_ACCOUNT_EMAIL" \
    --role "roles/monitoring.metricWriter"
gcloud projects add-iam-policy-binding FLEET_HOST_PROJECT_ID \
    --member "serviceAccount:SERVICE_ACCOUNT_EMAIL" \
    --role "roles/monitoring.dashboardEditor"
gcloud projects add-iam-policy-binding FLEET_HOST_PROJECT_ID \
    --member "serviceAccount:SERVICE_ACCOUNT_EMAIL" \
    --role "roles/kubernetesmetadata.publisher"

SERVICE_ACCOUNT_EMAIL は、logging-monitoring サービス アカウントのメールアドレスに置き換えます。

オプションのサービス アカウント

監査ロギング サービス アカウント

Google Distributed Cloud は、このサービス アカウントを使用して、クラスタから Kubernetes 監査ログを Cloud Audit Logs に送信します。

監査ロギング サービス アカウントを作成するには、次のコマンドを実行します。

gcloud iam service-accounts create audit-logging-sa \
    --project PROJECT_ID

PROJECT_ID は、監査ロギング サービス アカウントの親に設定する Google Cloud プロジェクトの ID に置き換えます。

監査ロギング サービス アカウントの JSON キーを作成するには、次のコマンドを実行します。

gcloud iam service-accounts keys create audit-logging-key.json \
   --iam-account SERVICE_ACCOUNT_EMAIL

SERVICE_ACCOUNT_EMAIL は、監査ロギング サービス アカウントのメールアドレスに置き換えます。

監査ロギング サービス アカウントにロールを付与する必要はありません。

使用状況測定サービス アカウント

Google Distributed Cloud では、このサービス アカウントを使用して、BigQuery データセットに使用状況データを保存します。

使用状況測定サービス アカウントを作成するには、次のコマンドを実行します。

gcloud iam service-accounts create usage-metering-sa \
    --project PROJECT_ID

PROJECT_ID は、使用状況測定サービス アカウントの親に設定する Google Cloud プロジェクトの ID に置き換えます。

使用状況測定サービス アカウントの JSON キーを作成するには、次のコマンドを実行します。

gcloud iam service-accounts keys create usage-metering-key.json \
   --iam-account SERVICE_ACCOUNT_EMAIL

SERVICE_ACCOUNT_EMAIL は、使用状況測定サービス アカウントのメールアドレスに置き換えます。

使用状況測定サービス アカウントには、使用状況測定プロジェクトに対する bigquery.dataEditor ロールが付与されている必要があります。これは、ユーザー クラスタの使用状況データを表示する Google Cloud プロジェクトです。

使用状況測定サービス アカウントに bigquery.dataEditor ロールを付与します。

gcloud projects add-iam-policy-binding USAGE_METERING_PROJECT_ID \
    --member "serviceAccount:SERVICE_ACCOUNT_EMAIL" \
    --role "roles/bigquery.dataEditor"

USAGE_METERING_PROJECT_ID は、使用量測定プロジェクトの ID に置き換えます。

Binary Authorization サービス アカウント

Google Distributed Cloud では、このサービス アカウントを使用して Binary Authorization API を呼び出します。

Binary Authorization サービス アカウントの作成については、GKE On-Prem での Binary Authorization をご覧ください。

次のステップ

管理ワークステーションを作成する