ステップ 4: サービス アカウントを作成する

このステップでは、Apigee ハイブリッドの動作に必要な Google Cloud サービス アカウントを作成する方法について説明します。

概要

Apigee ハイブリッドでは Google Cloud サービス アカウントを使用して、認可された API 呼び出しによるハイブリッド コンポーネント間の通信が許可されます。

本番環境と非本番環境

このガイドでは、本番環境と非本番環境のインストールについて説明します。本番環境のインストールは、使用容量、ストレージ、スケーラビリティが向上するように調整されています。非本番環境インストールでは、使用するリソースが少なく、主に学習とデモ用に使用されます。

Apigee ハイブリッドのサービス アカウントを作成して構成する場合は、ターゲットとするインストールの種類を認識することが重要です。

本番環境のインストールでは、Apigee ハイブリッド コンポーネントごとに個別のサービス アカウントを作成することをおすすめします。たとえば、runtime、mart、metrics、udca などがそれぞれ独自のサービス アカウントを取得します。

非本番環境のインストールでは、すべてのコンポーネントに適用される単一のサービス アカウントを作成できます。

Apigee で使用されるサービス アカウントと割り当てられているロールの詳細については、ハイブリッド コンポーネントで使用されるサービス アカウントとロールをご覧ください。

GKE 上の Workload Identity

GKE 上の Apigee ハイブリッド インストールの場合、Google Cloud にはハイブリッド ランタイム コンポーネントを認証するための Workload Identity と呼ばれるオプションが用意されています。このオプションでは、サービス アカウントを認証するためにダウンロードした証明書ファイルを使用しません。代わりに、この手順で作成した Google Cloud サービス アカウントを Kubernetes クラスタ内の Kubernetes サービス アカウントに関連付けます。

Workload Identity は GKE インストールでのみ使用できます。

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

次の手順で、ハイブリッド インストール用の Google Cloud サービス アカウントを作成します。

  • create-service-account ツール: GKE 以外のプラットフォームに Apigee ハイブリッドをインストールする場合、または GKE にインストールするものの Workload Identity を使用しない場合は、Apigee が提供するツールである create-service-account を使用して、1 つのコマンドでサービス アカウントを作成し、サービス アカウントにロールを割り当て、サービス アカウント キーファイルを作成してダウンロードできます。
    create-service-account を使用してサービス アカウントを作成するの手順に沿って操作します。
  • Google Cloud コンソールまたは gcloud: GKE に Apigee ハイブリッドをインストールし、Workload Identity を使用する場合は、Google Cloud コンソールまたは gcloud を使用します。
    Google Cloud コンソールまたは gcloud でサービス アカウントを作成するの手順に沿って操作します。

create-service-account を使用してサービス アカウントを作成する

create-service-account ツールは次のような状況で使用します。

  • GKE 以外のプラットフォームにインストールしようとしている
  • GKE にインストールしているが、Workload Identity を使用する予定はない。

それ以外の場合は、Google Cloud コンソールまたは gcloud でサービス アカウントを作成するに進んでください。

  1. 環境変数 HYBRID_FILESPROJECT_ID が設定されていることを確認します。

    PROJECT_ID は Google Cloud プロジェクト ID に設定する必要があります。これは、create-service-account ツールが PROJECT_ID 環境変数を読み取り、サービス アカウントを正しいプロジェクトで作成するためです。

    echo $HYBRID_FILES
    echo $PROJECT_ID
  2. 次のコマンドを使用してサービス アカウントを作成します。

    非本番環境

    このコマンドは、非本番環境のインストールで使用する apigee-non-prod という名前のサービス アカウントを 1 つ作成し、サービス アカウント キーファイルを $HYBRID_FILES/service-accounts ディレクトリにダウンロードします。

    $HYBRID_FILES/tools/create-service-account --env non-prod --dir $HYBRID_FILES/service-accounts

    本番環境

    このコマンドは、本番環境のインストールの各サービス アカウントをすべて作成し、$HYBRID_FILES/service-accounts ディレクトリにサービス アカウント キーファイルをダウンロードします。

    $HYBRID_FILES/tools/create-service-account --env prod --dir $HYBRID_FILES/service-accounts

    次のプロンプトが表示されたら、「y」と入力します。

    [INFO]: gcloud configured project ID is project_id.
     Enter: y to proceed with creating service account in project: project_id
     Enter: n to abort.

    特定のサービス アカウントを初めて作成する場合は、プロンプトが表示されずにアカウントが作成されます。

    ただし、次のメッセージとプロンプトが表示されたら、「y」を入力して新しい鍵を生成してください。

    [INFO]: Service account apigee-non-prod@project_id.iam.gserviceaccount.com already exists.
    ...
     [INFO]: The service account might have keys associated with it. It is recommended to use existing keys.
     Press: y to generate new keys.(this does not deactivate existing keys)
     Press: n to skip generating new keys.
  3. 次のコマンドを使用して、サービス アカウント キーが作成されたことを確認します。これらの秘密鍵は安全に保存する必要があります。鍵ファイルの名前の先頭に、Google Cloud プロジェクトの名前が付加されます。
    ls $HYBRID_FILES/service-accounts

    結果は次のようになります。

    project_id-apigee-non-prod.json

