代管 Airflow (第 3 代) | 代管 Airflow (第 2 代) | 代管 Airflow (舊版第 1 代)
VPC Service Controls 可讓機構在Google Cloud 資源周圍定義安全範圍,降低資料竊取風險。
您可以在服務範圍內部署 Managed Airflow 環境。透過使用 VPC Service Controls 設定環境,您就能在運用 Managed Airflow 的全代管工作流程自動化調度管理功能的同時,確保機密資料不外洩。
VPC Service Controls 支援 Managed Airflow,代表:
- 現在可以選取 Managed Airflow,做為 VPC Service Controls 範圍內的受保護服務。
- Managed Airflow 使用的所有基礎資源都已設定為支援 VPC Service Controls 架構,並遵循相關規則。
使用 VPC Service Controls 部署 Managed Airflow 環境可提供以下優點:
- 降低資料竊取風險。
- 防止因存取控管設定錯誤而導致資料外洩。
- 降低惡意使用者將資料複製到未經授權的資源,或外部攻擊者從網際網路存取資源的風險。Google Cloud Google Cloud
Managed Airflow 中的 VPC Service Controls
- 所有 VPC Service Controls 網路限制也適用於受管理 Airflow 環境。詳情請參閱 VPC Service Controls 說明文件。
如果 Managed Airflow 環境受到 perimeter 保護,則無法存取公開 PyPI 存放區。詳情請參閱「在 VPC Service Controls 中安裝 PyPI 套件」。
如果您的環境使用私人 IP 網路,所有內部流量都會路由至您的虛擬私有雲網路,但透過 Private Google Access 傳送至私人 IP 環境可用的 Google API、服務和網域的流量除外。
視虛擬私有雲網路的設定方式而定,私人 IP 環境可透過虛擬私有雲網路存取網際網路。
Managed Airflow 不支援在輸入和輸出規則中使用第三方身分,允許 Apache Airflow UI 作業。不過,您可以在輸入和輸出規則中使用
ANY_IDENTITY身分類型,允許存取所有身分,包括第三方身分。如要進一步瞭解ANY_IDENTITY身分類型,請參閱「輸入和輸出規則」一文。在 VPC Service Controls 模式下,網路伺服器的存取權會受到 perimeter 保護,且系統會封鎖來自 perimeter 外部的存取權。如要允許從服務範圍外存取,請視需要設定存取層級或輸入和輸出規則。此外,您也可以限制只有特定 IP 範圍能存取網路伺服器。
使用 Shared VPC 和 CMEK 的環境適用的安全防護範圍
如果您的環境受到服務範圍保護,且使用 Shared VPC、客戶管理的加密金鑰 (CMEK) 或兩者,請確保下列專案位於同一個服務範圍:
- 服務專案:包含 Managed Airflow 環境的專案。
- 主專案:包含共用虛擬私有雲網路的專案。
- 用於代管 Cloud Key Management Service 金鑰的專案。
在範圍內建立環境
如要在安全防護範圍內部署 Managed Airflow,請按照下列步驟操作:
為專案啟用 Access Context Manager API 和 Cloud Composer API。如需參考資料,請參閱「啟用 API」。
請確認服務範圍具有下列可透過虛擬私有雲存取的服務,否則環境可能無法建立:
- 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 KMS 或 CMEK 金鑰,請使用 Cloud Key Management Service API (cloudkms.googleapis.com)。
- 如果您使用 Secret Manager 做為密碼後端,請啟用 Secret Manager API (secretmanager.googleapis.com)。
建立新的 Managed Airflow 環境:
必須啟用私人 IP。請注意,這項設定必須在建立環境時設定。
請記得設定 Airflow 網路伺服器的存取權。為提升保護力,請只允許特定 IP 範圍存取網頁伺服器。詳情請參閱「設定網路伺服器網路存取權」。
根據預設,只有在安全防護範圍內,才能存取 Airflow UI 和 API。如要開放安全 perimeter 外部存取,請設定存取層級或輸入和輸出規則。
將現有環境新增至 perimeter
如要將含有環境的專案新增至安全範圍,請確認符合下列條件:
- 您已按照上一節的說明建立或設定安全防護範圍。
- 您的環境使用私人 IP。
在 VPC Service Controls 中安裝 PyPI 套件
在預設的 VPC Service Controls 設定中,Managed Airflow 僅支援從可透過虛擬私有雲網路內部 IP 位址空間連線的私人存放區,安裝 PyPI 套件。
根據預設,VPC Service Controls 邊界內的所有 Managed Airflow 環境都無法存取公開 PyPI 存放區。
從私人存放區安裝
建議設定私人 PyPI 存放區:
在存放區中填入貴機構使用的經過審查的套件,然後設定 Managed Airflow,從私人存放區安裝 Python 依附元件。
如要從私人存放區安裝套件,請按照「存取控管」一文所述,授予環境的服務帳戶額外權限。
從公開存放區安裝
遠端存放區
建議您採用這種做法,從公開存放區安裝套件。
如要從私人 IP 空間以外的存放區安裝 PyPI 套件,請按照下列步驟操作:
- 建立 Artifact Registry 遠端存放區。
- 授予這個存放區上游來源的存取權。
- 設定 Airflow,從 Artifact Registry 存放區安裝套件。
- 如存取權控管一文所述,將從 Artifact Registry 存放區安裝套件的其他權限授予環境的服務帳戶。
外部連線
如要從私人 IP 空間以外的存放區安裝 PyPI 套件,請按照下列步驟操作:
設定連線至 Google API 和服務
在 VPC Service Controls 設定中,如要控管網路流量,請透過 restricted.googleapis.com 設定 Google API 和服務的存取權。這個網域會封鎖對不支援 VPC Service Controls 的 Google API 和服務的存取權。
Managed Airflow 環境會使用下列網域:
*.googleapis.com用於存取其他 Google 服務。*.composer.cloud.google.com用於存取環境的 Airflow 網路伺服器。您必須先套用這項規則,才能建立環境。- 您也可以為特定區域建立規則。如要這麼做,請使用
REGION.composer.cloud.google.com。將REGION替換為環境所在的區域,例如us-central1。
- 您也可以為特定區域建立規則。如要這麼做,請使用
(選用) 存取環境的 Airflow 網路伺服器時,會使用
*.composer.googleusercontent.com。只有在從虛擬私有雲網路中執行的執行個體存取 Airflow 網路伺服器時,才需要這項規則,否則不需要。這項規則的常見情境是您想從虛擬私有雲網路內呼叫 Airflow REST API。- 您也可以為特定環境建立規則。如要這麼做,請使用
ENVIRONMENT_WEB_SERVER_NAME.composer.googleusercontent.com。將ENVIRONMENT_WEB_SERVER_NAME替換為環境 Airflow 使用者介面網址的專屬部分,例如bffe6ce6c4304c55acca0e57be23128c-dot-us-central1。
- 您也可以為特定環境建立規則。如要這麼做,請使用
*.pkg.dev用於取得環境映像檔,例如建立或更新環境時。*.gcr.io無論 Managed Airflow 版本為何,GKE 都必須連線至 Container Registry 網域。
設定與 restricted.googleapis.com 端點的連線:
| 網域 | DNS 名稱 | CNAME 記錄 | A 記錄 |
|---|---|---|---|
*.googleapis.com
|
googleapis.com. |
DNS 名稱:*.googleapis.com.資源記錄類型: CNAME正式名稱: googleapis.com. |
資源記錄類型:AIPv4 位址: 199.36.153.4、199.36.153.5、199.36.153.6、199.36.153.7
|
*.composer.cloud.google.com
|
composer.cloud.google.com. |
DNS 名稱:*.composer.cloud.google.com.資源記錄類型: CNAME正式名稱: composer.cloud.google.com. |
資源記錄類型:AIPv4 位址: 199.36.153.4、199.36.153.5、199.36.153.6、199.36.153.7
|
*.composer.googleusercontent.com
(選填,請參閱說明) |
composer.googleusercontent.com. |
DNS 名稱:*.composer.googleusercontent.com.資源記錄類型: CNAME正式名稱: composer.googleusercontent.com. |
資源記錄類型:AIPv4 位址: 199.36.153.4、199.36.153.5、199.36.153.6、199.36.153.7
|
*.pkg.dev
|
pkg.dev. |
DNS 名稱:*.pkg.dev.資源記錄類型: CNAME正式名稱: pkg.dev. |
資源記錄類型:AIPv4 位址: 199.36.153.4、199.36.153.5、199.36.153.6、199.36.153.7
|
*.gcr.io
|
gcr.io. |
DNS 名稱:*.gcr.io.資源記錄類型: CNAME正式名稱: gcr.io. |
資源記錄類型:AIPv4 位址: 199.36.153.4、199.36.153.5、199.36.153.6、199.36.153.7
|
如要建立 DNS 規則,請按照下列步驟操作:
建立新的 DNS 區域,並使用「DNS name」(DNS 名稱) 做為這個區域的 DNS 名稱。
範例:
pkg.dev.為 CNAME 記錄新增記錄集。
範例:
- DNS 名稱:
*.pkg.dev. - 資源記錄類型:
CNAME - 標準名稱:
pkg.dev.
- DNS 名稱:
新增記錄集,適用於 A 記錄:
範例:
- 資源記錄類型:
A - IPv4 位址:
199.36.153.4、199.36.153.5、199.36.153.6、199.36.153.7
- 資源記錄類型:
詳情請參閱「設定連至 Google API 和服務的私人連線」。
設定防火牆規則
如果專案有非預設的防火牆規則 (例如會覆寫默示防火牆規則的規則),或修改預設網路中預先填入的規則,請確認已設定下列防火牆規則。
舉例來說,如果您有拒絕所有輸出流量的防火牆規則,Managed Airflow 可能就無法建立環境。為避免發生問題,請定義遵循清單且優先順序高於全域 deny 規則的選擇性 allow 規則。
設定虛擬私有雲網路,允許環境傳出的流量:
| 說明 | 方向 | 動作 | 來源或目的地 | 通訊協定 | 通訊埠 |
|---|---|---|---|---|---|
| DNS 按照「Cloud DNS 的 VPC Service Controls 支援」一文中的說明進行設定 |
- | - | - | - | - |
| Google API 和服務 | 輸出 | 允許 | restricted.googleapis.com 的 IPv4 位址,用於 Google API 和服務。 |
TCP | 443 |
| 環境的叢集節點 | 輸出 | 允許 | 環境的子網路主要 IP 位址範圍 | TCP、UDP | 全部 |
| 環境的叢集 Pod | 輸出 | 允許 | 環境子網路中 Pod 的次要 IP 位址範圍 | TCP、UDP | 全部 |
| 環境的叢集控制層 | 輸出 | 允許 | GKE 控制層 IP 範圍 | TCP、UDP | 全部 |
| (如果您的環境使用 Private Service Connect) 連線子網路 | 輸出 | 允許 | Managed Airflow 連線子網路範圍 | TCP | 3306、3307、19090 |
| (如果您的環境使用 VPC 對等互連) 租戶網路 | 輸出 | 允許 | Managed Airflow 租戶網路 IP 範圍 | TCP | 3306、3307、19090 |
如要取得環境叢集的 IP 範圍,請按照下列步驟操作:
您可以在環境叢集的「叢集」頁面上,查看 Pod、Service 和控制層的位址範圍:
前往 Google Cloud 控制台的「Environments」(環境) 頁面。
在環境清單中,按一下環境名稱。 「環境詳細資料」頁面隨即開啟。
前往「環境設定」分頁。
點選「查看叢集詳細資料」連結。
您可以在「環境設定」分頁中,查看環境的受管理 Airflow 租戶網路 IP 範圍。
您可以在「環境設定」分頁中,查看環境的子網路 ID 和 Managed Airflow 連線子網路 ID。如要取得子網路的 IP 範圍,請前往「VPC Networks」(虛擬私有雲網路) 頁面,然後按一下網路名稱查看詳細資料:
VPC Service Controls 記錄
排解環境建立問題時,您可以分析 VPC Service Controls 產生的稽核記錄。
除了其他記錄訊息,您還可以查看記錄,瞭解設定環境元件的cloud-airflow-prod@system.gserviceaccount.com和service-PROJECT_ID@cloudcomposer-accounts.iam.gserviceaccount.com服務帳戶資訊。
Managed Airflow 服務會使用 cloud-airflow-prod@system.gserviceaccount.com 服務帳戶管理環境的租戶專案元件。
service-PROJECT_ID@cloudcomposer-accounts.iam.gserviceaccount.com 服務帳戶 (又稱 Composer 服務代理程式服務帳戶) 會管理服務和主專案中的環境元件。