GCPで別プロジェクトのイメージの使用する

2019.11.27 (水)

GCPはプロジェクト単位で支払いも権限もすべて別れているので、ぶっちゃけ別のサービスと考えた方がいいぐらいです。なので他のプロジェクト間でのやり取りは基本的にはできません。

  1. イメージへのアクセス権の付与

1. イメージへのアクセス権の付与

現行の作業中のプロジェクト(A)へ別のプロジェクトからイメージをもってくるには、対象になる別プロジェクト(B)に属しているイメージへのアクセスができるようにしないといけません。まずは、別のプロジェクト(B)に属しているイメージへのアクセス権を付与という作業になります。この作業にはオーナー権限が必要です。このアクセス権の付与は、イメージを所有しているプロジェクト(B)のオーナーがイメージを使用するプロジェクト(A)のGoogle APIサービス アカウントに対してアクセス権を付与する必要があります。
まずは、別のプロジェクト(B)が所有する非公開イメージ(利用したいイメージ)にアクセスする必要のあるプロジェクト(A)の GCP Console の [IAM] ページに移動します。
メンバーの一覧の中から、

xxxxxxxxxxxx@cloudservices.gserviceaccount.com

というフォーマットのアカウント名を探します。(必ずいます。)この人はこのプロジェクトに付与されたサービスエージェントで、プロジェクトに必ず1人デフォルトで存在します。[PROJECT_NUMBER]@cloudservices.gserviceaccount.comという形式になっています。このメンバー(メールアドレス)をメモっておきます。
次に、対象のイメージがあるプロジェクト(B)のプロジェクトオーナーがGoogle API サービス アカウント(A)に[roles/compute.imageUser]役割を付与します。compute.imageUserというロールが付与されるとイメージにアクセスする権限が与えられます。

  1. Google Cloud Platform Console 内で、アクセスするイメージが含まれるプロジェクトの IAM ページに移動します。
  2. プロジェクト リストからプロジェクト(B)を選択します。
  3. [追加] ボタンをクリックして新しいメンバーを追加します。
  4. [メンバー] ボックスに、プロジェクト(A)の「サービス アカウントのメールアドレス」を入力します。
  5. [役割] プルダウンを展開し、[Compute Engine] > [Compute イメージ ユーザー] を選択します。
  6. [追加] をクリックしてアカウントを追加します。


これで別プロジェクトのイメージにアクセスすることができます。
現行の作業中のプロジェクト(A)に戻ってVMインスタンスを作成する手順で、ブートディスクの項目に別プロジェクトが表示されます。権限の紐付けを行ったプロジェクトのイメージが選択できれるようになっています。それを使えばOKです。