可接受的資源設定預防性控制項

Last reviewed 2025-05-15 UTC

建議您定義政策限制,以便強制執行可接受的資源設定,並避免有風險的設定。此範本會在管道中結合使用機構政策限制和基礎架構做為程式碼 (IaC) 驗證。這些控制項可防止建立不符合政策規範的資源。在設計及建構工作負載時盡早套用這些控制項,有助於日後避免修復作業。

機構政策限制

機構政策服務會強制執行限制,確保即使是具備足夠 IAM 角色權限的使用者,也無法在 Google Cloud 機構中建立特定資源設定。

藍圖會在機構節點中強制執行政策,讓機構中的所有資料夾和專案都繼承這些控制項。這組政策旨在防止特定高風險設定 (例如將 VM 暴露給公開網際網路,或授予存放區的公開存取權),除非您刻意允許政策例外狀況。

下表介紹藍圖中實作的機構政策限制

機構政策限制 說明

compute.disableNestedVirtualization

如果 Compute Engine VM 的巢狀虛擬化設定不當,可能會避開 VM 的監控和其他安全性工具。這項限制可避免建立巢狀虛擬化。

compute.disableSerialPortAccess

compute.instanceAdmin 等身分與存取權管理角色可透過 SSH 金鑰,對執行個體的序列埠授予特權存取權。如果 SSH 金鑰遭到揭露,攻擊者可能會存取序列埠,並繞過網路和防火牆控制項。這項限制可防止序列埠存取權。

compute.disableVpcExternalIpv6

如果外部 IPv6 子網路設定不當,可能會遭到未經授權的網際網路存取。這項限制可防止建立外部 IPv6 子網路。

compute.requireOsLogin

設定中繼資料中的 SSH 金鑰的預設行為,可在金鑰外洩的情況下,允許未經授權的遠端存取 VM。這項限制會強制使用 OS 登入,而非以中繼資料提供的安全殼層金鑰。

compute.restrictProtocolForwardingCreationForTypes

如果轉送設定不當,外部 IP 位址的VM 通訊協定轉送可能會導致未經授權的網際網路傳出流量。這項限制只允許針對內部位址執行 VM 通訊協定轉送。

compute.restrictXpnProjectLienRemoval

刪除共用虛擬私有雲主專案可能會影響所有使用網路資源的服務專案。這項限制可防止共用虛擬私有雲主專案遭到誤刪或惡意刪除,方法是防止移除這些專案的專案防刪除鎖定

compute.setNewProjectDefaultToZonalDNSOnly

我們不建議使用全域 (全專案) 內部 DNS的舊版設定,因為這會降低服務的可用性。這項限制可避免使用舊版設定。

compute.skipDefaultNetworkCreation

在啟用 Compute Engine API 的每個新專案中,系統都會建立預設 VPC 網路和過度寬鬆的預設 VPC 防火牆規則。這項限制會略過建立預設網路和預設虛擬私有雲防火牆規則的作業。

compute.vmExternalIpAccess

根據預設,VM 會使用外部 IPv4 位址建立,這可能會導致未經授權的網際網路存取。這項限制會設定空白的許可清單,其中包含 VM 可使用的外部 IP 位址,並拒絕所有其他 IP 位址。

essentialcontacts.allowedContactDomains

根據預設,重要聯絡人可設定為將貴機構網域的通知傳送至任何其他網域。這項限制會強制規定,只有已核准網域中的電子郵件地址才能設為重要聯絡人的收件者。

iam.allowedPolicyMemberDomains

根據預設,允許政策可授予任何 Google 帳戶,包括未受管理的帳戶,以及屬於外部機構的帳戶。這項限制可確保貴機構中的允許政策,只能授予您自有網域中的受管理帳戶。您也可以允許其他網域

iam.automaticIamGrantsForDefaultServiceAccounts

根據預設,預設服務帳戶會自動獲得過度寬鬆的角色。這項限制可防止系統自動為預設服務帳戶授予身分與存取權管理角色。

iam.disableServiceAccountKeyCreation

服務帳戶金鑰是高風險的持續性憑證,在大多數情況下,您可以使用比服務帳戶金鑰更安全的替代方案。這項限制會禁止建立服務帳戶金鑰。

iam.disableServiceAccountKeyUpload

上傳服務帳戶金鑰內容可能會增加金鑰內容外洩的風險。這項限制會禁止上傳服務帳戶金鑰。

sql.restrictAuthorizedNetworks

如果 Cloud SQL 執行個體設定為使用授權網路,但沒有 Cloud SQL 驗證 Proxy,則可能會暴露於未經認證的網際網路存取。這項政策會禁止設定授權網路,以便存取資料庫,並強制改用 Cloud SQL 驗證 Proxy。

sql.restrictPublicIp

如果您使用公開 IP 位址建立 Cloud SQL 執行個體,可能會暴露未經認證的網際網路存取權。這項限制可防止 Cloud SQL 執行個體使用公開 IP 位址

storage.uniformBucketLevelAccess

根據預設,您可以透過舊版存取控制清單 (ACL) 存取 Cloud Storage 中的物件,而非 IAM,這可能會導致存取控制不一致,並在設定錯誤時意外洩漏。iam.allowedPolicyMemberDomains 限制不會影響舊版 ACL 存取權。這項限制會強制規定只能透過 IAM 統一值區層級存取權設定存取權,而非舊版 ACL。

storage.publicAccessPrevention

如果設定不正確,Cloud Storage 值區可能會暴露給未經驗證的網際網路存取。這項限制會封鎖將存取權授予 allUsersallAuthenticatedUsers 的 ACL 和 IAM 權限。

這些政策是我們建議大多數客戶在大多數情況下採用的起點,但您可能需要修改機構政策限制,以便配合特定工作負載類型。舉例來說,如果工作負載使用 Cloud Storage 值區做為 Cloud CDN 代管公開資源的後端,就會遭到 storage.publicAccessPrevention 封鎖;如果公開對應的 Cloud Run 應用程式不需要驗證,也會遭到 iam.allowedPolicyMemberDomains 封鎖。在這種情況下,請修改資料夾或專案層級的機構政策,以便允許特定例外狀況。您也可以依條件為機構政策新增限制,方法是定義可為政策授予例外狀況或強制執行的標記,然後將標記套用至專案和資料夾。

如需其他限制,請參閱「可用的限制」和「自訂限制」。

基礎架構即程式碼的預先部署驗證

藍圖會使用 GitOps 方法管理基礎架構,也就是說,所有基礎架構變更都會透過版本管控的基礎架構即程式碼 (IaC) 導入,並可在部署前進行驗證。

藍圖中強制執行的政策會定義管道可部署的允許資源設定。如果提交至 GitHub 存放區的程式碼未通過政策檢查,系統就不會部署資源。

如要瞭解管道的使用方式,以及如何透過 CI/CD 自動化功能強制執行控管,請參閱部署方法

後續步驟