設定 VPC Service Controls 和私人叢集

本頁面說明 VPC Service Controls 和私人叢集的運作方式,以及如何在 Cloud Workstations 中設定這些叢集。

VPC Service Controls

VPC Service Controls 可為工作站提供額外安全防護,降低資料竊取的風險。使用 VPC Service Controls 時,可將專案納入 service perimeter,防止來自 perimeter 外的要求存取資源和服務。

在虛擬私有雲 service perimeter 使用 Cloud Workstations 的需求如下:

  • 為保護 Cloud Workstations,每當您限制 Cloud Workstations API 時,也必須限制 service perimeter 中的 Compute Engine API。
  • 確認 Google Cloud Storage API 和 Artifact Registry API 在 service perimeter 內 可透過虛擬私有雲存取。必須具備這項權限,才能將映像檔提取至工作站。 雖然 Cloud Workstations 不要求您這麼做,但我們也建議您允許 Cloud Logging API 和 Cloud Error Reporting API 在 service perimeter 內透過虛擬私有雲存取。

  • 確認工作站叢集為私人。設定私人叢集後,系統會禁止從虛擬私有雲服務範圍外連線至工作站。Cloud Workstations 服務會禁止在虛擬私有雲 service perimeter 內建立公開叢集。
  • 請務必在工作站設定中關閉公開 IP 位址。否則專案中的 VM 會具有公開 IP 位址。強烈建議您使用 constraints/compute.vmExternalIpAccess 組織政策限制,關閉虛擬私有雲服務範圍內所有 VM 的公開 IP 位址。詳情請參閱「將外部 IP 位址限制為特定 VM」。

如要進一步瞭解 service perimeter,請參閱「service perimeter 詳細資料和設定」。

架構

將工作站叢集設為私人叢集時,工作站叢集的控制層只會有內部 IP 位址。也就是說,公開網際網路的用戶端無法連線至屬於工作站叢集的工作站。如要使用私人叢集,您必須透過 Private Service Connect 端點,手動將私人叢集連線至虛擬私有雲 (VPC) 網路。

私人叢集的設定需要兩個 PSC 端點:

  • 根據預設,Cloud Workstations 會建立獨立的 PSC 端點,將控制層連至工作站 VM。

  • 您必須為私人叢集建立額外的 PSC 端點。如要從本機電腦連線至私人叢集中的工作站,本機電腦必須連線至虛擬私有雲網路。使用 Cloud VPN 或 Cloud Interconnect,將執行機器的外部網路連線至虛擬私有雲網路。這個額外的 PSC 端點必須建立在與外部網路連線的相同網路中,並使用 Cloud VPN 或 Cloud Interconnect。

下圖說明私人叢集的架構範例:

圖 1. 私人叢集

事前準備

開始前,請務必完成下列必要設定步驟:

  1. 登入 Google Cloud 帳戶。如果您未曾使用過 Google Cloud,歡迎 建立帳戶,親自體驗實際使用我們產品的成效。新客戶還能獲得價值 $300 美元的免費抵免額,用於執行、測試及部署工作負載。
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

  4. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  5. Verify that billing is enabled for your Google Cloud project.

  6. 啟用 Cloud Workstations API (如果尚未啟用)。

    啟用 API 所需的角色

    您必須具備 serviceusage.services.enable 權限,才能啟用 API。如果您建立了專案,可能已透過擁有者角色 (roles/owner) 取得這項權限。否則,您可以透過 Service Usage 管理員角色 (roles/serviceusage.serviceUsageAdmin) 取得這項權限。瞭解如何授予角色。

    啟用 API

  7. 確認您具備專案的 Cloud Workstations 管理員 IAM 角色,以便建立工作站設定。如要在 Google Cloud 控制台中查看 IAM 角色,請前往「IAM」頁面:

    前往「IAM」頁面

  8. Cloud Workstations 託管於從 Compute Engine 預先設定的公開 Container-Optimized OS (COS) 映像檔啟動的 VM。如果強制執行 constraints/compute.trustedimageProjects 組織政策限制,您必須設定映像檔存取限制,允許使用者從 projects/cos-cloud 或所有公開映像檔建立開機磁碟。
  9. Cloud Workstations 會使用 Private Service Connect 連線至 Google 代管服務。如果組織強制執行 constraints/compute.restrictPrivateServiceConnectProducer 組織政策限制,您必須將 Google 新增為允許的供應商 (under:organizations/433637338589)。
  10. 如果貴組織強制執行 constraints/compute.disablePrivateServiceConnectCreationForConsumers 組織政策限制,請務必允許連線至 Google API (GOOGLE_APIS) 的 Private Service Connect 端點。如果設定私人叢集,也必須允許連至已發布服務 (SERVICE_PRODUCERS) 的端點。
  11. 選用:啟用 Container 檔案系統 API,加快工作站啟動速度。

    啟用 Container File System API

    詳情請參閱「使用映像檔串流功能縮短工作站啟動時間」。

