設定 VPC Service Controls

Cloud Composer 3 | Cloud Composer 2 | Cloud Composer 1

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

Cloud Composer 環境可部署在服務範圍內。使用 VPC Service Controls 設定環境,即可在確保機密資料隱密性的同時,充分運用 Cloud Composer 的全代管工作流程自動化調度管理功能。

Cloud Composer 支援 VPC Service Controls 表示:

  • 您現在可以選取 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. 為專案啟用 Access Context Manager APICloud Composer API。請參閱「啟用 API」一文。

  2. 請確認服務範圍包含下列可存取 VPC 的服務,否則環境可能無法建立:

    • 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)
    • Security Token Service API (sts.googleapis.com)
    • Cloud Resource Manager API (cloudresourcemanager.googleapis.com)
    • Service Directory API (servicedirectory.googleapis.com)
    • Cloud Key Management Service API (cloudkms.googleapis.com) (如果您使用 Cloud KMS 或 CMEK 金鑰)。
    • Secret Manager API (secretmanager.googleapis.com),如果您將 Secret Manager 用作密鑰後端。
  3. 建立新的 Cloud Composer 環境:

    • 必須啟用私人 IP。請注意,這項設定必須在建立環境時設定

    • 請務必設定 Airflow 網路伺服器的存取權。為提升保護力,請只允許來自特定 IP 範圍的存取要求存取網路伺服器。詳情請參閱「設定網路伺服器網路存取權」。

  4. 根據預設,只有安全性邊界內的使用者才能存取 Airflow UI 和 API。如果您想在安全邊界之外使用,請設定存取層級入站和出站規則

將現有環境新增至範圍

您可以將包含環境的專案新增至安全範圍,前提條件如下:

  • 您已按照上一節的說明建立或設定邊界。
  • 您的環境使用私人 IP。

在 VPC Service Controls 中安裝 PyPI 套件

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

根據預設,VPC 服務控管範圍內的所有 Cloud Composer 環境都無法存取公開 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 服務。

  • *.composer.cloud.google.com 可讓您存取環境的 Airflow 網路伺服器。您必須先套用這項規則,才能建立環境。

    • 您也可以為特定區域建立規則。方法是使用 REGION.composer.cloud.google.com。將 REGION 替換為環境所在的區域,例如 us-central1
  • (選用) *.composer.googleusercontent.com 會在存取環境的 Airflow 網路伺服器時使用。只有在您從在虛擬私人雲端網路中執行的執行個體存取 Airflow 網路伺服器時,才需要這項規則,否則不需要。這項規則的常見情境是,您想在虛擬私有雲網路中呼叫 Airflow REST API。

    • 您也可以為特定環境建立規則。方法是使用 ENVIRONMENT_WEB_SERVER_NAME.composer.googleusercontent.com。將 ENVIRONMENT_WEB_SERVER_NAME 替換為環境 Airflow UI 網址的專屬部分,例如 bffe6ce6c4304c55acca0e57be23128c-dot-us-central1
  • *.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
*.composer.cloud.google.com composer.cloud.google.com. DNS 名稱:*.composer.cloud.google.com.
資源記錄類型:CNAME
正式名稱:composer.cloud.google.com.
資源記錄類型:A
IPv4 位址:199.36.153.4199.36.153.5199.36.153.6199.36.153.7
*.composer.googleusercontent.com
(選用,請參閱說明)
composer.googleusercontent.com. DNS 名稱:*.composer.googleusercontent.com.
資源記錄類型:CNAME
正式名稱:composer.googleusercontent.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 名稱」做為此區域的 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 規則。

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

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

請按照「VPC Service Controls 支援 Cloud DNS」一文所述進行設定
- - - - -
Google API 和服務 輸出 允許 restricted.googleapis.com 用於 Google API 和服務的 IPv4 位址。 TCP 443
環境的叢集節點 輸出 允許 環境的子網路主要 IP 位址範圍 TCP、UDP 全部
環境的叢集 Pod 輸出 允許 環境子網路中 Pod 的次要 IP 位址範圍 TCP、UDP 全部
環境的叢集控制層 輸出 允許 GKE 控制層 IP 範圍 TCP、UDP 全部
(如果您的環境使用 Private Service Connect) 連線子網路 輸出 允許 Cloud Composer 連線子網路範圍 TCP 3306、3307
(如果您的環境使用 VPC 對等互連) 租用戶網路 輸出 允許 Cloud Composer 用戶群網路 IP 範圍 TCP 3306、3307

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

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

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

      前往「環境」

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

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

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

  • 您可以在「環境設定」分頁中查看環境的 Cloud Composer 用戶群網路 IP 範圍。

  • 您可以在「環境設定」分頁中查看環境的子網路 ID 和 Cloud Composer 連線子網路 ID。如要取得子網路的 IP 範圍,請前往「VPC 網路」頁面,然後按一下網路名稱查看詳細資料:

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

VPC Service Controls 記錄

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

除了其他記錄訊息外,您也可以查看記錄,瞭解設定環境元件的 [email protected]service-PROJECT_ID@cloudcomposer-accounts.iam.gserviceaccount.com 服務帳戶相關資訊。

Cloud Composer 服務會使用 [email protected] 服務帳戶管理環境的租用戶專案元件

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

後續步驟