テナント プロジェクトとリソースを設定する

このガイドでは、SaaS ランタイム テナントを使用してデプロイされたユニットを整理する方法と、リソースを分離して管理するために、リソースを個別のテナント プロジェクトにデプロイする方法について説明します。

テナントとテナント プロジェクトの概要については、テナントとテナント プロジェクトをご覧ください。

始める前に

テナント プロジェクトまたはリソースを作成する前に、次のことを行います。

  1. Terraform 構成と Artifact Registry リポジトリを作成し、プロデューサー プロジェクトに SaaS アプリケーションを含むアーティファクトを作成します。SaaS サービスの設定方法については、SaaS ランタイムを使用してサービス インスタンスをデプロイするをご覧ください。
  2. SaaS ランタイムに必要な API を有効にします。

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the APIs

  3. プロデューサー プロジェクト内で必要なサービス アカウントと Identity and Access Management ロールが付与されていることを確認します。これには、ユーザーが作成したサービス アカウントと、プロデューサー プロジェクトの service-PROJECT-NUMBER@gcp-sa-saasservicemgmt.iam.gserviceaccount.com アカウントに付与された権限が含まれます。

テナント プロジェクトを設定する

テナントのリソースを個別のプロジェクトにプロビジョニングすると、リソース、IAM ポリシー、割り当て、ネットワーク構成がテナントごとに分離されるため、1 つのテナントの違反や構成ミスが他のテナントに影響する可能性が低くなります。

必要なもの:

  • 1 つのプロデューサー プロジェクト
  • テナントごとに 1 つのテナント プロジェクト。

コンソール

Google Cloud コンソールを使用してテナント プロジェクトとプロデューサー プロジェクトを設定するには:

  1. プロデューサー プロジェクトと、テナントごとにテナント プロジェクトを作成します
  2. テナント プロジェクトとプロデューサー プロジェクトで課金を有効にします
  3. テナント プロジェクトで SaaS ランタイムに必要な API を有効にします。

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the APIs

  4. テナント プロジェクトに、必要な権限を持つアクチュエーション サービス アカウントがあることを確認します。

    詳細については、SaaS ランタイム サービス アカウントをご覧ください。

テナント プロジェクトとプロデューサー プロジェクトの設定が完了しました。プロデューサー プロジェクトとテナント プロジェクトの課金を作成して有効にすると、テナント リソースを作成して、ユニットをテナントに関連付けることができます。

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 を表す文字列識別子。
  2. テナント プロジェクトとプロデューサー プロジェクトの課金を有効にします。

     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。
  3. 各テナント プロジェクトに必要な 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 サービスにテナント リソースを作成して、顧客を表します。

  1. Google Cloud コンソールで、[SaaS Runtime] > [テナント] に移動します。

    [テナント] に移動

  2. [作成] をクリックします。

  3. [テナント名] ボックスに、テナント リソースの名前を入力します。

  4. 省略可: [顧客リソース] ボックスで、統合用にコンシューマーが定義した設定を含むコンシューマー リソースを指定します。

  5. [SaaS サービス] ボックスで、テナントに関連付ける SaaS サービスを選択します。

  6. [リージョン] プルダウンで、テナント メタデータが保存されるリージョンを選択します。

  7. 省略可: [ラベルを追加] をクリックして、Key-Value ペアのラベルをテナントに追加します。

  8. [作成] をクリックして、テナント リソースを作成します。

テナント リソースが正常に作成されました。

ユニットをテナントに関連付ける

テナントを作成してユニットをデプロイしたら、それらをリンクできます。この関連付けは、主にどのユニットがどのテナントに属しているかを整理するのに役立つ組織タグとして機能します。

ユニットのデプロイの詳細については、SaaS ランタイムを使用して VM をデプロイするをご覧ください。

ユニットをテナントに関連付けるには:

  1. Google Cloud コンソールで、[SaaS Runtime] > [テナント] に移動します。

    [テナント] に移動

  2. ユニットに関連付けるテナントの名前をクリックします。

  3. [編集] をクリックします。

  4. [関連付けられたユニット] セクションで、[ユニットを追加] をクリックします。

  5. このテナントに関連付けるユニットを選択します。

  6. [完了] をクリックします。

  7. [保存] をクリックします。

選択したユニットが、指定したテナントに関連付けられます。

テナント プロジェクト変数を使用して新しいユニットをプロビジョニングする

テナントに関連付けられたユニットをプロビジョニングする場合は、tenant_project_id 変数を指定する必要があります。

  1. Google Cloud コンソールで、[SaaS ランタイム] > [ユニット] に移動します。

    [ユニット] に移動

  2. ユニットの種類に関連付けられた新しいユニットを作成します。

  3. [PROVISION] をクリックします。

  4. [リリース] を選択して、テナント ユニットにプロビジョニングします。

  5. テナント プロジェクトで権限を付与したアクチュエーション サービス アカウントを選択します。最小権限の原則に従い、管理対象のリソースに必要なロールのみを付与する必要があります。

  6. [入力変数] セクションで、次の操作を行います。

    1. Terraform 構成の variables.tf ファイルで定義したとおりに tenant_project_id 変数がリストされていることを確認します。
    2. [テナント プロジェクト ID] ボックスに、テナント プロジェクトの名前を入力します。
    3. Terraform 構成で定義された入力変数を指定します。Terraform 構成で他の変数を定義していない場合は、この手順をスキップします。
  7. [PROVISION] をクリックします。

SaaS ランタイムは、指定された作動サービス アカウントを使用して Infrastructure Manager をトリガーします。Infrastructure Manager は tenant_project_id 変数を読み取り、そのテナント プロジェクト内に VM を作成します。

新しいリリースでユニットを再プロビジョニングする

新しいリリースで既存のユニットを再プロビジョニングする場合は、tenant_project_id 変数を指定する必要があります。

  1. Google Cloud コンソールで、[SaaS ランタイム] > [ユニット] に移動します。

    [ユニット] に移動

  2. ユニットの種類に関連付けられているユニットを選択します。

  3. [Edit Provisioning] をクリックします。

  4. 更新された Terraform 構成で作成したリリースを選択します。

  5. テナント プロジェクトで権限を付与したアクチュエーション サービス アカウントを選択します。最小権限の原則に従い、管理対象のリソースに必要なロールのみを付与する必要があります。

  6. [入力変数] セクションで、次の操作を行います。

    1. Terraform 構成の variables.tf ファイルで定義したとおりに tenant_project_id 変数がリストされていることを確認します。
    2. [テナント プロジェクト ID] ボックスに、テナント プロジェクトの名前を入力します。
    3. Terraform 構成で定義された入力変数を指定します。Terraform 構成で他の変数を定義していない場合は、この手順をスキップします。
  7. [更新] をクリックします。

SaaS ランタイムは、指定された作動サービス アカウントを使用して Infrastructure Manager をトリガーします。Infrastructure Manager は tenant_project_id 変数を読み取り、そのテナント プロジェクト内に VM を作成します。

次のステップ