create-service-account

create-serice-account の概要

create-serice-account は、Apigee ハイブリッドで提供されるコマンドライン ツールです。Google Cloud サービス アカウントを作成して、個々の Apigee ハイブリッド コンポーネントに承認済みの API 呼び出しを許可するロールを付与し、関連するサービス アカウント キーファイルをダウンロードします。このコマンドによって生成されたサービス アカウント キーファイルは、構成オーバーライド ファイルで使用できます。

create-service-account は、現在の Google Cloud プロジェクトまたは指定したプロジェクトに 1 つ以上のサービス アカウントを作成し、そのサービス アカウントに適切な IAM ロールを割り当て、サービス アカウントの証明書ファイルをローカルマシンのディレクトリにダウンロードします。

サービス アカウントの詳細と本番環境に推奨されるサービス アカウントの一覧については、以下をご覧ください。

Google Cloud コンソールでサービス アカウントを作成することもできます。サービス アカウントの作成と管理に関する記事もご覧ください。

前提条件

ロール

create-service-account ツールを使用するには、gcloud CLI をインストールする必要があります。このユーティリティを呼び出すユーザーには Service Account Admin ロールが必要です。

プロジェクト

サービス アカウントは特定の Google Cloud プロジェクトにバインドされています。create-service-account は、現在のプロジェクトまたは指定したプロジェクトでサービス アカウントを作成し、IAM ロールをそのプロジェクト内のサービス アカウントにバインドします。また、create-service-account はサービス アカウント キーファイルの名前とメールにもプロジェクト ID を含めます。たとえば、プロジェクト名が my-hybrid-project の場合、apigee-logger サービス アカウント キーファイルの名前は my-hybrid-project-apigee-logger.json、サービス アカウントのメールアドレスは apigee-logger@my-hybrid-project.iam.gserviceaccount.com になります。

プロジェクトを指定するには、PROJECT_ID 環境変数を定義するか --project-id フラグを使用します。create-service-accountPROJECT_ID 環境変数の値を読み取ります。環境変数がない場合は --project-id フラグを使用できます。

Cloud プロジェクト ID を指定しなければ、create-service-account は現在の gcloud プロジェクト構成のプロジェクトを使用します。

次のコマンドを使用すると、現在の gcloud プロジェクト構成を確認できます。

gcloud config list project

現在のプロジェクト ID を変更する必要がある場合は、次のコマンドを使用します。

gcloud config set project PROJECT_ID

ここで、PROJECT_ID は現在の Cloud プロジェクトの ID です。Cloud プロジェクトの作成手順については、ステップ 2: Google Cloud プロジェクトを作成するをご覧ください。

ファイルの場所

create-service-account ツールは次のディレクトリにあります。

$APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/tools/

create-service-account ツールが実行可能であることを確認する

create-service-account を実行できることを確認します。Apigee Helm チャートをダウンロードしたばかりの場合は、コマンドライン ツールが実行可能モードになっていない可能性があります。create-service-account がインストールされているディレクトリに移動し、--help で実行することによって、実行可能であることを確認します。

./create-service-account --help

出力に permission denied と表示された場合は、ファイルを実行可能にする必要があります。たとえば、Linux、MacOS、UNIX、Windows エクスプローラでは chmod を、Windows では icacls コマンドを使用します。次に例を示します。

chmod +x ./create-service-account

create-service-account の使用

次の例は、一般的な Apigee ハイブリッド設定タスクに create-service-account を使用する方法を示しています。

本番環境用のサービス アカウントを作成する

ハイブリッドの本番環境では、コンポーネントごとに個別のサービス アカウントを使用することをおすすめします。次のコマンドを使用して、デフォルト名のままデフォルト ディレクトリにハイブリッド コンポーネントのすべてのサービス アカウントを作成します。

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

これにより、次のサービス アカウントが作成されて ./tools/service-accounts ディレクトリに証明書ファイルがダウンロードされます。

サービス アカウント IAM ロール メールアドレス 証明書ファイル
apigee-cassandra roles/storage.objectAdmin apigee-cassandra@PROJECT_ID.iam.gserviceaccount.com PROJECT_ID-apigee-cassandra.json
apigee-logger roles/logging.logWriter apigee-logger@PROJECT_ID.iam.gserviceaccount.com PROJECT_ID-apigee-logger.json
apigee-mart roles/apigeeconnect.Agent apigee-mart@PROJECT_ID.iam.gserviceaccount.com PROJECT_ID-apigee-mart.json
apigee-metrics roles/monitoring.metricWriter apigee-metrics@PROJECT_ID.iam.gserviceaccount.com PROJECT_ID-apigee-metrics.json
apigee-runtime ロールが割り当てられていません apigee-runtime@PROJECT_ID.iam.gserviceaccount.com PROJECT_ID-apigee-runtime.json
apigee-synchronizer roles/apigee.synchronizerManager apigee-synchronizer@PROJECT_ID.iam.gserviceaccount.com PROJECT_ID-apigee-synchronizer.json
apigee-udca roles/apigee.analyticsAgent apigee-udca@PROJECT_ID.iam.gserviceaccount.com PROJECT_ID-apigee-udca.json
apigee-watcher roles/apigee.runtimeAgent apigee-watcher@PROJECT_ID.iam.gserviceaccount.com PROJECT_ID-apigee-watcher.json

