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

このドキュメントでは、Anthos clusters on VMware(GKE On-Prem)実装でクラスタを作成するために必要な 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 プロジェクトのサービス アカウントにロールを付与します。これは、リソースの ID にロールを付与するの一般的なパターンに従っています。

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

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

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

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

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

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

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

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

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

Anthos clusters on VMware は、このサービス アカウントを使用して 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 は、コンポーネント アクセス サービス アカウントのメールアドレスに置き換えます。

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

管理クラスタとユーザー クラスタの構成ファイルには、プロジェクト ID を指定するフィールドが複数あります。

管理クラスタの構成ファイル:

stackdriver:
  projectID: ""
...
cloudAuditLogging:
  projectid: ""

ユーザー クラスタの構成ファイル:

stackdriver:
  projectID: ""
...
gkeConnect:
  projectID: ""
...
usageMetering:
  bigQueryProjectID: ""
...
cloudAuditLogging:
  projectid: ""

構成ファイル内のプロジェクト ID は一意である必要はありません。たとえば、gkeConnect.projectIDcloudAuditLogging.projectID と同じ場合もあります。実際、構成ファイル内のすべてのプロジェクト ID が同一であることもあります。

コンポーネント アクセス サービス アカウントには、各 Google Cloud プロジェクトに対して管理者アカウントとユーザー クラスタの構成ファイルで指定された次の IAM ロールが付与されている必要があります。これらのロールは、Anthos clusters on VMware がプリフライト チェックを実行するために必要です。

  • serviceusage.serviceUsageViewer
  • iam.roleViewer
  • iam.serviceAccountViewer

クラスタ構成ファイルで指定した Google Cloud プロジェクトごとに、次のコマンドを実行して、必要なロールをコンポーネント アクセス サービス アカウントに付与します。

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

以下を置き換えます。

  • PROJECT_ID: 構成ファイルで指定したいずれかの Google Cloud プロジェクトの ID。

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

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

Anthos clusters on VMware は、このサービス アカウントを使用してユーザー クラスタを Google 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.admin ロールを付与する必要があります。これは、クラスタを表示および管理する Google Cloud プロジェクトです。

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

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

PROJECT_ID は、フリートホスト プロジェクトの ID に置き換えます。

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

Anthos clusters on VMware は、このサービス アカウントを使用して、クラスタから 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

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

ロギング モニタリング サービス アカウントには、logging-monitoring プロジェクトに対する次のロールを付与する必要があります。これは、クラスタのログを表示する Google Cloud プロジェクトです。

  • stackdriver.resourceMetadata.writer
  • opsconfigmonitoring.resourceMetadata.writer
  • logging.logWriter
  • monitoring.metricWriter
  • monitoring.dashboardEditor

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

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

PROJECT_ID は、logging-monitoring プロジェクトの ID に置き換えます。

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

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

Anthos clusters on VMware は、このサービス アカウントを使用して 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 PROJECT_ID \
    --member "serviceAccount:SERVICE_ACCOUNT_EMAIL" \
    --role "roles/bigquery.dataEditor"

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

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

Anthos clusters on VMware は、このサービス アカウントを使用して、クラスタから 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 は、監査ロギング サービス アカウントのメールアドレスに置き換えます。

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

Binary Authorization サービス アカウント

Anthos clusters on VMware は、このサービス アカウントを使用して Binary Authorization API を呼び出します。

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

次のステップ

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