このページでは、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 は、コントロール プレーンをワークステーション VM に接続するための個別の PSC エンドポイントを作成します。
限定公開クラスタ用に追加の PSC エンドポイントを作成する必要があります。ローカルマシンから限定公開クラスタ内のワークステーションに接続するには、ローカルマシンを VPC ネットワークに接続する必要があります。Cloud VPN または Cloud Interconnect を使用して、マシンを実行している外部ネットワークを VPC ネットワークに接続します。 この追加の PSC エンドポイントは、外部ネットワークが Cloud VPN または Cloud Interconnect を使用して接続するネットワーク内に作成する必要があります。
次の図は、限定公開クラスタのアーキテクチャの例を示しています。
図 1.
準備
始める前に、次の必要な設定手順を完了してください。
- 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.
-
Google Cloud Console の [プロジェクト セレクタ] ページで、Google Cloud プロジェクトを選択または作成します。
-
Google Cloud Console の [プロジェクト セレクタ] ページで、Google Cloud プロジェクトを選択または作成します。
-
Cloud Workstations API を有効にします。
-
ワークステーション構成を作成できるように、プロジェクトに Cloud Workstations 管理者の IAM ロールがあることを確認します。 Google Cloud コンソールで IAM ロールを確認するには、[IAM] ページに移動します。
-
constraints/compute.trustedimageProjects
組織ポリシーの制約が適用されている場合は、イメージの取得元であるプロジェクトを許可リストに追加する必要があります。- ネストされた仮想化を使用しない場合は、
cos-cloud
プロジェクトの Compute Engine VM イメージを使用する権限をプロジェクトに付与する必要があります。 - ネストされた仮想化を使用する場合は、
ubuntu-os-gke-cloud
プロジェクトの Compute Engine VM イメージを使用するための権限をプロジェクトに付与する必要があります。
詳細については、イメージ アクセスの制限を設定するをご覧ください。
- ネストされた仮想化を使用しない場合は、
-
省略可: Container File System API を有効にして、ワークステーションの起動を高速化します。
Container File System API を有効にする
詳細については、イメージ ストリーミングでワークステーションの起動時間を短縮するをご覧ください。
限定公開クラスタを作成する
限定公開クラスタを作成するには、次の手順を行います。
Google Cloud コンソールで、[Cloud Workstations] ページに移動します。
ワークステーションの [クラスタの管理] ページに移動します。
[作成] をクリックします。
[名前] を入力し、ワークステーション クラスタの [リージョン] を選択します。
[ネットワーキング] セクションで、[このプロジェクトのネットワーク] を選択します。
[ネットワーク] と [サブネットワーク] を選択します。
[ゲートウェイの種類] で [プライベート ゲートウェイ] を選択します。
省略可: 限定公開クラスタへの HTTP アクセスを有効にする Private Service Connect エンドポイントをホストする 1 つ以上の追加プロジェクトを指定します。デフォルトでは、このエンドポイントはワークステーション クラスタ プロジェクトと VPC ネットワーク ホスト プロジェクトにのみ作成できます(異なる場合)。必要に応じて、クラスタの作成後にこれらのプロジェクトを指定することもできます。
[作成] をクリックします。
限定公開クラスタの接続を有効にする
クライアントは、公共のインターネットからプライベート ワークステーション クラスタのワークステーションに接続できません。クライアントは、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
を追加する必要が生じる場合があります。