設定 VPC Service Controls

Cloud Composer 3 | Cloud Composer 2 | Cloud Composer„�

VPC Service Controls 可讓機構在Google Cloud 資源周圍定義安全範圍,降低資料竊取風險。

您可以在服務安全防護範圍內部署 Cloud Composer 環境。透過使用 VPC Service Controls 設定環境,您就能使用 Cloud Composer 的全代管工作流程協調功能,同時確保機密資料不外洩。

VPC Service Controls 支援 Cloud Composer,代表:

  • 現在可以選取 Cloud Composer,做為 VPC Service Controls 範圍內的受保護服務。
  • Cloud Composer 使用的所有基礎資源都已設定為支援 VPC Service Controls 架構,並遵循相關規則。

使用 VPC Service Controls 部署 Cloud Composer 環境可提供以下優勢:

  • 降低資料外洩風險。
  • 防止因存取控制設定錯誤而導致資料外洩。
  • 降低惡意使用者將資料複製到未經授權的Google Cloud 資源,或外部攻擊者從網際網路存取Google Cloud 資源的風險。

Cloud Composer 中的 VPC Service Controls 簡介

  • 如果環境執行 Cloud Composer 1.12.0 以上版本和 Airflow 1.10.9 以上版本,且已啟用 DAG 序列化,即可在網頁介面中顯示含有函式的算繪範本。

  • 啟用 DAG 序列化時,不支援將 async_dagbag_loader 旗標設為 True

  • 啟用 DAG 序列化功能後,系統會停用所有 Airflow 網路伺服器外掛程式,因為這些外掛程式可能會危及 Cloud Composer 部署所在的 VPC 網路安全。這不會影響排程器或工作站外掛程式的行為,包括 Airflow 運算子和感應器。

  • 如果 Cloud Composer 環境受到安全防護範圍保護,則無法存取公開 PyPI 存放區。詳情請參閱「在 VPC Service Controls 中安裝 PyPI 套件」。

  • 如果您的環境使用私人 IP 網路所有內部流量都會路由至您的虛擬私有雲網路,但透過私人 Google 存取權可供私人 IP 環境使用的 Google API、服務和網域除外。

  • 視虛擬私有雲網路的設定方式而定,私人 IP 環境可透過虛擬私有雲網路存取網際網路

  • 在 VPC Service Controls 模式下,Cloud Composer 會執行兩個 Airflow 網路伺服器執行個體。Identity-Aware Proxy 會在這些執行個體之間平衡使用者流量。Airflow 網路伺服器會以「唯讀」模式執行,也就是說:

    • 已啟用 DAG 序列化。因此,Airflow 網路伺服器不會剖析 DAG 檔案。

    • 外掛程式不會同步到網頁伺服器,因此您無法使用外掛程式修改或擴充網頁伺服器的功能。

    • Airflow 網頁伺服器會使用 Cloud Composer 服務預先建構的容器映像檔。如果您在環境中安裝 PyPI 映像檔,這些映像檔不會安裝在網頁伺服器容器映像檔中。

在範圍內建立環境