建立私人叢集

請按照下列步驟建立私人叢集:

  1. 前往 Google Cloud 控制台的「Cloud Workstations」頁面。

    前往「Cloud Workstations」頁面

  2. 前往工作站的「Cluster management」(叢集管理) 頁面。

  3. 點選「建立」。

  4. 輸入「名稱」,並選取工作站叢集的「區域」。

  5. 在「網路」部分,選取「這項專案中的網路」。

  6. 選取「網路」和「子網路」。

  7. 在「Gateway type」(閘道類型) 部分,選取「Private gateway」(私人閘道)。

  8. 選用:指定一或多個額外專案,用於託管 Private Service Connect 端點,以便透過 HTTP 存取私人叢集。根據預設,這個端點只能在工作站叢集專案和虛擬私有雲網路主專案 (如果兩者不同) 中建立。如有需要,您也可以在建立叢集後指定這些專案。

  9. 點選「建立」。建立叢集時,狀態會顯示為「Updating」(更新中)。

    叢集會在幾分鐘內建立完成。叢集建立完成後,狀態可能會顯示為「Degraded」(已降級)。完成「建立 PSC 端點」一節中的步驟後,叢集狀態會在幾分鐘內變更為「Ready」(就緒)。

啟用私人叢集連線

用戶端無法從公開網際網路連線至私人工作站叢集中的工作站。用戶端必須位於使用 Private Service Connect (PSC) 連線至工作站叢集的網路。請按照本節中的步驟連線至工作站:

  1. 建立 PSC 端點,指定工作站服務連結。

  2. 建立私人 DNS 區域。

  3. 使用 Cloud DNS 建立 DNS 記錄,將叢集的主機名稱對應至 PSC 端點。

建立 Private Service Connect 端點

請按照下列步驟建立 PSC 端點:

  1. 在 Google Cloud 控制台中,前往「Private Service Connect」。

    前往「Private Service Connect」

  2. 按一下「Connected endpoints」(已連結的端點) 分頁標籤,然後點選「add」(新增)「Connect endpoint」(連結端點)。

  3. 在「目標」部分,選取「已發布的服務」。

  4. 在「Target service」(目標服務) 欄位中,輸入為工作站叢集建立的服務連結 URI。如要查看這個值,請在控制台前往工作站叢集,然後在「聯播網設定」 下方尋找「Service attachment URI」(服務連結 URI) 欄位。

  5. 在「Endpoint」(端點) 欄位中輸入端點名稱。

  6. 選取端點的「網路」,然後選取「子網路」。這個網路應是您要用來連線至工作站的網路,且必須與外部網路透過 Cloud VPN 或 Cloud Interconnect 連線的網路相同。

  7. 選取端點的 IP 位址。

    如需新的 IP 位址,請選取「建立 IP 位址」:

    1. 輸入 IP 位址的「名稱」和「說明」(選填)。
    2. 在「靜態 IP 位址」部分,選取「自動指派」。如要使用「Custom IP address」(自訂 IP 位址),請選取「Let me choose」(讓我選擇),然後輸入要使用的 IP 位址。
    3. 在「用途」部分,選取「非共用」。
    4. 點選「保留」。
  8. 從下拉式選單中選取「Namespace」(命名空間),或建立新的命名空間。系統會根據所選子網路填入「Region」(區域)。

  9. 按一下「新增端點」。

  10. 複製端點的 IP 位址,以便在下一節中建立私人 DNS 區域和 DNS 記錄。

