サービス アカウントについて

サービス アカウントは Google Cloud の特別なアカウントで、このアカウントを使用すると、システムのコンポーネントやアプリケーションによる相互のやり取りや、他の API とのやり取りが可能になります。Google Cloud の詳細については、Google Cloud サービスについてをご覧ください。

ハイブリッドでは、Google Cloud サービス アカウントを使用して次のようなさまざまなタスクを行います。

  • ログと指標データを送信する
  • トレース リクエストを pull する
  • 管理 API リクエストで API ゲートウェイに接続する
  • バックアップを実行する
  • プロキシ バンドルをダウンロードする

1 つのサービス アカウントでこれらすべての操作を行うことができますが、Apigee では複数のサービス アカウントを作成して、それぞれのアカウントに特定のタスクと独自の権限セットを割り当てることをおすすめします。これにより、アクセスを切り分け、各サービス アカウントのスコープとアクセス権を制限して、セキュリティを強化できます。ユーザー アカウントと同様に、1 つ以上のロールをサービス アカウントに割り当てることで、これらの権限は適用されます。

Apigee ハイブリッドを正常に機能させるには、複数のサービス アカウントを作成する必要があります。サービス アカウントごとに、その機能を実行できるロールを付与する必要があります(複数のロールが必要になることもあります)。

次の表に、ハイブリッド コンポーネントのサービス アカウント示します。

コンポーネント* ロール 基本インストールでの要否 説明
apigee-cassandra Storage オブジェクト管理者
roles/storage.objectAdmin
Cassandra に Cloud Storage へのバックアップを可能にします(バックアップと復元を参照)。
apigee-distributed-trace Cloud Trace エージェント
roles/cloudtrace.agent
ハイブリッド ランタイム プレーンが Google Cloud TraceJaeger などのシステムとの互換性がある形式で分散リクエスト トレースに参加できるようにします。
apigee-logger ログ書き込み
roles/logging.logWriter
ロギングデータの収集を可能にします(ロギングを参照)。クラスタが GKE 以外にインストールされている場合にのみ必要です。
apigee-mart Apigee Connect エージェント
roles/apigeeconnect.Agent
MART サービスの認証を可能にします。Apigee Connect エージェント ロールにより、Apigee Connect プロセスと安全に通信を行えるようにします(Apigee Connect の使用を参照)。
apigee-metrics モニタリング指標の書き込み
roles/monitoring.metricWriter
指標データの収集を可能にします(指標収集の概要を参照)。
apigee-org-admin Apigee 組織管理者
roles/apigee.admin
ユーザーが getSyncAuthorization APIsetSyncAuthorization API を呼び出せるようにします。Apigee 組織管理者は、ランタイム プレーンに対する外部ロールであるため、create-service-account ツールでこのロールをサービス アカウントに割り当てることはできません。
apigee-synchronizer Apigee Synchronizer 管理者
roles/apigee.synchronizerManager
Synchronizer がプロキシ バンドルと環境構成データをダウンロードできるようにします。また、トレース機能も有効にします。
apigee-udca Apigee Analytics エージェント
roles/apigee.analyticsAgent
トレース、分析、デプロイのステータス データを管理プレーンに転送できるようにします。
apigee-watcher Apigee ランタイム エージェント
roles/apigee.runtimeAgent
Apigee Watcher では、synchronizer から組織の仮想ホスト関連の変更を pull し、istio Ingress を構成するために必要な変更が行われます。
* この名前は、ダウンロードされたサービス アカウント キーのファイル名で使用されます。

この表にあるサービス アカウントを作成するだけでなく、秘密鍵もダウンロードします。後でこれらの鍵を使用してアクセス トークンを生成し、Apigee API にアクセスします。

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

サービス アカウントを作成するには、次に挙げる方法があります。

それぞれについて、以降のセクションで詳しく説明します。

サービス アカウント作成ツールを使用する

create-service-account ツール(apigeectl のダウンロードと展開後に使用可能)は、ハイブリッド コンポーネント固有のサービス アカウントを作成し、必要なロールを割り当てます。また、サービス アカウント キーを自動的にダウンロードし、ローカルマシンの指定ディレクトリに保存します。

create-service-account ツールでサービス アカウントを作成するには:

  1. apigeectl のダウンロードとインストールの説明に従って、apigeectl をダウンロードして展開します(また行っていない場合)。
  2. サービス アカウント キーを格納するディレクトリを作成します。例:
    mkdir ./service-accounts
  3. 次のコマンドを実行します。
    ./tools/create-service-account apigee-metrics ./service-accounts
    ./tools/create-service-account apigee-synchronizer ./service-accounts
    ./tools/create-service-account apigee-distributed-trace ./service-accounts
    ./tools/create-service-account apigee-udca ./service-accounts
    ./tools/create-service-account apigee-mart ./service-accounts
    ./tools/create-service-account apigee-cassandra ./service-accounts
    ./tools/create-service-account apigee-logger ./service-accounts

    これらのコマンドを実行すると、必要なアカウントのほとんどが作成され、そのアカウントの鍵が ./service-accounts ディレクトリに保存されます。

    上記のコマンドが失敗した場合は、鍵ファイルを保存した既存のディレクトリを参照していることを確認してください。

    create-service-account の使用方法については、create-service-account のリファレンスをご覧ください。