Google Cloud コンソールまたは gcloud でサービス アカウントを作成する

GKE で Workload Identity を使用してハイブリッド ランタイム コンポーネントを認証する場合は、サービス アカウント用の証明書ファイルを作成してダウンロードする必要はありません。そのため、create-service-account ツールは使用しないでください。代わりに、Google Cloud コンソールまたは gcloud の IAM API を使用して、サービス アカウントを作成します。

それ以外の場合は、create-service-account を使用してサービス アカウントを作成するに進みます。

コンソール

サービス アカウントを作成するの説明に従って、次のサービス アカウントを作成して、次のロールを割り当てます。

非本番環境

非本番環境のインストールの場合:

サービス アカウント名 IAM ロール
apigee-non-prod
  • Apigee アナリティクス エージェント
  • Apigee Connect エージェント
  • Apigee ランタイム エージェント
  • Apigee Synchronizer 管理者
  • ログ書き込み
  • モニタリング指標の書き込み
  • ストレージ オブジェクト管理者

本番環境

本番環境のインストールの場合:

本番環境のインストール
サービス アカウント名 IAM ロール
apigee-cassandra Storage オブジェクト管理者
apigee-logger ログ書き込み
apigee-mart Apigee Connect エージェント
apigee-metrics モニタリング指標の書き込み
apigee-runtime ロールは不要
apigee-synchronizer Apigee Synchronizer 管理者
apigee-udca Apigee アナリティクス エージェント
apigee-watcher Apigee ランタイム エージェント

gcloud

次のコマンドを使用してサービス アカウントを作成し、IAM ロールを割り当てます。

非本番環境

非本番環境のインストールの場合:

  1. apigee-non-prod サービス アカウントを作成します。
    gcloud iam service-accounts create apigee-non-prod \
      --display-name="apigee-non-prod" \
      --project=$PROJECT_ID
  2. サービス アカウントに IAM ロールを割り当てます。
    gcloud projects add-iam-policy-binding $PROJECT_ID \
      --member="serviceAccount:apigee-non-prod@$PROJECT_ID.iam.gserviceaccount.com" \
      --role="roles/storage.objectAdmin"
    gcloud projects add-iam-policy-binding $PROJECT_ID \
      --member="serviceAccount:apigee-non-prod@$PROJECT_ID.iam.gserviceaccount.com" \
      --role="roles/logging.logWriter"
    gcloud projects add-iam-policy-binding $PROJECT_ID \
      --member="serviceAccount:apigee-non-prod@$PROJECT_ID.iam.gserviceaccount.com" \
      --role="roles/apigeeconnect.Agent"
    gcloud projects add-iam-policy-binding $PROJECT_ID \
      --member="serviceAccount:apigee-non-prod@$PROJECT_ID.iam.gserviceaccount.com" \
      --role="roles/monitoring.metricWriter"
    gcloud projects add-iam-policy-binding $PROJECT_ID \
      --member="serviceAccount:apigee-non-prod@$PROJECT_ID.iam.gserviceaccount.com" \
      --role="roles/apigee.synchronizerManager"
    gcloud projects add-iam-policy-binding $PROJECT_ID \
      --member="serviceAccount:apigee-non-prod@$PROJECT_ID.iam.gserviceaccount.com" \
      --role="roles/apigee.analyticsAgent"
    gcloud projects add-iam-policy-binding $PROJECT_ID \
      --member="serviceAccount:apigee-non-prod@$PROJECT_ID.iam.gserviceaccount.com" \
      --role="roles/apigee.runtimeAgent"
  3. ロール バインディングを確認します。
    gcloud projects get-iam-policy ${PROJECT_ID} \
      --flatten="bindings[].members" \
      --format='table(bindings.role)' \
      --filter="bindings.members:apigee-non-prod@$PROJECT_ID.iam.gserviceaccount.com"

