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

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

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

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

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

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

次の表に、ハイブリッド コンポーネントのサービス アカウントを示します。サービス アカウントに指定した名前がデフォルトの名前になります。任意の名前を使用できますが、アカウントの目的に合わせて簡単に識別できる名前にする必要があります。

コンポーネント* ロール 基本インストールでの要否 説明
apigee-cassandra Storage オブジェクト管理者
roles/storage.objectAdmin
バックアップと復元で説明されているように、Cassandra が Cloud Storage へのバックアップを実行できるようにします。
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-runtime ロールは不要 Apigee ハイブリッド ランタイムが Google サービスと、Google Cloud 上のカスタム サービス(Google 認証Google Cloud TraceJaeger など)に接続できるようにします。
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 を構成するために必要な変更が行われます。
*この名前は、ダウンロードされたサービス アカウント キーのファイル名で使用されます。

非本番環境、テスト環境、デモ環境の場合は、代替手段として、すべてのロールが割り当てられている 1 つのサービス アカウントを使用できます。これは、本番環境には推奨されません。

コンポーネント* ロール 基本インストールでの要否 説明
apigee-non-prod Apigee アナリティクス エージェント、Apigee Connect エージェント、Apigee 組織管理者、Apigee ランタイム エージェント、Apigee Synchronizer 管理者、Cloud Trace エージェント、ログ書き込み、モニタリング指標の書き込み、Storage オブジェクト管理者 または、上記のすべての必須 SA デモ環境またはテスト環境の単一のサービス アカウント。インストール、パート 2、ステップ 5: サービス アカウントを作成するをご覧ください。

この表にあるサービス アカウントを作成するだけでなく、各アカウントの秘密鍵を使用してアクセス トークンを生成し、Apigee API にアクセスできるようにします。create-service-account ツールは、サービス アカウントの作成時または更新時に、ローカルマシン上のディレクトリに鍵ファイルを自動的にダウンロードします。

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

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

それぞれについては、次のセクションで説明します。

create-service-account ツールを使用する

create-service-account ツールは、Apigee Hybrid Helm チャートまたは apigeectl をダウンロードして展開すると利用可能になります。create-service-account ツールは次のディレクトリにあります。

  • Helm チャートのインストールの場合:
    APIGEE_HELM_CHARTS_HOME/
    └── apigee-operator/
        └── etc/
            └── tools/
                └── create-service-account
    
  • apigeectl のインストールの場合:
    APIGEECTL_HOME/
    └── tools/
        └── create-service-account
    

    create-service-account によりハイブリッド コンポーネント固有のサービス アカウントが作成され、必要なロールが割り当てられます。このツールは、サービス アカウント キーを自動的にダウンロードして、ローカルマシンに保存します。

    たとえば、次のコマンドでは、本番環境用に個別のサービス アカウントがすべて作成され、各サービス アカウントに適切な IAM ロールが割り当てられて、各アカウントの秘密鍵ファイルが ./service-accounts ディレクトリにダウンロードされます。

    ./tools/create-service-account --env prod

    次のコマンドは、すべてのハイブリッド コンポーネント用のすべての IAM ロールを持つ apigee-non-prod という 1 つのサービス アカウントを作成します。これはデモ環境とテスト環境に適していますが、本番環境には適していません。

    ./tools/create-service-account --env non-prod

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

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

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

    Google Cloud コンソールでサービス アカウントを作成し、サービス アカウントのキーを生成するには、次の手順を行います。

    1. サービス アカウントの作成:

      1. Google Cloud コンソールで、[サービス アカウント] ページに移動します。

        [サービス アカウント] に移動

      2. プロジェクトを選択します。
      3. [ サービス アカウントを作成] をクリックします。
      4. [サービス アカウント名] フィールドに名前を入力します。Google Cloud コンソールでは、この名前に基づいて [サービス アカウント ID] フィールドに値が設定されます。

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

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

      5. 省略可: [サービス アカウントの説明] フィールドに、サービス アカウントの説明を入力します。説明は、特定のサービス アカウントの用途を把握するのに役立ちます。
      6. [作成して続行] をクリックします。
      7. [ロールを選択] フィールドをクリックし、ハイブリッド コンポーネントで使用されるサービス アカウントとロールの説明に従ってロールを選択します。Apigee のロールがプルダウン リストに表示されない場合は、ページを更新してください。

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

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

        サービス アカウントには複数のロールを追加できますが、推奨のサービス アカウントごとに 1 つのロールを使用することをおすすめします。サービス アカウントの作成後にロールを変更するには、Google Cloud コンソールの IAM ページを使用します。

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

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

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

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

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

        JSON と P12 から鍵のタイプを選択

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

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

        .json のファイル名の例

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

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

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

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

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

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

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

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

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

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

      トラブルシューティング