このページでは、自分のプロジェクトに属しているタイプとタイプ プロバイダを他のプロジェクトと共有する方法について説明します。たとえば、事前に承認されているタイプ プロバイダの管理を担当するプロジェクトがあるとします。そのプロジェクトのタイプ プロバイダを他のプロジェクトと共有し、プロジェクトをタイプの中央リポジトリとして使用できるようにしたいと考えています。同様に、この方法を使用して、複合タイプをプロジェクト間で共有することもできます。
アクセスを設定するには、プロジェクトのタイプを所有しているプロジェクト オーナーが、そのタイプを使用するプロジェクトのサービス アカウントに deploymentmanager.typeViewer
役割を付与する必要があります。また、別のプロジェクトのタイプの表示と一覧表示をするユーザーにこの役割を付与する必要もあります。
始める前に
- このガイドのコマンドラインの例を使用する場合、gcloud コマンドライン ツールをインストールします。
- このガイドの API の例を使用する場合は、API アクセスを設定します。
- Deployment Manager のconfigurationsについて読みます。
- タイプについて読みます。
- Identity and Access Management(IAM)ドキュメントを読みます。
制限事項
この機能を使用するにあたっては、次の制限事項があります。
deploymentmanager.typeViewer
役割を付与すると、特定のプロジェクトのすべてのタイプへの権限が付与されます。共有を個々のタイプに限定することはできません。- この役割を
allAuthenticatedUsers
またはallUsers
に付与することはできません。
タイプを使用するためのプロジェクト アクセス権の付与
他のプロジェクトに属するタイプへのアクセス権を付与するには、該当するタイプを所有するプロジェクト オーナーが、そのタイプを使用するプロジェクトの Google API サービス アカウントに deploymentmanager.typeViewer
役割を付与する必要があります。
- タイプを使用するプロジェクトの Google Cloud コンソールで IAM ページに移動します。
- プロンプトが表示されたら、リストからプロジェクトを選択します。
次の形式のメールアドレスが設定された Google API サービス アカウントを見つけます。
[PROJECT_NUMBER]@cloudservices.gserviceaccount.com
上記のメールアドレスをメモします。次に、目的のタイプがあるプロジェクトのプロジェクト オーナーが Google API サービス アカウントに
roles/deploymentmanager.typeViewer
役割を付与します。コンソール
- Google Cloud Console で、共有するタイプが含まれているプロジェクトの IAM ページに移動します。
- プロジェクト リストからプロジェクトを選択します。
- [追加] ボタンをクリックして新しいメンバーを追加します。
- [メンバー] ボックスに、サービス アカウントのメールアドレスを入力します。
- [役割] プルダウンを展開し、[その他] > [Deployment Manager Types Viewer (beta)]を選択します。
- [追加] をクリックしてアカウントを追加します。
gcloud
Google Cloud CLI で、プロジェクトの IAM ポリシーにバインディングを追加します。
gcloud projects add-iam-policy-binding [PROJECT_ID] \ --member serviceAccount:[SERVICE_ACCOUNT_EMAIL] --role roles/deploymentmanager.typeViewer
ここで
[PROJECT_ID]
は、共有するイメージが含まれているプロジェクトの ID です。[SERVICE_ACCOUNT_EMAIL]
は、タイプを共有するプロジェクトのサービス アカウントのメールです。
次に例を示します。
gcloud projects add-iam-policy-binding database-images \ --member serviceAccount:123456789012@cloudservices.gserviceaccount.com \ --role roles/deploymentmanager.typeViewer
API
API では、以下の URL に対して
POST
リクエストを作成します。ここで[PROJECT_ID]
は共有するタイプを含んでいるプロジェクトの ID を示します。POST https://cloudresourcemanager.googleapis.com/v1/projects/$[PROJECT_ID]:setIamPolicy
リクエストの本文には、このプロジェクトに適用するバインドのリストを含めます。
roles/deploymentmanager.typeViewer
役割はバインドの一部になります。次に例を示します。{ "policy": { "version": "0", "bindings": [ { "role": "roles/owner", "members": [ "user:example@gmail.com" ] }, { "role": "roles/deploymentmanager.typeViewer", "members": [ "serviceAccount:123456789012@cloudservices.gserviceaccount.com" ] } ] }
}
構成で他のプロジェクトのタイプを使用する
タイプへのアクセス権が付与されたら、構文を使用して構成でタイプを指定できます。複合タイプの場合:
type: [PROJECT_ID]/composite:[TYPE]
タイプ プロバイダの場合:
type: [PROJECT_ID]/[TYPE]:[COLLECTION]
ここで
[PROJECT_ID]
はタイプを所有しているプロジェクト ID です。[TYPE]
はタイプ プロバイダまたは複合タイプの名前です。[COLLECTION]
は作成する特定のリソースです。これは基本タイプだけに適用されます。基本タイプの指定の詳細については、構成でのタイプ プロバイダの呼び出しをご覧ください。
たとえば、プロジェクト ID が my-type-repository
の場合、次のタイプ仕様を指定します。
resources: - name: a-special-vm type: my-type-repository/composite:autoscaled-igm properties: ...
ユーザーにタイプの一覧表示および表示権限を付与する
プロジェクトのサービス アカウントへの deploymentmanager.typeViewer
役割の付与により、プロジェクトで構成にこれらのタイプをデプロイできますが、ユーザーがこれらのタイプを表示することはできません(一覧表示もできません)。個々のユーザーにタイプを表示する権限を付与する場合、deploymentmanager.typeViewer
役割を各ユーザーに付与する必要があります。
たとえば、Jane が自分のプロジェクト以外のプロジェクトに対して gcloud beta deployment-manager types list --project another-project
コマンドを実行できるようにするには、another-project
のオーナーが Jane に deploymentmanager.typeViewer
役割を付与する必要があります。
gcloud CLI を使用する場合、次のコマンドで Jane にその役割を付与できます。
gcloud projects add-iam-policy-binding another-project \
--member user:jane@gmail.com --role deploymentmanager.typeViewer
ユーザーへの役割の追加と削除に関する包括的な手順については、プロジェクト メンバーに対するアクセス権の付与、変更、取り消しのドキュメントをお読みください。
次のステップ
- その他の付与可能な IAM 役割に関する情報を読みます。
- サービス アカウントについて、さらに学習する。