サービス アカウントは 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 Trace や Jaeger などのシステムとの互換性がある形式で分散リクエスト トレースに参加できるようにします。 | |
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 API と setSyncAuthorization 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
ツールでサービス アカウントを作成する
- apigeectl のダウンロードとインストールの説明に従って、
apigeectl
をダウンロードして展開します(まだ行っていない場合)。 - サービス アカウント キーを格納するディレクトリを作成します。次に例を示します。
mkdir ./service-accounts
- 次のコマンドを実行します。
./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 コンソールを使用してサービス アカウントを作成できます。
Google Cloud コンソールでサービス アカウントを作成するには:
- Google Cloud コンソールを開き、ステップ 1: Google Cloud アカウントを作成するで作成したユーザー アカウントでログインします。
- ステップ 2: Google Cloud プロジェクトを作成するで作成したプロジェクトを選択します。
- [IAM と管理] > [サービス アカウント] を選択します。
コンソールに [サービス アカウント] ビューが表示されます。このビューには、プロジェクトのサービス アカウントの一覧が表示されます(多くの場合、この段階ではまだアカウントは表示されません。プロジェクトの作成方法によっては、デフォルトのサービス アカウントが表示されていることがあります)。
- 新しいサービス アカウントを作成するには、ビューの上部にある [+ サービス アカウントを作成] をクリックします。
[サービス アカウントの詳細] ビューが表示されます。
- [サービス アカウント名] フィールドに、サービス アカウントの名前を入力します。
Apigee では、サービス アカウントのロールを反映した名前を使用することが推奨されます。サービス アカウントの名前には、そのサービス アカウントを使用するコンポーネントと同じ名前に設定することもできます。たとえば、ログ書き込みサービス アカウントの名前を
apigee-logger
に設定します。サービス アカウントの名前とロールの詳細については、ハイブリッド コンポーネントで使用されるサービス アカウントとロールをご覧ください。
名前を入力すると、次の例のように、Google Cloud でメールアドレスのような固有のサービス アカウント ID が生成されます。
必要に応じて [サービス アカウントの説明] フィールドに説明を追加できます。説明は、特定のサービス アカウントの用途を把握するのに役立ちます。
- [作成] をクリックします。
Google Cloud で新しいサービス アカウントが作成され、次の例のように [サービス アカウント権限] ビューが表示されます。
このビューを使用して、新しいサービス アカウントにロールを割り当てます。
- [ロールを選択] プルダウン リストをクリックします。
- ハイブリッド コンポーネントで使用されるサービス アカウントとロールの説明に従って、サービス アカウントのロールを選択します。Apigee のロールがプルダウン リストに表示されない場合は、ページを更新してください。
たとえば、ロギング コンポーネントの場合は、[ログ書き込み] ロールを選択します。
必要に応じて、テキストを入力してロールのリストを名前でフィルタリングします。たとえば、Apigee のロールのみを一覧表示するには、次の例のようにフィルタ フィールドに
Apigee
と入力します。サービス アカウントには複数のロールを追加できますが、Apigee では、推奨されるサービス アカウントごとに 1 つのロールのみを使用することが推奨されます。サービス アカウントの作成後にロールを変更するには、Google Cloud の [IAM と管理] パネルを使用します。
- [続行] をクリックします。
Google Cloud に [ユーザーにこのサービス アカウントへのアクセスを許可] ビューが表示されます。
- [キーの作成(オプション)] の下にある [キーを作成] をクリックします。
Google Cloud には、JSON または P12 キーのどちらかをダウンロードする選択肢が用意されています。
- JSON(デフォルト)を選択し、[作成] をクリックします。
鍵ファイルが JSON 形式でローカルマシンに保存され、成功すると、次のような確認メッセージが表示されます。
後でサービス アカウント キーをいくつか使用して、ハイブリッド ランタイム サービスを構成します。たとえば、ハイブリッド ランタイムを構成する場合、SERVICE_NAME
.serviceAccountPath
プロパティを使用して、サービス アカウント キーの場所を指定します。サービス アカウントは、これらの鍵を使用してアクセス トークンを取得した後、トークンを使用しユーザーに代わって Apigee API へのリクエストを送信します(今すぐには使用しませんが、保存した場所は覚えておいてください)。
- ハイブリッド コンポーネントで使用されるサービス アカウントとロールに記載されてサービス アカウントごとに手順 4~11 を繰り返します(ただし、
apigee-mart
アカウントは除きます。このアカウントに関連付けられたロールがないため、ロールを割り当てないでください)。完了すると、以下のサービス アカウント(デフォルトのサービス アカウントが存在すればそのアカウントも含む)が表示されるはずです。
Google Cloud コンソールでは、サービス アカウントに アイコンが表示されます。
サービス アカウントの作成後にロールを追加または削除するには、[IAM と管理] ビューを使用します。サービス アカウントのロールは、[サービス アカウント] ビューでは管理できません。
gcloud のサービス アカウント作成 API を使用する
サービス アカウントは、Cloud Identity and Access Management API で作成および管理できます。
詳細については、サービス アカウントの作成と管理に関する記事をご覧ください。