非本番環境用の単一のサービス アカウントを作成する

試験運用環境やデモ環境などの非本番環境用に、すべてのコンポーネントに使用できる「apigee-non-prod」という名前の単一のサービス アカウントを作成できます。このサービス アカウントには、前の例でサービス アカウントを割り当てたすべての IAM ロールが含まれています。

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

これにより、apigee-non-prod という名前の単一のサービス アカウントが作成され、./tools/service-accounts ディレクトリに証明書ファイルがダウンロードされます。

サービス アカウント IAM ロール メールアドレス 証明書ファイル
apigee-non-prod roles/apigee.analyticsAgent
roles/apigee.runtimeAgent
roles/apigee.synchronizerManager
roles/apigeeconnect.Agent
roles/logging.logWriter
roles/monitoring.metricWriter
roles/storage.objectAdmin
apigee-non-prod@PROJECT_ID.iam.gserviceaccount.com PROJECT_ID-apigee-non-prod.json

create-service-account syntax

create-service-account ツールは次の構文を使用します。

create-service-account [flags] 

次の表に create-service-account のフラグを示します。

フラグ 説明
--dir
-d
ディレクトリ名 サービス アカウント キーファイルの出力ディレクトリを指定します。ディレクトリが存在しない場合は、create-service-account によって作成されます。ディレクトリがすでに存在する場合、create-service-account は作成したキーファイルと同じ名前の、ディレクトリ内にあるファイルを上書きします。

出力ディレクトリを指定しない場合、create-service-account によって、create-service-account が存在するディレクトリ内の service-accounts/ ディレクトリにサービス アカウント ファイルが書き込まれます。

--env
-e
prod
non-prod
サービス アカウントを本番環境用(prod)に作成するか、非本番環境用(non-prod)に作成するかを指定します。
  • --env prod を指定すると、ハイブリッドの本番環境用にサービス アカウントが作成されます。

    本番環境では、Apigee サービスごとに単一のサービス アカウントを用意することをおすすめします。作成されたロールごとに IAM ロールが関連付けられます。

    --profile で特定のサービス アカウントを指定しなければ、create-service-account -env prod によって Apigee ハイブリッドで使用されるすべてのサービス アカウントが作成されます。

  • --env non-prod を指定すると、すべての IAM ロールがバインドされた単一のサービス アカウントが作成されます。これは、試験運用やデモ インストールなどの非本番環境に役立ちます。

    --name フラグを使用して名前を指定しなければ、サービス アカウントの名前は apigee-non-prod になります。

--env を指定せずに create-service-account を実行すると、prod または non-prod の入力を求められます。

--help
-h
なし ヘルプテキストを表示します。
--name
-n
サービス アカウント名 サービス アカウントの名前を指定します。--name は、--profile または --env non-prod のいずれかで指定された 1 つのサービス アカウントにのみ適用されます。

この名前は、サービス アカウントの証明書ファイル名とメールアドレスにも含まれます。たとえば、create-service-account --profile apigee-logger --name my-logger を実行すると(この例では、現在の Cloud プロジェクトが my-hybrid-project だとします)、create-service-account によって以下の内容のアカウントが作成されます。

  • 名前: my-logger
  • メールアドレス: my-logger@my-hybrid-project.iam.gserviceaccount.com
  • 証明書ファイル: my-hybrid-project-my-logger.json

--name を指定しない場合、create-service-account はサービス アカウントの名前にプロファイルの名前を使用するか、--env non-prod を指定した場合は「apigee-non-prod」を使用します。

‑‑profile
-p
apigee‑cassandra
apigee‑logger
apigee‑mart
apigee‑metrics
apigee‑runtime
apigee‑synchronizer
apigee‑udca
apigee‑watcher
本番環境の場合にのみ、作成するサービス アカウントを 1 つ指定します。

サービス アカウントの名前は --name フラグで指定できます。

--env prod は必須です。

‑‑project‑id
-i
プロジェクト ID サービス アカウントを作成している Google Cloud プロジェクトのプロジェクト ID。

create-service-accountPROJECT_ID 環境変数の値を読み取ります。環境変数がない場合は、--project-id フラグを使用できます。

プロジェクト ID を指定しない場合、create-service-account は現在の gcloud 構成のプロジェクト ID を使用します。

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

Google Cloud コンソールでサービス アカウントを作成することもできます。サービス アカウントの作成と管理に関する記事もご覧ください。