建立私人 DNS 區域

請按照下列步驟,為這個工作站叢集建立私人 DNS 區域,並將 DNS 名稱設為 clusterHostname。您可以在控制台前往工作站叢集,找到這個名稱。

  1. 前往 Google Cloud 控制台的「Create a DNS zone」(建立 DNS 區域) 頁面。

    前往「Create a DNS zone」(建立 DNS 區域)

  2. 在「Zone type」(區域類型) 中,選取「Private」(私人)。

  3. 在「Zone name」(區域名稱) 中輸入名稱,例如 private-workstations-cluster-zone。

  4. 輸入私人區域的「DNS name」(DNS 名稱) 尾碼,區域中的所有記錄都會使用這個尾碼。將這個名稱設為 clusterHostname。

    如要尋找 clusterHostname,請前往 Google Cloud 控制台的「Cloud Workstations」>「叢集管理工具」 頁面,然後按一下工作站叢集,即可查看主機名稱。

  5. 新增說明 (如有需要)。

  6. 在「Options」(選項) 下方選取「Default (private)」(預設 (私人))。

  7. 選取您在上一節建立 PSC 端點的網路,因為 IP 位址僅在該網路上有效。

  8. 點選「建立」。

如要進一步瞭解私人 DNS 區域,請參閱 Cloud DNS 說明文件,瞭解如何建立私人區域,以及 Cloud DNS 私人區域的最佳做法。

建立 DNS 記錄

如要新增記錄,將 *.<clusterHostname> 對應至建立 Private Service Connect 端點時預留的 IP 位址,請按照下列步驟操作:

  1. 前往 Google Cloud 控制台的「Cloud DNS zones」(Cloud DNS 區域) 頁面。

    前往 Cloud DNS 區域

  2. 按一下要新增記錄的代管區域名稱。

  3. 在「Zone details」(區域詳細資料) 頁面中,按一下「Add Standard」(新增標準)。

  4. 在「Create record set」(建立記錄集) 頁面的「DNS Name」(DNS 名稱) 欄位中,輸入 *.<clusterHostname>。

  5. 在「IP Address」(IP 位址) 欄位中,輸入您在上一節為 Private Service Connect 端點預留的 IP 位址。

  6. 點選「建立」。

  7. 虛擬私有雲網路現在應已連線至工作站叢集,您可以使用這個網路連線至工作站。

在地端部署環境啟用 DNS 解析

如要在工作站使用預設的瀏覽器編輯器,請透過連線至虛擬私有雲網路的機器使用瀏覽器。您可以使用 Cloud VPN 或 Cloud Interconnect,從執行瀏覽器的外部網路連線至虛擬私有雲網路。

如要從外部網路連線,您必須在外部網路中設定 DNS。與上述步驟類似,您可以為 clusterHostname 建立 DNS 區域,並新增記錄,將 *.<clusterHostname> 對應至建立 Private Service Connect 端點時預留的 IP 位址。或者,您也可以設定 DNS 轉送區域或 DNS 伺服器政策,在地端部署和 Google Cloud 環境之間查詢 DNS 名稱。

您可能也需要將 *cloudworkstations.dev 新增至地端部署基礎架構的許可清單。

設定 VPC Service Controls 以使用映像檔串流

如果您選擇啟用映像檔串流來縮短工作站啟動時間,且工作站叢集位於 VPC Service Controls 範圍內,則必須在範圍政策中設定下列項目:

  • 在 service perimeter 的受限服務中,加入 Container File System API (containerfilesystem.googleapis.com)。
  • 在 service perimeter 新增輸出規則,允許工作站設定中指定的服務帳戶,存取託管容器映像檔專案中的 Container File System API。
  • 如果您使用的是預先設定的 IDE,也必須設定輸出規則,允許存取 cloud-workstations-images 專案 (專案編號 662288601415)。

後續步驟