ユニットをテナントに関連付ける
このクイックスタートでは、デプロイされた VM ユニットをテナント リソースに関連付け、テナントが所有する専用のテナント プロジェクトに VM をプロビジョニングするように SaaS サービスを変更します。
このアプローチにより、リソースの分離が強化され、テナントごとにリソースを個別に管理し、SaaS サービスに優れたセキュリティとコンプライアンスを提供できます。
App Lifecycle Manager を使用して MySQL インスタンスをデプロイするクイックスタートのシナリオを基に、デプロイされた VM ユニットをテナント リソースに関連付け、テナントが所有する専用プロジェクトに VM をプロビジョニングするように変更します。
- App Lifecycle Manager でテナント リソースを作成します。
- VM をテナント リソースに関連付けます。
- App Lifecycle Manager と Terraform 構成を構成して、リソースを別のテナント プロジェクトにデプロイします。
- クロス プロジェクトのデプロイ時に発生する一般的な権限と API の有効化の問題に対処します。
このクイックスタートを完了すると、複数のテナントを含む SaaS サービスの基盤が作成されます。この基盤では、テナントを作成してユニットに関連付けることで、テナント レベルの構成とポリシーを設定できます。
始める前に
テナントを作成したり、テナントをユニットに関連付けたりする前に、App Lifecycle Manager エコシステムの基本を理解し、SaaS サービスを作成する必要があります。
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
Verify that billing is enabled for your Google Cloud project.
App Lifecycle Manager を使用して MySQL インスタンスをデプロイする。これには、Terraform 構成、Artifact Registry リポジトリ、SaaS サービス、ユニットの種類、ユニット、コンポーネント(
terraform-files.zipを含む)の作成が含まれます。- クイックスタートの始める前にセクションに記載されている API が、プロデューサー プロジェクトで有効になっていることを確認します。
- プロデューサー プロジェクト内で必要なサービス アカウントと IAM ロールが付与されていることを確認します。これには、ユーザーが作成したサービス アカウントと、プロデューサー プロジェクトの
service-PROJECT-NUMBER@gcp-sa-saasservicemgmt.アカウントに付与された権限が含まれます。
プロデューサー プロジェクトとテナント プロジェクトは、テナント リソースを作成して関連付ける前に作成する必要があります。詳細については、テナント プロジェクトを設定するをご覧ください。
テナント リソースを作成して関連付ける
テナントを使用してユニット リソースをグループ化できます。顧客を表すプロデューサー プロジェクトの SaaS サービスにテナント リソースを作成します。
Google Cloud コンソールで、[App Lifecycle Manager] > [テナント] に移動します。
[作成] をクリックします。
[テナントを作成] ページの [テナント名] ボックスに「
vm-quickstart-tenant」と入力します。[SaaS サービス] ボックスで、
vm-quickstart-saas-offeringを選択します。[リージョン] プルダウンで、
us-central1を選択します。[ユニットを追加] をクリックします。[新しいユニット] セクションが表示されます。
[単位] プルダウンで、
projects/YOUR-PROJECT-NAME/locations/us-central1/units/vm-quickstart-unit単位を選択します。[完了] をクリックして、
vm-quickstart-unitリソースをvm-quickstart-tenantリソースに関連付けます。[作成] をクリックして、テナント リソースを作成します。
vm-quickstart-tenantリソースを作成し、vm-quickstart-unitリソースに関連付けました。この関連付けは、主にGoogle Cloud コンソール内の組織タグとして機能し、どのユニットがどのテナントに属しているかを特定するのに役立ちます。
テナント リリースを作成する
Google Cloud コンソールで、[App Lifecycle Manager] > [リリース] に移動します。
[リリース] ページで、[作成] をクリックします。
[リリースを作成] ページの [リリース名] ボックスに「
vm-quickstart-tenant-release」と入力します。[単位の種類] ボックスで、[
vm-quickstart-unit-kind] を選択します。[次へ] をクリックします。[ブループリントの選択] ステップで、[Artifact Registry から既存のイメージを選択する] 切り替えをクリックします。
[ストア ブループリント] ステップで、[参照] をクリックし、
vm-quickstart-tenant-blueprintに関連付けられたアーティファクトを選択します。[次へ] をクリックします。[作成] をクリックします。
vm-quickstart-tenant-releaseリソースが正常に作成されました。
テナント プロジェクトを作成してユニットをデプロイする
App Lifecycle Manager を使用して MySQL インスタンスをデプロイするクイックスタートでは、SaaS サービス構成を含む同じプロジェクトに App Lifecycle Manager リソースをプロビジョニングします。
このクイックスタートでは、リソース プロビジョニングをプロデューサー プロジェクトではなく、テナント プロジェクトに転送します。
ユニットのプロビジョニング時に、変更された変数 tenant_project_id と tenant_project_number を渡す必要があります。
terraform-vm.zipファイルをデプロイするテナント プロジェクトを作成します。gcloud projects create quickstart-tenant-project --name="SaaS Tenant A Project"テナント プロジェクトで API を有効にして IAM ロールを付与します。テナント プロジェクトにユニットをデプロイするには、Compute Engine API を有効にして、テナント プロジェクトに IAM ロールを付与する必要があります。
テナント プロジェクトで API を有効にする
Google Cloud コンソールを使用して、テナント プロジェクトで Compute Engine API を有効にします。
プロジェクト セレクタに移動します。
[プロジェクトを選択] をクリックします。
[
quickstart-tenant-project] を選択します。Compute Engine API を有効にします。
API を有効にするために必要なロール
API を有効にするには、
serviceusage.services.enable権限が必要です。プロジェクトを作成した場合は、オーナーロール(roles/owner)を介してこの権限がすでに付与されている可能性があります。それ以外の場合は、Service Usage 管理者ロール(roles/serviceusage.serviceUsageAdmin)を介してこの権限を取得できます。ロールを付与する方法をご覧ください。プロジェクトで次のロール(複数の場合あり)が割り当てられていることを確認します。 roles/compute.admin
ロールを確認する
-
Google Cloud コンソールで、[IAM] ページに移動します。
IAM に移動 - プロジェクトを選択します。
-
[プリンシパル] 列で、自分または自分が所属するグループの行をすべて確認します。所属するグループについては、管理者にお問い合わせください。
- 自分のメールアドレスを含む行の [ロール] 列で、ロールのリストに必要なロールが含まれているかどうか確認します。
ロールを付与する
-
Google Cloud コンソールで、[IAM] ページに移動します。
IAM に移動 - プロジェクトを選択します。
- [ アクセスを許可] をクリックします。
-
[新しいプリンシパル] フィールドに、ユーザー ID を入力します。 これは通常、Workforce Identity プール内のユーザーの ID です。詳細については、IAM ポリシーで Workforce プールユーザーを表すをご覧いただくか、管理者にお問い合わせください。
- [ロールを選択] をクリックし、ロールを検索します。
- 追加のロールを付与するには、 [別のロールを追加] をクリックして各ロールを追加します。
- [保存] をクリックします。
-
テナント プロジェクト変数を使用してユニットをプロビジョニングする
プロデューサー プロジェクトから、テナント プロジェクトの入力変数を使用して新しいユニットをプロビジョニングします。
プロジェクト セレクタに移動します。
[プロジェクトを選択] をクリックします。
プロデューサー プロジェクトを選択します。
Google Cloud コンソールで、[App Lifecycle Manager] > [Units] に移動します。
vm-quickstart-unitリソースを選択します。[PROVISION] をクリックします。
vm-quickstart-tenant-releaseリソースを選択します。テナント プロジェクトで権限を付与したアクチュエーション サービス アカウントを選択します。
[入力変数] セクションで、次の操作を行います。
tenant_project_id変数は、variables.tfで定義したとおりに表示されます。- [テナント プロジェクト ID] ボックスに「
quickstart-tenant-project」と入力します。
[PROVISION] をクリックします。
App Lifecycle Manager は、指定された動作用のサービス アカウントを使用して Infrastructure Manager をトリガーします。Infrastructure Manager は tenant_project_id 変数を読み取り、そのテナント プロジェクト内に VM を作成します。
クリーンアップ
このページで使用したリソースについて、 Google Cloud アカウントに課金されないようにするには、次の手順を実施します。
- Google Cloud コンソールで [リソースの管理] ページに移動します。
- プロジェクト リストで、削除するプロジェクトを選択し、[削除] をクリックします。
- プロンプトでプロジェクト ID を入力し、[シャットダウン] をクリックします。
次のステップ
- 詳しくは、テナント プロジェクトとリソースを設定する方法をご覧ください。
- 高度な SaaS サービス オーケストレーション(自動リソース プロビジョニングを含む)には、変数と変数マッピングを使用します。