本番環境

本番環境のインストールの場合:

次のコマンドを使用して、各サービス アカウントを作成し、対応する IAM のロールを割り当てます。

  1. apigee-cassandra サービス アカウント:
    gcloud iam service-accounts create apigee-cassandra \
      --display-name="apigee-cassandra" \
      --project=$PROJECT_ID
    gcloud projects add-iam-policy-binding $PROJECT_ID \
      --member="serviceAccount:apigee-cassandra@$PROJECT_ID.iam.gserviceaccount.com" \
      --role="roles/storage.objectAdmin"
  2. apigee-logger サービス アカウント:
    gcloud iam service-accounts create apigee-logger \
      --display-name="apigee-logger" \
      --project=$PROJECT_ID
    gcloud projects add-iam-policy-binding $PROJECT_ID \
      --member="serviceAccount:apigee-logger@$PROJECT_ID.iam.gserviceaccount.com" \
      --role="roles/logging.logWriter"
  3. apigee-mart サービス アカウント:
    gcloud iam service-accounts create apigee-mart \
      --display-name="apigee-mart" \
      --project=$PROJECT_ID
    gcloud projects add-iam-policy-binding $PROJECT_ID \
      --member="serviceAccount:apigee-mart@$PROJECT_ID.iam.gserviceaccount.com" \
      --role="roles/apigeeconnect.Agent"
  4. apigee-metrics サービス アカウント:
    gcloud iam service-accounts create apigee-metrics \
      --display-name="apigee-metrics" \
      --project=$PROJECT_ID
    gcloud projects add-iam-policy-binding $PROJECT_ID \
      --member="serviceAccount:apigee-metrics@$PROJECT_ID.iam.gserviceaccount.com" \
      --role="roles/monitoring.metricWriter"
  5. apigee-runtime サービス アカウント:
    gcloud iam service-accounts create apigee-runtime \
      --display-name="apigee-runtime" \
      --project=$PROJECT_ID
  6. apigee-synchronizer サービス アカウント:
    gcloud iam service-accounts create apigee-synchronizer \
      --display-name="apigee-synchronizer" \
      --project=$PROJECT_ID
    gcloud projects add-iam-policy-binding $PROJECT_ID \
      --member="serviceAccount:apigee-synchronizer@$PROJECT_ID.iam.gserviceaccount.com" \
      --role="roles/apigee.synchronizerManager"
  7. apigee-udca サービス アカウント:
    gcloud iam service-accounts create apigee-udca \
      --display-name="apigee-udca" \
      --project=$PROJECT_ID
    gcloud projects add-iam-policy-binding $PROJECT_ID \
      --member="serviceAccount:apigee-udca@$PROJECT_ID.iam.gserviceaccount.com" \
      --role="roles/apigee.analyticsAgent"
  8. apigee-watcher サービス アカウント:
    gcloud iam service-accounts create apigee-watcher \
      --display-name="apigee-watcher" \
      --project=$PROJECT_ID
    gcloud projects add-iam-policy-binding $PROJECT_ID \
      --member="serviceAccount:apigee-watcher@$PROJECT_ID.iam.gserviceaccount.com" \
      --role="roles/apigee.runtimeAgent"

gcloud を使用してサービス アカウントを作成する方法の詳細については、サービス アカウントを作成するをご覧ください。

これで、サービス アカウントが作成され、Apigee ハイブリッド コンポーネントに必要なロールが割り当てられました。次は、ハイブリッド Ingress ゲートウェイに必要な TLS 証明書を作成します。

次のステップ

1 2 3 4 (次)ステップ 5: TLS 証明書を作成する 6 7 8 9 10 11