19
17

More than 3 years have passed since last update.

GCP で組織を作成して共有 VPC 構築

Last updated at Posted at 2020-07-12

はじめに

ゼロから GCP で共有 VPC を作成したので、やったことを記載する

共有 VPC を作成するまでにやること

GCP で共有 VPC を作成する
共有 VPC は組織を作成する必要があるので、組織を作成する
組織作成にはドメイン取得も必要なのでドメイン取得から実施する
既存プロジェクトの組織の移行も実施する

  • やることリスト

    • ドメイン取得
    • G Suite アカウント or Cloud Identity アカウントの取得
    • 組織作成
    • 組織アカウントからプロジェクトアカウントへ権限の付与
    • 既存プロジェクトの組織への移行
    • ホストプロジェクトの有効化, 共有 VPC の作成
    • サービスプロジェクトの作成, 共有 VPC への接続
  • 必要資金

    • ドメイン: 年間 1400 円(.dev) ※取得ドメインによる
    • G Suite : 月額 680 円(Basic) or Cloud Identity : 無料
    • GCP でのコスト (通常の GCP コスト. 共有 VPC でかかるコストはない(はず))

全体概要図

下記、組織・プロジェクト、それぞれのアカウント(ロール)、共有 VPC (Shared VPC)とサブネットの、全体概要図

gcp_abst_shardvpca.png

※今回組織で使用するドメインのレジストラは Google Domains を使用した (使用するレジストラは Google Domains じゃなくても良い)

構築ステップ

ドメインの取得から、組織作成、既存プロジェクトとの組織の移行、
共有 VPC の作成(ホストプロジェクト有効)、サービスプロジェクトの作成・接続を、
下記ステップに分けて実施する

  1. ドメイン取得
  2. 組織の作成
  3. 組織へのプロジェクト移行
  4. ホストプロジェクト 共有 VPC の構築
  5. サービスプロジェクトの作成
  6. サービスプロジェクトに共有 VCP のサブネットで VM インスタンスを作成

1. ドメイン取得

ドメイン取得はレジストラへの申請で実施する
ここでは、Google Domains を使用して実施するが、後段での作業でもレジストラの指定はないので他で所有しているドメインがあればスキップ可能

