このドキュメントでは、App Hub でホスト プロジェクトを設定し、マルチプロジェクトの境界を作成する方法について説明します。
ホスト プロジェクトは、既存の App Hub ユーザー向けにサポートされている以前のアプリケーション設定モデルです。新しい実装では、アプリ管理用フォルダを設定して、フォルダレベルの境界を定義することをおすすめします。フォルダレベルの境界では、Application Design Center や Gemini Cloud Assist など、アプリケーション中心の Google Cloud 機能の完全なセットにアクセスできます。アプリケーション管理に使用できるモデルの主な違いについては、アプリケーション設定モデルを選択するをご覧ください。
ホスト プロジェクトとサービス プロジェクトの概要
ホスト プロジェクトは、App Hub アプリケーションとしてグループ化するサービスとワークロードを含む他のプロジェクトを接続する Google Cloudプロジェクトです。ホスト プロジェクトに接続するプロジェクトは、サービス プロジェクトと呼ばれます。ホスト プロジェクトとサービス プロジェクトの接続により、複数プロジェクトの境界が定義されます。
ホスト プロジェクトは、自身にアタッチすることで、独自のリソースを直接管理できます。ただし、単一プロジェクトの設定には、単一プロジェクト アプローチを使用することをおすすめします。
始める前に
Google Cloud プロジェクトをホスト プロジェクトとして設定し、サービス プロジェクトを接続する前に、次の手順を完了します。
- ホスト プロジェクトとして使用する Google Cloud プロジェクトを特定します。既存のプロジェクトを使用することも、新しいプロジェクトを作成することもできます。
サービス プロジェクトとしてホスト プロジェクトに接続する Google Cloud プロジェクトを特定します。App Hub アプリケーションに登録するサービスとワークロードを含むすべてのプロジェクトを特定する必要があります。他のプロジェクトのリソースは App Hub に表示されません。サービス プロジェクトには次の要件があります。
- サービス プロジェクトは、ホスト プロジェクトと同じ組織に存在する必要があります。
- サービス プロジェクトは、一度に 1 つのホスト プロジェクトにのみ接続できます。
- ホスト プロジェクトは、独自のリソースを管理するためにサービス プロジェクトとして機能できますが、サービス プロジェクトとして他のホスト プロジェクトに接続することはできません。
必要なロール
サービス プロジェクトをホスト プロジェクトに接続するために必要な権限を取得するには、ホスト プロジェクトと、接続する各サービス プロジェクトに対する App Hub 管理者 (roles/apphub.admin)IAM ロールを付与するよう管理者に依頼してください。ロールの付与については、プロジェクト、フォルダ、組織に対するアクセス権の管理をご覧ください。
必要な権限は、カスタムロールや他の事前定義ロールから取得することもできます。
ホスト プロジェクトを設定する
Google Cloud プロジェクトをホスト プロジェクトとして構成する手順は次のとおりです。
コンソール
Google Cloud コンソールで、プロジェクト選択ツールを使用してプロジェクトを選択します。
App Hub から [概要] ページに移動します。
[アプリハブを設定] をクリックします。
[App Hub を有効にする] ページで、[完全な設定] を選択して、複数プロジェクトの境界を作成します。
プロジェクト名と ID をメモします。この情報はホスト プロジェクトを識別します。これらの値を使用してアクセス権を付与します。
有効にする API のリストを確認します。一部の API には関連費用が発生します。API の費用について詳しくは、こちらをご覧ください。または、各 API をクリックして関連する費用を確認してください。
[続行] をクリックします。
[境界を定義] タブで、プロジェクト情報を確認します。
[プロジェクトを追加] をクリックして、境界にサービス プロジェクトを追加するか、後で追加します。
[続行] をクリックします。
[アクセス権を付与] タブで、プロジェクトの管理者に適切な IAM ロールと権限を選択します。Google Cloud プロダクト全体で推奨されるアプリケーション中心のロールの一覧については、ユーザーにアプリケーション中心のロールを付与するをご覧ください。
[新しいプリンシパル] ボックスに、プロジェクト内のアプリケーション中心のタスクに対する管理者権限を持つユーザー、グループ、またはサービス アカウントを入力します。
[ロールを付与] をクリックし、[完了] をクリックします。
後で、IAM ページからプリンシパルに追加の IAM ロールを付与できます。詳細については、 Google Cloud コンソールを使用して IAM ロールを付与するをご覧ください。
gcloud
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
Google Cloud CLI の最新バージョンがインストールされていることを確認します。
gcloud components updateホスト プロジェクトとして構成する Google Cloud プロジェクトのプロジェクト ID を確認します。
ホスト プロジェクトをコマンドのデフォルト プロジェクトとして設定します。
gcloud config set project HOST_PROJECT_IDHOST_PROJECT_IDは、ホスト プロジェクトとして構成するプロジェクトの ID に置き換えます。ホスト プロジェクトで App Hub API を有効にします。
gcloud services enable apphub.googleapis.com \ --project=HOST_PROJECT_ID
サービス プロジェクトを追加する
サービス プロジェクトをホスト プロジェクトに接続して、アプリケーション管理境界に追加します。
サービス プロジェクトをホスト プロジェクトに接続して複数プロジェクト境界を作成する手順は次のとおりです。
コンソール
Google Cloud コンソールで、プロジェクト選択ツールを使用してホスト プロジェクトを選択します。
App Hub から [境界設定] ページに移動します。
[ プロジェクトを追加] をクリックします。
ホスト プロジェクトに接続して境界に追加するサービス プロジェクトを、次のいずれかの方法で選択します。
- プロジェクトのリストで、サービス プロジェクトとして関連付けるプロジェクトのチェックボックスをオンにします。
- プロジェクト名をフィルタして、チェックボックスをオンにします。
[選択] をクリックします。
[境界内のプロジェクト] テーブルに、選択したサービス プロジェクトが表示されます。添付処理が完了するまでに時間がかかることがあります。
サービス プロジェクトのリストが完全であることを確認します。
gcloud
- サービス プロジェクトとして構成する各 Google Cloud プロジェクトのプロジェクト ID を確認します。
各サービス プロジェクトを接続します。
gcloud apphub service-projects add SERVICE_PROJECT_ID \ --project=HOST_PROJECT_ID次のように置き換えます。
SERVICE_PROJECT_ID: 接続するサービス プロジェクトの ID。HOST_PROJECT_ID: ホスト プロジェクトの ID。
ホスト プロジェクトに接続するサービス プロジェクトごとに、上記の手順を繰り返します。
Terraform
Terraform を使用してサービス プロジェクトをホスト プロジェクトに接続するには、google_apphub_service_project_attachment リソースを使用します。次に例を示します。
resource "google_apphub_service_project_attachment" "example" {
service_project_attachment_id = google_project.service_project.project_id
depends_on = [time_sleep.wait_120s]
}
resource "google_project" "service_project" {
project_id ="project-1"
name = "Service Project"
org_id = "123456789"
deletion_policy = "DELETE"
}
resource "time_sleep" "wait_120s" {
depends_on = [google_project.service_project]
create_duration = "120s"
}
サービス プロジェクトをホスト プロジェクトから接続解除するには、サービス プロジェクトを削除するをご覧ください。
App Hub のロールと権限を割り当てる
ホスト プロジェクトとサービス プロジェクトの App Hub ユーザーに適切な App Hub のロールと権限を付与する手順は次のとおりです。
コンソール
Google Cloud コンソールで、プロジェクト選択ツールを使用してホスト プロジェクトを選択します。
[IAM] ページに移動します。
[ アクセスを許可] をクリックします。アクセス権の付与ペインが開きます。
[新しいプリンシパル] フィールドに、App Hub へのアクセス権を付与するプリンシパルのメールアドレスを入力します。
[ロールを選択] をクリックし、[フィルタ] フィールドに「App Hub」と入力します。
プリンシパルに割り当てる App Hub IAM ロールを選択し、[保存] をクリックします。
ホスト プロジェクトに接続した App Hub サービス プロジェクトごとに、前のプロセスを繰り返して、同じユーザーに同じロールを付与します。
gcloud
ホスト プロジェクトとサービス プロジェクトとして構成した各 Google Cloud プロジェクトのプロジェクト ID を確認します。
ホスト プロジェクトのプリンシパルにアクセス権を付与します。
gcloud projects add-iam-policy-binding HOST_PROJECT_ID \ --member='user:EMAIL_ADDRESS' \ --role='ROLE_NAME'次のように置き換えます。
HOST_PROJECT_ID: ホスト プロジェクトの ID。EMAIL_ADDRESS: ホスト プロジェクトで App Hub へのアクセス権を取得する必要があるプリンシパルのメールアドレス。この値は、username@yourdomainの形式(例:my.user@example.com)にする必要があります。ROLE_NAME: プリンシパルに割り当てる App Hub IAM ロール(例:roles/apphub.admin)。
ホスト プロジェクトにアタッチした App Hub サービス プロジェクトごとに、同じユーザーに同じロールを付与します。
gcloud projects add-iam-policy-binding SERVICE_PROJECT_ID \ --member='user:EMAIL_ADDRESS' \ --role='ROLE_NAME'SERVICE_PROJECT_IDは、アクセス権を付与するサービス プロジェクトの ID に置き換えます。
VPC Service Controls を設定する
VPC Service Controls の境界でアプリケーションを保護するには、アプリケーションを作成する前に、App Hub のホスト プロジェクトとサービス プロジェクトを境界に追加します。詳細については、App Hub で VPC Service Controls を使用するをご覧ください。
省略可: 指標スコープを構成する
Cloud Monitoring でホスト プロジェクト内のアプリケーションのシステム指標を表示するには、接続されたサービス プロジェクトをホスト プロジェクトの指標スコープに追加します。ホスト プロジェクトは時系列データのスコープ対象プロジェクトとして機能し、データのグラフ作成とモニタリングを可能にします。詳細と構成手順については、指標スコープを構成すると API を使用して指標スコープを構成するをご覧ください。
サービス プロジェクトを削除する
ホスト プロジェクトからサービス プロジェクトを接続解除して、アプリケーション管理境界からサービス プロジェクトを削除します。
サービス プロジェクトをホスト プロジェクトから切り離す手順は次のとおりです。
コンソール
Google Cloud コンソールで、プロジェクト選択ツールを使用してホスト プロジェクトを選択します。
App Hub から [境界設定] ページに移動します。
ホスト プロジェクトから切り離して境界から削除するサービス プロジェクトのチェックボックスをオンにします。
[プロジェクトを接続解除] をクリックします。
[境界内のプロジェクト] テーブルが更新され、ホスト プロジェクトに接続されたプロジェクトのみが表示されます。
サービス プロジェクトのリストが更新されていることを確認します。
gcloud
- ホスト プロジェクトから削除するサービス プロジェクトごとに、プロジェクト ID を確認します。
各サービス プロジェクトを削除します。
gcloud apphub service-projects remove SERVICE_PROJECT_ID \ --project=HOST_PROJECT_ID次のように置き換えます。
SERVICE_PROJECT_ID: 削除するサービス プロジェクトの ID。HOST_PROJECT_ID: ホスト プロジェクトの ID。
ホスト プロジェクトから削除するサービス プロジェクトごとに、上記の手順を繰り返します。
サービス プロジェクトをホスト プロジェクトから削除する場合は、以前に指標スコープを構成している場合は、ホスト プロジェクトの指標スコープからも削除することを検討してください。詳細については、指標スコープからプロジェクトを削除するをご覧ください。