如要在安全防護範圍內部署 Cloud Composer,請按照下列步驟操作:

  1. 為專案啟用 Access Context Manager APICloud Composer API。如需參考資料,請參閱「啟用 API」。

  2. 請確認服務範圍具有下列可存取虛擬私有雲的服務,否則環境可能無法建立:

    • Cloud Composer API (composer.googleapis.com)
    • Compute Engine API (compute.googleapis.com)
    • Kubernetes Engine API (container.googleapis.com)
    • Container Registry API (containerregistry.googleapis.com)
    • Artifact Registry API (artifactregistry.googleapis.com)
    • Cloud Storage API (storage.googleapis.com)
    • Cloud SQL Admin API (sqladmin.googleapis.com)
    • Cloud Logging API (logging.googleapis.com)
    • Cloud Monitoring API (monitoring.googleapis.com)
    • Cloud Pub/Sub API (pubsub.googleapis.com)
    • Cloud Cloud Resource Manager API (cloudresourcemanager.googleapis.com)
    • Service Directory API (servicedirectory.googleapis.com)
    • 如果您使用 Cloud KMS 或 CMEK 金鑰,請使用 Cloud Key Management Service API (cloudkms.googleapis.com)。
    • 如果您使用 Secret Manager 做為密鑰後端,請啟用 Secret Manager API (secretmanager.googleapis.com)。
  3. 建立新的 Cloud Composer 環境,並啟用「私人 IP」。請注意,這項設定必須在建立環境時設定

    • 使用 composer-1.10.4 以上版本。

    • 確認已啟用 DAG 序列化。如果環境使用 Cloud Composer 1.15.0 以上版本,系統預設會啟用序列化功能。

    • 建立環境時,請記得設定 Airflow 網路伺服器的存取權。為提升保護力,請只允許特定 IP 範圍存取網路伺服器。詳情請參閱「設定網路伺服器網路存取權」。

將現有環境新增至範圍

在 VPC Service Controls 中安裝 PyPI 套件

在預設的 VPC Service Controls 設定中,Cloud Composer 僅支援從可透過 VPC 網路內部 IP 位址空間存取的私人存放區安裝 PyPI 套件。

從私人存放區安裝

建議的設定是建立私人 PyPI 存放區:

  1. 填入貴機構使用的經過審查的套件,然後設定 Cloud Composer從私人存放區安裝 Python 依附元件

  2. 如要從私人存放區安裝套件,請按照「存取權控管」一文所述,授予環境服務帳戶額外權限。

從公開存放區安裝

遠端存放區

建議您使用這種方式從公開存放區安裝套件。

如要從私人 IP 空間以外的存放區安裝 PyPI 套件,請按照下列步驟操作:

  1. 建立 Artifact Registry 遠端存放區
  2. 授予這個存放區上游來源的存取權
  3. 設定 Airflow,從 Artifact Registry 存放區安裝套件
  4. 存取權控管一文所述,將從 Artifact Registry 存放區安裝套件的其他權限授予環境的服務帳戶。

外部連線

如要從私人 IP 空間以外的存放區安裝 PyPI 套件,請按照下列步驟操作:

  1. 設定 Cloud NAT,允許在私人 IP 空間中執行的 Cloud Composer 連線至外部 PyPI 存放區。

  2. 設定防火牆規則,允許 Composer 叢集與存放區建立外送連線。

設定連線至 Google API 和服務

在 VPC Service Controls 設定中,如要控管網路流量,請透過 restricted.googleapis.com 設定 Google API 和服務的存取權。這個網域會封鎖對不支援 VPC Service Controls 的 Google API 和服務的存取權。

Cloud Composer 環境會使用下列網域:

  • *.googleapis.com 用於存取其他 Google 服務。

  • *.pkg.dev 用於取得環境映像檔,例如建立或更新環境時。

  • *.gcr.io 無論 Cloud Composer 版本為何,GKE 都必須連線至 Container Registry 網域。

設定與 restricted.googleapis.com 端點的連線:

網域 DNS 名稱 CNAME 記錄 A 記錄
*.googleapis.com googleapis.com. DNS 名稱:*.googleapis.com.
資源記錄類型:CNAME
正式名稱:googleapis.com.
資源記錄類型:A
IPv4 位址:199.36.153.4199.36.153.5199.36.153.6199.36.153.7
*.pkg.dev pkg.dev. DNS 名稱:*.pkg.dev.
資源記錄類型:CNAME
正式名稱:pkg.dev.
資源記錄類型:A
IPv4 位址:199.36.153.4199.36.153.5199.36.153.6199.36.153.7
*.gcr.io gcr.io. DNS 名稱:*.gcr.io.
資源記錄類型:CNAME
正式名稱:gcr.io.
資源記錄類型:A
IPv4 位址:199.36.153.4199.36.153.5199.36.153.6199.36.153.7

