このページでは、VPC Service Controls と限定公開クラスタの仕組みと、Cloud Workstations で限定公開クラスタを設定する方法について説明します。
VPC Service Controls
VPC Service Controls は、ワークステーションのセキュリティをさらに強化して、データ漏洩のリスクを低減します。VPC Service Controls の活用により、境界の外部から発生するリクエストからリソースとサービスの保護に役立つサービス境界にプロジェクトを追加できます。
VPC サービス境界で Cloud Workstations を使用する場合の要件は次のとおりです。
- Cloud Workstations 保護を促進するには、Cloud Workstations API を制限する場合は常に、サービス境界内の Compute Engine API を制限する必要があります。
Google Cloud Storage API、Google Container Registry API、Artifact Registry API がサービス境界で VPC からアクセスできることを確認します。これは、ワークステーションにイメージを pull するために必要です。 また、Cloud Logging API と Cloud Error Reporting API にサービス境界で VPC からアクセスできるようにすることをおすすめします。ただし、これは Cloud Workstations の使用には必要ありません。
- ワークステーション クラスタが非公開であることを確認します。 限定公開クラスタを構成すると、VPC サービス境界の外部からワークステーションに接続できなくなります。
- ワークステーション構成で、パブリック IP アドレスがオフになっていることを確認してください。無効にしないと、プロジェクトにパブリック IP アドレスを持つ VM が作成されます。
constraints/compute.vmExternalIpAccess
組織のポリシーの制約を使用して、VPC サービス境界内のすべての VM のパブリック IP アドレスを無効にすることを強くおすすめします。詳細については、外部 IP アドレスを特定の VM に制限するをご覧ください。
サービス境界の詳細については、サービス境界の詳細と構成をご覧ください。
アーキテクチャ
プライベート ゲートウェイを使用してワークステーション クラスタを構成する場合、ワークステーション クラスタのコントロール プレーンには内部 IP アドレスしかありません。つまり、公共のインターネットからのクライアントは、ワークステーション クラスタに属するワークステーションに接続できません。限定公開クラスタを使用するには、Private Service Connect エンドポイントを介して、限定公開クラスタを Virtual Private Cloud(VPC)ネットワークに手動で接続する必要があります。
また、ローカルマシンから限定公開クラスタのワークステーションに接続するには、ローカルマシンを VPC ネットワークに接続する必要があります。Cloud VPN または Cloud Interconnect を使用して、マシンを実行している外部ネットワークを VPC ネットワークに接続します。
プライベート ゲートウェイを作成する
始める前に
始める前に、次の必要な設定手順を完了してください。
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Cloud Workstations API.
-
ワークステーション構成を作成できるように、プロジェクトに Cloud Workstations 管理者の IAM ロールがあることを確認します。 IAM ロールを確認するには、Google Cloud コンソールの IAM ページに移動します。
-
constraints/compute.trustedimageProjects
組織ポリシーの制約が適用されている場合は、イメージの取得元であるプロジェクトを許可リストに追加する必要があります。- ネストされた仮想化を使用しない場合は、
cos-cloud
プロジェクトの Compute Engine VM イメージを使用する権限をプロジェクトに付与する必要があります。 - ネストされた仮想化では、
ubuntu-os-gke-cloud
プロジェクトの Compute Engine VM イメージを使用するための権限をプロジェクトに付与する必要があります。
詳細については、イメージ アクセスの制限を設定するをご覧ください。
- ネストされた仮想化を使用しない場合は、
ネットワーキングで限定公開クラスタを有効にする
限定公開クラスタを作成するには、次の手順を行います。
Google Cloud コンソールで、[Cloud Workstations] ページに移動します。
ワークステーションの [クラスタの管理] ページに移動します。
[作成] をクリックします。
[名前] を入力し、ワークステーション クラスタの [リージョン] を選択します。
[ネットワーキング] セクションで、[このプロジェクトのネットワーク] を選択します。
[ネットワーク] と [サブネットワーク] を選択します。
[プライベート ゲートウェイ] を有効にします。
省略可: 限定公開クラスタへの HTTP アクセスを有効にする Private Service Connect エンドポイントをホストする 1 つ以上の追加プロジェクトを指定します。デフォルトでは、このエンドポイントはワークステーション クラスタ プロジェクトと VPC ネットワーク ホスト プロジェクトにのみ作成できます(異なる場合)。必要に応じて、クラスタの作成後にこれらのプロジェクトを指定することもできます。
[作成] をクリックします。
ワークステーションに接続する
公共のインターネットから、クライアントはワークステーション クラスタに属するワークステーションに接続できません。ワークステーションに接続するには、クライアントが Private Service Connect(PSC)を使用してワークステーション クラスタに接続するネットワーク上にある必要があります。
PSC を構成する際は、次の点に注意してください。
Cloud Workstations は、Google Cloud が管理するプライベート DNS ドメインを作成します。このドメインは Service Directory の概要に表示され、
.cloudworkstations.dev
で終わるワークステーション クラスタのホスト名に解決されます。Cloud Workstations は、サービス アタッチメント名の一部として
-inverting-proxy-
を持つ内部 PSC サービス アタッチメントも作成します。ただし、このサービス アタッチメントは Google Cloud 専用です。オンプレミス インフラストラクチャの許可リストに
*cloudworkstations.dev
を追加する必要が生じることがあります。
このセクションの手順に従ってワークステーションに接続します。
ワークステーション サービス アタッチメントをターゲットとする PSC エンドポイントを作成します。
クラスタのホスト名を PSC エンドポイントにマッピングする DNS レコードを Cloud DNS を使用して作成します。
Private Service Connect エンドポイントを作成する
PSC エンドポイントを作成する手順は次のとおりです。
Google Cloud コンソールで [Private Service Connect] に移動します。
[接続エンドポイント] タブをクリックし、追加 [エンドポイントを接続] をクリックします。
[ターゲット] で [公開済みのサービス] を選択します。
[ターゲット サービス] フィールドに、ワークステーション クラスタ用に作成されたサービス アタッチメント URI を入力します。コンソールでワークステーション クラスタに移動して、これを見つけます。サービス アタッチメント URI は次の形式で表示されます。
https://www.googleapis.com/compute/v1/projects/SERVICE_PROJECT/regions/REGION/serviceAttachments/SERVICE_ATTACHMENT_NAME
SERVICE_PROJECT、REGION、SERVICE_ATTACHMENT_NAME は、ワークステーション クラスタからの値で置き換えます。
[エンドポイント] フィールドに、エンドポイント名を入力します。
エンドポイントの [ネットワーク] を選択してから、[サブネットワーク] を選択します。 このネットワークは、ワークステーションへの接続に使用するネットワークにする必要があります。
エンドポイントの [IP アドレス] を選択します。
新しい IP アドレスが必要な場合は、[IP アドレスの作成] を選択します。
- IP アドレスの名前と説明を入力します。
- [静的 IP アドレス] で、[自動的に割り当てる] を選択します。 [カスタム IP アドレス] で [自分で選択] を選択し、使用する IP アドレスを入力します。
- [目的] で [非共有] を選択します。
- [予約] をクリックします。
プルダウン リストから名前空間を選択するか、新しい名前空間を作成します。 [リージョン] には、選択したサブネットワークに基づいてデータが入力されます。
[エンドポイントを追加] をクリックします。
エンドポイントの IP アドレスをコピーして、次のセクションのプライベート DNS ゾーンと DNS レコードを作成するで使用できるようにします。
限定公開 DNS ゾーンを作成する
次の手順に従って、DNS 名が clusterHostname
に設定されたこのワークステーション クラスタの限定公開 DNS ゾーンを作成します。これは、コンソールのワークステーション クラスタに移動して確認します。
Google Cloud コンソールで、[DNS ゾーンの作成] ページに移動します。
[ゾーンのタイプ] で [非公開] を選択します。
ゾーン名(例:
private-workstations-cluster-zone
)を入力します。限定公開ゾーンの DNS 名のサフィックスを入力します。ゾーン内のすべてのレコードがこのサフィックスを共有します。この名前を
clusterHostname
に設定します。clusterHostname
を確認するには、Google Cloud コンソールで [Cloud Workstations] > [クラスタ管理] ページに移動し、ワークステーション クラスタをクリックして、ホスト名を表示します。(省略可)説明を追加します。
[オプション] で、[デフォルト(限定公開)] を選択します。
IP アドレスはこのネットワークでのみ有効なため、前のセクションで PSC エンドポイントを作成したネットワークを選択します。
[作成] をクリックします。
限定公開 DNS ゾーンの詳細については、限定公開ゾーンを作成する方法、およびCloud DNS 限定公開ゾーンのベスト プラクティスに関する Cloud DNS のドキュメントをご覧ください
DNS レコードを作成する
Private Service Connect エンドポイントの作成時に予約された IP アドレスに *.<clusterHostname>
をマッピングするレコードを追加するには、次の手順を行います。
Google Cloud コンソールで、Cloud DNS の [ゾーン] ページに移動します。
レコードを追加するマネージド ゾーンの名前をクリックします。
[ゾーンの詳細] ページで、[標準を追加] をクリックします。
[レコードセットの作成] ページの [DNS 名] フィールドに「
*.<clusterHostname>
」と入力します。[IP アドレス] フィールドに、前のセクションで Private Service Connect エンドポイント用に予約した IP アドレスを入力します。
[作成] をクリックします。
これで VPC ネットワークがワークステーション クラスタに接続されました。このネットワークを使用してワークステーションに接続できます。
オンプレミスで DNS 解決を有効にする
ワークステーションでデフォルトのブラウザベースのエディタを使用するには、VPC ネットワークに接続されたマシンのブラウザを使用します。Cloud VPN または Cloud Interconnect を使用して、ブラウザを実行している外部ネットワークから VPC に接続できます。
外部ネットワークから接続するには、外部ネットワークで DNS を構成することも必要です。前述の手順と同様に、clusterHostname
用の DNS ゾーンを作成し、Private Service Connect エンドポイントの作成時に予約した IP アドレスに *.<clusterHostname>
をマッピングするレコードを追加できます。また、DNS 転送ゾーンまたは DNS サーバー ポリシーを設定して、オンプレミス環境と Google Cloud 環境の間で DNS 名の検索を許可することも可能です。