Google Cloud コンソールを使用する

Google Cloud Console を使用してサービス アカウントを作成できます。

Google Cloud Console でサービス アカウントを作成するには:

  1. Google Cloud コンソールを開き、ステップ 1: Google Cloud アカウントを作成するで作成したユーザー アカウントでログインします。
  2. ステップ 2: Google Cloud プロジェクトを作成するで作成したプロジェクトを選択します。
  3. [IAM と管理] > [サービス アカウント] を選択します。

    コンソールに [サービス アカウント] ビューが表示されます。このビューには、プロジェクトに作成されているサービス アカウントの一覧が表示されます(ほとんどの場合、表示されるアカウントはありませんが、プロジェクトの作成方法によっては、デフォルトのサービス アカウントが表示されることもあります)。

  4. 新しいサービス アカウントを作成するには、ビューの上部にある [+ サービス アカウントを作成] をクリックします。

    [サービス アカウントの詳細] ビューが表示されます。

  5. [サービス アカウント名] フィールドに、サービス アカウントの名前を入力します。

    Apigee では、サービス アカウントのロールを反映した名前を使用することをおすすめします。サービス アカウントの名前には、そのサービス アカウントを使用するコンポーネントと同じ名前に設定することもできます。たとえば、ログ書き込みサービス アカウントの名前を apigee-logger に設定します。

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

    名前を入力すると、次の例のように、Google Cloud によってメールアドレスのような固有のサービス アカウント ID が生成されます。

    ID の例: apigee-logger@hybrid-42.iam.gserviceaccount.com

    必要に応じて [サービス アカウントの説明] フィールドに説明を追加できます。説明は、特定のサービス アカウントの用途を把握するのに役立ちます。

  6. [作成] をクリックします。

    Google Cloud によって新しいサービス アカウントが作成され、次の例のように [サービス アカウント権限] ビューが表示されます。

    権限が選択されていないサービス アカウントの作成

    このビューを使用して、新しいサービス アカウントにロールを割り当てます。

  7. [ロールを選択] プルダウン リストをクリックします。
  8. ハイブリッド コンポーネントで使用するサービス アカウントとロールの説明に従って、サービス アカウントのロールを選択します。Apigee のロールがプルダウンリストに表示されない場合は、ページを更新してください。

    たとえば、Logging コンポーネントの場合は、ログ書き込みロールを選択します。

    必要に応じて、テキストを入力してロールのリストを名前でフィルタリングします。たとえば、Apigee のロールのみを一覧表示するには、次の例のようにフィルタ フィールドに Apigee と入力します。

    Apigee に一致するサービス アカウント権限リスト

    サービス アカウントには複数のロールを追加できますが、Apigee では、推奨されるサービス アカウントごとに 1 つのロールのみを使用することをおすすめします。サービス アカウントの作成後にロールを変更するには、Google Cloud の [IAM と管理] パネルを使用します。

  9. [続行] をクリックします。

    Google Cloud に [ユーザーにこのサービス アカウントへのアクセスを許可] ビューが表示されます。

    サービス アカウント ユーザーのロールとサービス アカウント管理者のロールのフィールド、キーの作成ボタン

  10. [鍵の作成(オプション)] の下にある [鍵を作成] をクリックします。

    Google Cloud には、JSON または P12 キーのどちらかをダウンロードする選択肢が用意されています。

    JSON または P12 キータイプを選択

  11. JSON(デフォルト)を選択し、[作成] をクリックします。

    Google Cloud がキーファイルを JSON 形式でローカルマシンに保存し、成功すると、次のような確認メッセージが表示されます。

    .json のファイル名の例

    後でサービス アカウントの鍵の一部を使用して、ハイブリッド ランタイム サービスを構成します。たとえば、ハイブリッド ランタイムを構成する場合、SERVICE_NAME.serviceAccountPath プロパティを使用して、サービス アカウントの鍵の場所を指定します。

    サービス アカウントは、これらの鍵を使用してアクセス トークンを取得した後、トークンを使用しユーザーに代わって Apigee API へのリクエストを送信します(今すぐには使用しませんが、保存した場所だけは覚えておいてください)。

  12. ハイブリッド コンポーネントで使用されるサービス アカウントとロールに記載されてサービス アカウントごとに手順 4~11 を繰り返します(ただし、apigee-mart アカウントは除きます。このアカウントに関連付けられたロールがないため、ロールを割り当てないでください)。

    完了すると、以下のサービス アカウント(デフォルトのサービス アカウントが存在すればそのアカウントも)が表示されるはずです。

    サービス アカウントのリスト。列 1 選択ボックス、列 2 メール、列 3 ステータス、列 4 サービス アカウント名

    Google Cloud コンソールでは、サービス アカウントに 左側にキー、右側に半分の長方形、下線付き アイコンが表示されます。

サービス アカウントの作成後にロールを追加または削除するには、[IAM と管理] ビューを使用します。サービス アカウントのロールは、[サービス アカウント] ビューでは管理できません。

gcloud サービス アカウント作成 API を使用する

サービス アカウントは、Cloud Identity and Access Management API で作成および管理できます。

詳細については、サービス アカウントの作成と管理に関する記事をご覧ください。

トラブルシューティング