このページでは、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 サービス境界の外部からワークステーションに接続できなくなります。 Cloud Workstations サービスにより、VPC サービス境界で一般公開クラスタを作成できなくなります。
- ワークステーション構成で、パブリック IP アドレスがオフになっていることを確認します。無効にしないと、プロジェクトにパブリック IP アドレスを持つ VM が作成されます。
constraints/compute.vmExternalIpAccess
組織のポリシーの制約を使用して、VPC サービス境界内のすべての VM のパブリック IP アドレスを無効にすることを強くおすすめします。詳細については、外部 IP アドレスを特定の VM に制限するをご覧ください。
サービス境界の詳細については、サービス境界の詳細と構成をご覧ください。
アーキテクチャ
ワークステーション クラスタをプライベートとして構成すると、ワークステーション クラスタのコントロール プレーンには内部 IP アドレスのみが付与されます。つまり、公共のインターネットからのクライアントは、ワークステーション クラスタに属するワークステーションに接続できません。限定公開クラスタを使用するには、Private Service Connect エンドポイントを介して、限定公開クラスタを Virtual Private Cloud(VPC)ネットワークに手動で接続する必要があります。
限定公開クラスタの構成には、2 つの PSC エンドポイントが必要です。
デフォルトでは、Cloud Workstations は、別の PSC エンドポイントを作成して、コントロール プレーンをワークステーション VM に接続します。
限定公開クラスタ用の追加の PSC エンドポイントを作成する必要があります。ローカルマシンから限定公開クラスタ内のワークステーションに接続するには、ローカルマシンを VPC ネットワークに接続する必要があります。Cloud VPN または Cloud Interconnect を使用して、マシンを実行している外部ネットワークを VPC ネットワークに接続します。 この追加の PSC エンドポイントは、外部ネットワークが Cloud VPN または Cloud Interconnect を使用して接続するネットワーク内に作成する必要があります。
次の図は、限定公開クラスタのアーキテクチャの例を示しています。
準備
始める前に、以下の必要な設定手順を完了しておいてください。
- 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 ロールがあることを確認します。 Google Cloud コンソールで IAM ロールを確認するには、[IAM] ページに移動します。
-
Cloud Workstations は、Compute Engine の事前構成された公開 Container-Optimized OS(COS)イメージから起動される VM でホストされます。
constraints/compute.trustedimageProjects
組織ポリシーの制約が適用されている場合は、イメージ アクセスの制限を設定して、ユーザーがprojects/cos-cloud
またはすべての公開イメージからブートディスクを作成できるようにする必要があります。 -
省略可: Container File System API を有効にして、ワークステーションの起動を高速化します。
Container File System API を有効にする
詳細については、イメージ ストリーミングを使用してワークステーションの起動時間を短縮するをご覧ください。
限定公開クラスタを作成する
次の手順に従って、限定公開クラスタを作成します。
Google Cloud コンソールで、[Cloud Workstations] ページに移動します。
ワークステーションの [クラスタ管理] ページに移動します。
[作成] をクリックします。
[名前] を入力し、ワークステーション クラスタの [リージョン] を選択します。
[ネットワーキング] セクションで、[このプロジェクトのネットワーク] を選択します。
[ネットワーク] と [サブネットワーク] を選択します。
[ゲートウェイの種類] で [プライベート ゲートウェイ] を選択します。
省略可: 限定公開クラスタへの HTTP アクセスを有効にする Private Service Connect エンドポイントをホストする、1 つ以上の追加のプロジェクトを指定します。デフォルトでは、このエンドポイントはワークステーション クラスタ プロジェクトと VPC ネットワーク ホスト プロジェクトにのみ作成できます(異なる場合)。必要に応じて、これらのプロジェクトはクラスタの作成後に指定することもできます。
[作成] をクリックします。クラスタの作成中、ステータスは [更新中] と表示されます。
クラスタの作成が完了するまでに数分かかります。クラスタの作成が完了すると、クラスタのステータスが [デグレード] と表示されることがあります。PSC エンドポイントを作成するセクションの手順を完了すると、数分以内にクラスタのステータスが「準備完了」に変わります。
限定公開クラスタの接続を有効にする
クライアントは、公共のインターネットから限定公開ワークステーション クラスタ内のワークステーションに接続できません。クライアントは、Private Service Connect(PSC)を使用してワークステーション クラスタに接続するネットワーク上にある必要があります。このセクションの手順に沿ってワークステーションに接続します。
ワークステーション サービス アタッチメントをターゲットとする PSC エンドポイントを作成します。
クラスタのホスト名を PSC エンドポイントにマッピングする DNS レコードを Cloud DNS を使用して作成します。
Private Service Connect エンドポイントを作成する
PSC エンドポイントを作成する手順は次のとおりです。
Google Cloud コンソールで [Private Service Connect] に移動します。
[接続エンドポイント] タブをクリックし、追加 [エンドポイントを接続] をクリックします。
[ターゲット] で [公開済みのサービス] を選択します。
[ターゲット サービス] フィールドに、ワークステーション クラスタ用に作成されたサービス アタッチメント URI を入力します。コンソールでワークステーション クラスタに移動し、[ネットワーク設定] の [サービス アタッチメント URI] フィールドを探します。
[エンドポイント] フィールドにエンドポイント名を入力します。
エンドポイントの [ネットワーク] を選択してから、[サブネットワーク] を選択します。 このネットワークには、ワークステーションとの接続に使用するネットワークを指定し、外部ネットワークが Cloud VPN または Cloud Interconnect を使用して接続するネットワークと同じにする必要があります。
エンドポイントの [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 名の検索を許可することも可能です。
オンプレミス インフラストラクチャの許可リストに *cloudworkstations.dev
を追加する必要が生じる場合があります。