如何建立 DNS 規則:

  1. 建立新的 DNS 區域,並使用「DNS name」(DNS 名稱)做為這個區域的 DNS 名稱。

    範例:pkg.dev.

  2. CNAME 記錄新增記錄集

    範例:

    • DNS 名稱:*.pkg.dev.
    • 資源記錄類型:CNAME
    • 標準名稱:pkg.dev.
  3. 新增記錄集,適用於 A 記錄

    範例:

    • 資源記錄類型:A
    • IPv4 位址:199.36.153.4199.36.153.5199.36.153.6199.36.153.7

詳情請參閱「設定連至 Google API 與服務的私人連線」。

設定防火牆規則

如果專案有非預設的防火牆規則 (例如會覆寫默示防火牆規則的規則),或修改預設網路中預先填入的規則,請確認已設定下列防火牆規則。

舉例來說,如果您有拒絕所有輸出流量的防火牆規則,Cloud Composer 可能就無法建立環境。為避免發生問題,請定義選擇性 allow 規則,並遵循清單,將優先順序設為高於全域 deny 規則。

設定虛擬私有雲網路,允許環境傳出的流量:

  • 如要瞭解如何檢查、新增及更新虛擬私有雲網路的規則,請參閱「使用防火牆規則」。
  • 使用連線工具驗證 IP 範圍之間的連線。
  • 您可以使用網路標記進一步限制存取權。您可以在建立環境時設定這些標籤。
說明 方向 動作 來源或目的地 通訊協定 通訊埠
DNS

這篇文章所述設定 Cloud DNS 的 VPC Service Controls 支援功能
- - - - -
Google API 和服務 輸出 允許 restricted.googleapis.com 您用於 Google API 和服務的 IPv4 位址 TCP 443
環境的叢集節點 輸出 允許 環境的子網路主要 IP 位址範圍 TCP、UDP 全部
環境的叢集 Pod 輸出 允許 環境子網路中 Pod 的次要 IP 位址範圍 TCP、UDP 全部
環境的叢集控制層 輸出 允許 GKE 控制層 IP 範圍 TCP、UDP 全部
網路伺服器 輸出 允許 網路伺服器網路 IP 範圍 TCP 3306、3307

如要取得環境叢集的 IP 範圍,請按照下列步驟操作:

  • 您可以在環境叢集的「叢集」頁面上查看 Pod、Service 和控制層的位址範圍:

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

      前往「環境」

    2. 在環境清單中,按一下環境名稱。 「環境詳細資料」頁面隨即開啟。

    3. 前往「環境設定」分頁。

    4. 點選「查看叢集詳細資料」連結。

  • 您可以在「環境設定」分頁中,查看環境的網頁伺服器 IP 範圍。

  • 您可以在「環境設定」分頁中查看環境的網路 ID。如要取得子網路的 IP 範圍,請前往「VPC Networks」(虛擬私有雲網路) 頁面,然後按一下網路名稱查看詳細資料:

    前往「VPC Networks」(虛擬私有雲網路) 頁面

VPC Service Controls 記錄

排解環境建立問題時,您可以分析 VPC Service Controls 產生的稽核記錄。

除了其他記錄訊息,您還可以查看記錄,瞭解設定環境元件的cloud-airflow-prod@system.gserviceaccount.comservice-PROJECT_ID@cloudcomposer-accounts.iam.gserviceaccount.com服務帳戶資訊。

Cloud Composer 服務會使用 cloud-airflow-prod@system.gserviceaccount.com 服務帳戶管理環境的租戶專案元件

service-PROJECT_ID@cloudcomposer-accounts.iam.gserviceaccount.com 服務帳戶 (又稱 Composer 服務代理程式服務帳戶) 會管理服務和主專案中的環境元件。

後續步驟