このガイドでは、App Lifecycle Manager テナントを使用してデプロイされたユニットを整理する方法と、リソースを分離して管理するためにリソースを個別のテナント プロジェクトにデプロイする方法について説明します。
テナントとテナント プロジェクトの概要については、テナントとテナント プロジェクトをご覧ください。
始める前に
テナント プロジェクトまたはリソースを作成する前に:
- Terraform 構成と Artifact Registry リポジトリを作成し、SaaS アプリケーションを含むアーティファクトをプロデューサー プロジェクトに作成します。SaaS サービスの設定方法については、 App Lifecycle Manager でサービス インスタンスをデプロイするをご覧ください。
App Lifecycle Manager で必要な API を有効にします。
API を有効にするために必要なロール
API を有効にするには、
serviceusage.services.enable権限を含む Service Usage 管理者 IAM ロール(roles/serviceusage.serviceUsageAdmin)が必要です。詳しくは、ロールを付与する方法をご覧ください。必要なサービス アカウントと Identity and Access Management ロールがプロデューサー プロジェクト内で付与されていることを確認します。 これには、ユーザーが作成したサービス アカウントと、プロデューサー プロジェクトの
service-PROJECT-NUMBER@gcp-sa-saasservicemgmt.iam.gserviceaccount.comアカウントに付与された権限が含まれます。
テナント プロジェクトを設定する
テナントのリソースを個別のプロジェクトにプロビジョニングすると、リソース、IAM ポリシー、割り当て、ネットワーク構成がテナントごとに分離されるため、1 つのテナントでの違反や構成ミスが他のテナントに影響する可能性が低くなります。
必要なもの:
- 1 つのプロデューサー プロジェクト
テナントごとに 1 つのテナント プロジェクト。
コンソール
コンソールを使用してテナント プロジェクトとプロデューサー プロジェクトを設定するには: Google Cloud
- プロデューサー プロジェクトと、テナントごとに 1 つのテナント プロジェクトを作成します。
- テナント プロジェクトとプロデューサー プロジェクトで課金を有効にします。
テナント プロジェクトで App Lifecycle Manager で必要な API を有効にします。
API を有効にするために必要なロール
API を有効にするには、
serviceusage.services.enable権限を含む Service Usage 管理者 IAM ロール(roles/serviceusage.serviceUsageAdmin)が必要です。詳しくは、ロールを付与する方法をご覧ください。テナント プロジェクトに、必要な権限を持つ動作用のサービス アカウントがあることを確認します。
詳細については、App Lifecycle Manager サービス アカウントをご覧ください。
テナント プロジェクトとプロデューサー プロジェクトの設定が完了しました。プロデューサー プロジェクトとテナント プロジェクトを作成して課金を有効にしたら、テナント リソースを作成してユニットをテナントに関連付けることができます。
gcloud
Google Cloud CLI を使用してプロデューサー プロジェクトとテナント プロジェクトを設定するには:
プロデューサー プロジェクトと、テナントごとに 1 つのテナント プロジェクトを作成します。
gcloud projects create PRODUCER_PROJECT_ID --name="SaaS producer project" [--folder=folder-id] gcloud projects create TENANT_PROJECT_ID --name="SaaS tenant A project" [--folder=folder-id]次のように置き換えます。
PRODUCER_PROJECT_ID: プロデューサー プロジェクト ID を表す文字列識別子。TENANT_PROJECT_ID: テナント プロジェクト ID を表す文字列識別子 。
テナント プロジェクトとプロデューサー プロジェクトの課金を有効にします。
gcloud beta billing projects link PRODUCER_PROJECT_ID --billing-account=BILLING_ACCOUNT_ID gcloud beta billing projects link TENANT_PROJECT_ID --billing-account=BILLING_ACCOUNT_ID次のように置き換えます。
PRODUCER_PROJECT_ID: プロデューサー プロジェクト ID を表す文字列識別子。TENANT_PROJECT_ID: テナント プロジェクト ID を表す文字列識別子 。BILLING_ACCOUNT_ID: 指定したプロジェクトに関連付ける請求先アカウントの ID。
各テナント プロジェクトに必要な Identity and Access Management ロールを動作用のサービス アカウントに付与します。
gcloud projects add-iam-policy-binding TENANT_PROJECT_ID \ --member='serviceAccount:SERVICE_ACCOUNT@PRODUCER_PROJECT_ID.iam.gserviceaccount.com' \ --role=ROLE次のように置き換えます。
TENANT_PROJECT_ID: テナント プロジェクト ID を表す文字列識別子 。PRODUCER_PROJECT_ID: プロデューサー プロジェクト ID を表す文字列識別子。SERVICE_ACCOUNT: 指定したプロジェクト内でロールを付与するサービス アカウント。ROLE: 付与する Identity and Access Management ロール。指定したサービス アカウントに付与するロールごとに
gcloud projects add-iam-policy-bindingを実行する必要があります(--role='roles/compute.admin'、例)。
テナント プロジェクトとプロデューサー プロジェクトの設定が完了しました。プロデューサー プロジェクトとテナント プロジェクトを作成して課金を有効にしたら、テナント リソースを作成してユニットをテナントに関連付けることができます。
テナント リソースを作成する
SaaS サービスにテナント リソースを作成して顧客を表します。
コンソールで、[App Lifecycle Manager] > [テナント] に移動します。 Google Cloud
[作成] をクリックします。
[テナント名] ボックスに、テナント リソースの名前を入力します。
省略可: [顧客リソース] ボックスに、統合用に顧客が定義した設定を含むコンシューマー リソースを指定します。
[SaaS サービス] ボックスで、テナントに関連付ける SaaS サービスを選択します。
[リージョン] プルダウンで、テナント メタデータを保存するリージョンを選択します。
省略可: [ラベルを追加] をクリックして、Key-Value ペアのラベルをテナントに追加します。
[作成] をクリックしてテナント リソースを作成します。
テナント リソースの作成が完了しました。
ユニットをテナントに関連付ける
テナントを作成してユニットをデプロイしたら、それらを相互にリンクできます。 この関連付けは、主に組織タグとして機能し、どのユニットがどのテナントに属しているかを整理するのに役立ちます。
ユニットのデプロイの詳細については、App Lifecycle Manager を使用して VM をデプロイするをご覧ください。
ユニットをテナントに関連付けるには:
コンソールで、[App Lifecycle Manager] > [テナント] に移動します。 Google Cloud
ユニットに関連付けるテナントの名前をクリックします。
[編集] をクリックします。
[関連付けられたユニット] セクションで、[ユニットを追加] をクリックします。
このテナントに関連付けるユニットを選択します。
[完了] をクリックします。
[保存] をクリックします。
選択したユニットが、指定したテナントに関連付けられます。
テナント プロジェクト変数を使用して新しいユニットをプロビジョニングする
テナントに関連付けられたユニットをプロビジョニングする場合は、tenant_project_id 変数を指定する必要があります。
コンソールで、[App Lifecycle Manager] > [ユニット] に移動します。 Google Cloud
ユニットの種類に関連付けられた新しいユニットを作成します。
[プロビジョニング] をクリックします。
テナント ユニットにプロビジョニングするリリース を選択します。
テナント プロジェクトで権限を付与した動作用のサービス アカウント を選択します。最小権限の原則に従い、管理対象のリソースに必要なロールのみを付与する必要があります。
[入力変数] セクションで、次の操作を行います。
- Terraform 構成
variables.tfファイルで定義したとおりにtenant_project_id変数が一覧表示されていることを確認します。 - [テナント プロジェクト ID] ボックスに、テナント プロジェクトの名前を入力します。
- Terraform 構成で定義された入力変数を指定します。Terraform 構成で他の変数を定義していない場合は、この手順をスキップします。
- Terraform 構成
[プロビジョニング] をクリックします。
App Lifecycle Manager は、指定された動作用のサービス アカウントを使用して Infrastructure Manager
をトリガーします。Infrastructure Manager は tenant_project_id 変数を読み取り、そのテナント
プロジェクト内に VM を作成します。
新しいリリースでユニットを再プロビジョニングする
既存のユニットを新しいリリースで再プロビジョニングする場合は、tenant_project_id 変数を指定する必要があります。
コンソールで、[App Lifecycle Manager] > [ユニット] に移動します。 Google Cloud
ユニットの種類に関連付けられたユニットを選択します。
[プロビジョニングを編集] をクリックします。
更新された Terraform 構成で作成したリリース を選択します。
テナント プロジェクトで権限を付与した動作用のサービス アカウント を選択します。最小権限の原則に従い、管理対象のリソースに必要なロールのみを付与する必要があります。
[入力変数] セクションで、次の操作を行います。
- Terraform 構成
variables.tfファイルで定義したとおりにtenant_project_id変数が一覧表示されていることを確認します。 - [テナント プロジェクト ID] ボックスに、テナント プロジェクトの名前を入力します。
- Terraform 構成で定義された入力変数を指定します。Terraform 構成で他の変数を定義していない場合は、この手順をスキップします。
- Terraform 構成
[更新] をクリックします。
App Lifecycle Manager は、指定された動作用のサービス アカウントを使用して Infrastructure Manager
をトリガーします。Infrastructure Manager は tenant_project_id 変数を読み取り、そのテナント
プロジェクト内に VM を作成します。
次のステップ
- ユニット間の依存関係の管理について学習する。
- 変数と変数マッピングの使用方法について学習する。
- サービス アカウントに必要な権限を確認する。