![gcp_abst_sharedvpc1a.png

まずは、Google Domains へアクセス

取得したいドメインを入力して、「取得」をクリックする

![スクリーンショット 2020-06-28 22.46.20.png

✅ がされて取得可能なドメインであることを確認したら、「カートアイコン」をクリックする

![GoogleDomains1.png

カートにドメインが入ったので、右上の「カートアイコン」をクリックする

![GoogleDomains2.png

取得するドメイン名と登録の内容を確認する
「プライバシー保護が有効です」が有効になっていると、 whois への情報が Google によってマスクされるのでオススメ

![GoogleDomains3.png

「名前・住所・電話番号」を入力して、「保存して続行」をクリックする

![GoogleDomains4.png

これまでの入力情報などを確認して、支払い方法を確認する
(GCP など Google の他のサービスで支払いをしていれば自動で選択されている)
最後に「購入」をクリックする (これで支払いが確定する)

![GoogleDomains5.png

購入が完了すると、「Google Domains」の管理画面に遷移する
連絡先メールアドレスへの確認メールが来ているので確認をする (しないと管理画面に注意が出る)

![GoogleDomains6.png

連絡先メールアドレスに Google Domains からいろいろメールが来ているので、「ご対応のお願い:〜」の件名のメールを開いて確認する

![GoogleDomains7.png

「メールアドレスを確認」をクリックする

![GoogleDomains8.png

Google Domains のページが自動で開いて、「確認されました」とした方に出たらOK

![GoogleDomains9.png

以上で、ドメイン取得完了

2. 組織の作成

![gcp_abst_sharedvpc2a.png]

組織作成に必要になるもの・ここでやること

  • 組織作成には G Suite もしくは IDaaS の Cloud Identity の登録が必要
    • 今回は、Free Edition がある Cloud Identity を採用して実施する
  • G Suite もしくは Cloud Identity の作成にはドメインを使用し、ドメイン所有権証明が必要

実施順番・やること

  1. Cloud Identity のアカウント作成
  2. Cloud Identity の設定 / ドメイン所有権の証明

2.1. Cloud Identity の登録・アカウント作成

GCP コンソールから Cloud Identity に登録する
https://support.google.com/cloudidentity/answer/7389973

  1. GCP コンソールにログイン
  2. [ツールとサービス] メニューから [IAM と管理] > [ID と組織] にアクセス
  3. [Cloud Identity] ウィンドウで [登録する] をクリック

CloudIdentity.png

下記画面が表示されるので、「次へ」をクリックする

![Cloud Identity1.png

ビジネス名従業員数を選んで、次へをクリック

![Cloud Identity2.png

を選んで次へをクリック

![Cloud Identity3.png

自分のメールアドレスを入力して次へをクリック

![Cloud Identity4.png

  1. ドメイン取得 で取得したドメイン名を入力して次へをクリック (証明は後に実施される)

![Cloud Identity5.png

ドメインを確認して次へをクリック

![Cloud Identity6.png

Cloud Identity のアカウント管理者のアカウント作成を実施する
を入力して次へをクリック

![Cloud Identity7.png

続いてユーザー名パスワードを入力して次へをクリック

![Cloud Identity8.png

お知らせメールを受信してよければOKをクリック

![Cloud Identity9.png

私はロボットではありませんチェックして、規約に同意して同意してアカウント作成をクリック

![Cloud Identity10.png

以上で、Cloud Identity アカウント作成が完了

続いて Cloud Identity の設定・ドメイン所有権の証明のため、設定に進むをクリック

![Cloud Identity11.png

クリックすると、次の 2.2. の作業画面へ遷移する

2.2. Cloud Identity の設定 / ドメイン所有権の証明

ドメイン所有権の証明を実施する
今回は Google Domains での例を記載するが、その他の例も下記ドキュメントで記載がある
https://support.google.com/a/topic/1409901

2.1. 設定後に、下記画面へ遷移されているので、開始をクリック

![Cloud Identity12.png

ドメインの所有権の確認になる

Google Domains だと下記画面のように、Google Domains へアクセスすることが求められるので、Google Domains を別ウィンドウで開いてログインする
ログインが完了したらログインできましたチェック

![Cloud Identity13.png

自分のドメインのコントロール パネルを開きましたチェック

![Cloud Identity14.png

ドメインに新しい TXT レコードの追加が求められるので、ドメインに追加することを求めらえる値/応答/参照先の値をコピーする

![Cloud Identity15.png

Google Domains のコントロール画面に移り下記設定を実施する

  • DNS 設定画面を開く
  • カスタム リソース レコード設定までスクロール
  • @を入力
  • TXTを選択
  • コピーしておいた値/応答/参照先の値をペースト
  • 追加をクリック

![Cloud Identity16.png

追加が完了すると下記画面のように、変更が保存されました。48時間以内に反映されますと出る
実際にやったところ、そこまでかからず数分で反映された (早い時は 1 分前後)

![Cloud Identity17.png

反映の確認をdig -t TXT [ドメイン名]のコマンドで確認する
ANSWER の中の TXT レコードに設定したgoogle-site-verification=xxxの値が入っていればOK

dig -t TXT [ドメイン名(xxx.dev)]

; <<>> DiG 9.10.6 <<>> -t TXT xxx.dev
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 31813
;; flags: qr rd ra ad; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;suzuyu.dev.            IN  TXT

;; ANSWER SECTION:
xxx.dev.        3599    IN  TXT "google-site-verification=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"

;; Query time: 168 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: Tue Jun 30 00:37:33 JST 2020
;; MSG SIZE  rcvd: 120

上記通り反映が確認できたらTXT 確認レコードを追加しました。チェックする

![Cloud Identity18.png

TXT 確認レコードを保存しました。チェックする

![Cloud Identity19.png

ドメインの所有権を証明をクリック

![Cloud Identity20.png

ドメインの所有権の証明が問題なく完了すれば、下記画面に遷移する
続いて、先行ユーザの登録を実施するため、ユーザーを作成をクリックする

![Cloud Identity21.png

組織のユーザーをを 1つ作成してみる
ユーザー名を入力
ユーザーの追加を完了しましたをチェック
次へをクリックする

![Cloud Identity22.png

上記で Cloud Identity の設定が完了
次に組織の IAM 設定などに進むため、CLOUD CONSOLE に進むをクリックする

![Cloud Identity23.png

上記画面で、CLOUD CONSOLE に進むをクリックすると下記画面が表示され、登録完了が確認できる

![IDと組織1.png

以上で、組織の作成が完了

3. 組織へのプロジェクト移行

組織へ既存にあるプロジェクトを移行するのため、下記実施する
1. 組織アカウントから既存プロジェクトアカウントへ権限の付与
2. 既存プロジェクトを組織へ移行
3. 既存の請求先アカウントを組織へ移行

![gcp_abst_sharedvpc3a.png]

3.1. 組織アカウントから既存プロジェクトアカウントへ権限の付与

2. 組織の作成の最後の組織アカウントの画面からIAMと管理IAMの画面を開く
下記画面のとおり、追加をクリックする

IAMの追加1.png

移行するプロジェクトのアカウントに下記ロールを付与する

  • 付与するロール
    • 請求先アカウント作成者
    • プロジェクトの支払い管理者
    • プロジェクト作成者

ロール付与したら保存をクリック

IAMの追加2.png

上記で、既存アカウントへの権限付与完了

3.2. 既存プロジェクトを組織へ移行

既存プロジェクトのコンソールを開く
Cloud Console で [IAM と管理] > [設定]ページを開く
下記画面の移行クリックする

プロジェクト移行1.png

下記画面がポップアップされるので、組織を選択するからプルダウンして移行する組織ドメインを選択し、移行クリックする

プロジェクト移行2.png

上記で既存プロジェクトの移行が完了する

3.3. 既存の請求先アカウントを組織へ移行

既存の請求先アカウントを組織に移行することができるので、実施する

Cloud Console の [お支払い] ページに移動する
ページの上部にあるプルダウンから、[組織なし] を選択すると、組織に関連付けられていない請求先アカウントが表示される

[請求先アカウント名] のリストで、移行する請求先アカウント名をクリックします。請求先アカウントの概要ページが表示される
右側の [請求先アカウント] の横にある [管理] をクリックする

請求先アカウントの移行.png

表示されるアカウントの管理ページで [組織の変更] をクリックし、請求先アカウントを移行する組織を選択します。

請求先アカウントの移行2.png

上記で請求先アカウントの組織への移行完了

以上で、既存プロジェクトの移行手順完了

4. ホストプロジェクト 共有 VPC の構築

組織が作成できたので、共有 VPC が構築可能になったので、共有 VPC の構築を実施する

  • 共有 VPC とは
    • 組織で利用でき、複数プロジェクトから共通で利用できる VPC ネットワーク
    • 共通の VPC ネットワークにより内部 IP を使用してプロジェクト間安全で効率的な相互通信が可能
    • 共通 VPC は、ホストプロジェクトを指定して、その他はサービスプロジェクトとして、ホストプロジェクトに接続する

![gcp_abst_sharedvpc4a.png]

下記順序で実施していく
1. ホストプロジェクトにするプロジェクト管理者に共有 VPC 管理者ロールを付与
2. 移行した既存プロジェクトをホストプロジェクトに指定

4.1. ホストプロジェクトにするプロジェクト管理者に共有 VPC 管理者ロールを付与

必要な管理者のロールを付与する

下記が付与するときの画面
スクリーンショット 2020-07-06 23.38.47.png

4.2. 移行した既存プロジェクトをホストプロジェクトに指定

共有 VPC を作成する
「VPCネットワーク」 -> 「共有 VPC」 に移動して共有 VPC を設定をクリック
共有VPC01.png

共有 VPC のホストプロジェクトを有効にする
下記画面に遷移するので保存して続行をクリックする

共有VPC02.png

ここではホストプロジェクトの有効化のみなので続行をクリック
※ 共有するサブネットの選択は別途実施する

共有VPC03a.png

ここではホストプロジェクトの有効化のみなので保存をクリック
※ サービスプロジェクトの接続は別途実施する

共有VPC04a.png

上記で、ホストプロジェクトの有効化完了
下記のようにホストプロジェクトになっていることが確認できる

共有VPC05b.png

以上で、共有 VPC の有効化完了

5. サービスプロジェクトの作成

サービスプロジェクト向けのアカウント・プロジェクトを作成して、共有 VPC へ接続する

![gcp_abst_sharedvpc5a.png]

下記の順番で実施する

  1. サービスプロジェクト用のオーナーアカウントを作成
  2. 新規にサービスプロジェクトを作成
  3. サービスプロジェクト管理者ロールをを付与
  4. 共有 VPC のサービスプロジェクトとして接続

5.1. サービスプロジェクト用のオーナーアカウントを作成

組織管理者アカウントで組織の画面を開く

サービスPJ001.png

「IAM と管理」 → 「ID と組織」を開いて、管理コンソールのユーザーを管理をクリックする

サービスPJ002.png

Google Admin の画面に遷移するので、新しいユーザーの追加をクリックする

サービスPJ003.png

下記画面がポップアップし、新しいユーザーのを入力して、新しいユーザーの追加をクリックする

アカウント作成01.png
アカウント作成02.png

以上で、ユーザアカウント作成完了

5.2. 新規にサービスプロジェクトを作成

サービスプロジェクトを作成するために 4ステップ実施する

  1. 作成した新しいユーザーアカウントで Google Cloud Platform へログインする
  2. プロジェクトを作成
  3. 請求先アカウントの設定
  4. Compute Engine API 有効化

5.2.1. 作成した新しいユーザーアカウントで Google Cloud Platform へログインする

作成したアカウントで Google Cloud Console へログインする
作成時に表示されたユーザのメールアドレスを入力する
ユーザログイン01.png
作成時にコピーしたパスワードを入力する
ユーザログイン02.png
記載条項を読んで同意するをクリックする
ユーザログイン03.png
初回ログイン時にパスワード変更が求められるので新しいパスワードを作成する
ユーザログイン04.png
利用規約への同意チェックが求められるので、チェックして同意して続行をクリックする
ユーザログイン05.png

以上で、ログイン完了する

5.2.2. プロジェクトを作成

ログインしたサービスプロジェクトのアカウントでプロジェクトの作成を実施する(新規プロジェクトのオーナーになる)
下記画面に遷移して新しいプロジェクトをクリック
プロジェクト作成00.png
サービスプロジェクト名を入力して作成をクリック
プロジェクト作成01.png

以上で、プロジェクト作成完了

5.2.3. 請求先アカウントの設定

課金が可能になるように、請求先アカウントの設定を実施する

組織の請求先アカウントの管理者(この例ではホストプロジェクトのオーナー)で「お支払い」画面を開く
請求先アカウントを管理をクリックして開く

請求先アカウント追加00.png

マイプロジェクトタブをクリックして、作成したサービスプロジェクトのお支払い情報の変更をクリック
請求先アカウント追加01.png

アカウントを設定をクリック
請求先アカウント追加02.png

以上で、請求先アカウントの設定完了

5.2.4. Compute Engine API 有効化

Coumpute Engine API が有効化してないと、共有 VPC に接続ができないので、有効化を実施する

サービスプロジェクトの「API とサービス」画面を開き、API とサービスを有効化をクリック
GCE_API有効化01.png
検索窓でComputeを入力
![GCE_API有効化02.png]
Compute Engine APIをクリック
![GCE_API有効化03.png]
有効にするをクリック
![GCE_API有効化04.png]

以上でサービスプロジェクト作成完了

5.3. サービスプロジェクト管理者ロールを付与

サービスプロジェクトの管理者が共有 VPC のネットワークを見れるように、ネットワークユーザーロールを付与する

  • 共有 VPC のホストプロジェクト側で、共有 VPC 管理者アカウントで下記ロールを付与する
  • 付与ロール

サービスPJ01.png

以上で、ロール付与完了

5.4. 共有 VPC のサービスプロジェクトとして接続

共有 VPC 側でサービスプロジェクトの接続を実施する

ホストプロジェクトのコンソールで「VPCネットワーク」「共有 VPC」「接続されたプロジェクト」を開いて、プロジェクトを接続をクリック
共有VPC接続01.png
接続するプロジェクトをチェックして、共有するサブネットを選択して保存をクリック
共有VPC接続02.png
下記画面に遷移し、サービスプロジェクトが接続されたことが表示される
共有VPC接続03.png

以上で、サービスプロジェクトの共有 VPC への接続完了

6. サービスプロジェクトに共有 VCP のサブネットで VM インスタンスを作成

最後に、サービスプロジェクトに共有 VCP のサブネットで VM インスタンスを作成できるかを確認する
![gcp_abst_sharedvpc6a.png]

サービスプロジェクトのコンソールで VM インスタンス作成画面まで進め、管理、セキュリティ、ディスク、ネットワーク、単一テナンシーをクリック

![インスタンス作成01.png]

ネットワーキングタブをクリックし開いて、共有ネットワークが選択できるようになっていることを確認する
インスタンス作成02.png

上記選択して、VM インスタンスを作成すれば共有 VPC のサブネットで VM インスタンス作成完了

共有 VPC 側ファイヤーウォール設定で通信制御実施も可能

[追加] 運用.共有VPCでのサブネット追加とサービスプロジェクトへの払い出し

作成した共有 VPC からサービスプロジェクトへ新たなサブネットを作成して払い出す運用を試したので追記する

新規サブネットの作成

ホストプロジェクトに切り替える

プロジェクトIDの確認。切り替え
gcloud projects list
gcloud config set project HOST_PROJECT_ID
事前サブネット確認
gcloud compute networks subnets list
サブネットの追加
gcloud compute networks subnets create private-subnet01 \
    --network=vpc01 \
    --range=10.20.0.0/20\
    --region=us-west1
切り戻し_サブネットの追加_削除コマンド
gcloud compute networks subnets delete private-subnet01 \
    --region=us-west1
事後サブネット確認
gcloud compute networks subnets list

参考:https://cloud.google.com/vpc/docs/using-vpc?hl=ja#add-subnets

サービスプロジェクトへの払い出し

サービスプロジェクトから共有 VPC で作成したサブネットを利用するには、
サービスプロジェクトの管理者アカウントへ権限を追加する

下記コマンドで現状のサブネットの権限を json フォーマットで出力する

$ gcloud beta compute networks subnets get-iam-policy private-subnet01 \
    --region us-west1 \
    --project HOST_PROJECT_ID \
    --format json

{
  "etag": "ACAB"
}

出力されたフォーマットに bindings でメンバーとnetworkUser ロールの追加をする json ファイルを作成する

SERVICE_PROJECT_ADMIN: xxx@xxx.dev アカウント
"etag": 現状設定から踏襲したもの.上記出力例では"etag": "ACAB"とする

subnet-policy.json
{
  "bindings": [  {
     "members": [
           "user:[SERVICE_PROJECT_ADMIN]"
        ],
        "role": "roles/compute.networkUser"
  }
  ],
  "etag": "[ETAG_STRING]"
}

上記で作成した json ファイルを対象サブネットへ適用する

gcloud beta compute networks subnets set-iam-policy private-subnet01 subnet-policy.json \
    --region us-west1 \
    --project HOST_PROJECT_ID

再度 json フォーマット出力をして反映が確認できる

gcloud beta compute networks subnets get-iam-policy private-subnet01 \
    --region us-west1 \
    --project HOST_PROJECT_ID \
    --format json

参考:https://cloud.google.com/vpc/docs/provisioning-shared-vpc?hl=ja#networkuseratsubnet

おわりに

組織作成(の前のドメイン取得)から始めて、既存プロジェクトの移行、共有 VPC の作成やサービスプロジェクトの作成・接続まで完了した

組織で GCP にて複数プロジェクトを扱うようになるために、共有 VPC の事前学習を自前でやってみるかと軽い気持ちで手を出したらやること多すぎた
今後は、共有 VPC でのネットワーク共有や制御、組織の IAM 管理などを試していきたい

参考

組織の作成と管理
https://cloud.google.com/resource-manager/docs/creating-managing-organization?hl=ja
Cloud Identity とは
https://support.google.com/cloudidentity/answer/7319251?hl=ja&visit_id=637290373214995333-3222352506&rd=1
ドメイン所有権の証明手順
https://support.google.com/a/topic/1409901
G Suite へのお申し込み
https://support.google.com/a/answer/53926?hl=ja
組織へのプロジェクトの移行
https://cloud.google.com/resource-manager/docs/migrating-projects-billing?hl=ja#migrating_projects_with_no_organization
共有 VPC の概要
https://cloud.google.com/vpc/docs/shared-vpc?hl=ja
共有 VPC のプロビジョニング
https://cloud.google.com/vpc/docs/provisioning-shared-vpc?hl=ja
サブネットの追加
https://cloud.google.com/vpc/docs/using-vpc?hl=ja#add-subnets
一部のサブネットのサービス プロジェクト管理者
https://cloud.google.com/vpc/docs/provisioning-shared-vpc?hl=ja#networkuseratsubnet

19
17
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
19
17