本頁面提供解決方案,協助您解決使用Google Cloud VPC Service Controls 範圍內服務時可能遇到的問題。
Cloud Build 問題
在 VPC Service Controls 範圍內使用 Cloud Build 資源時,會受到一些已知限制。詳情請參閱搭配 Cloud Build 使用 VPC Service Controls 的限制。
Cloud Build 服務帳戶無法存取受保護的資源
Cloud Build 會使用 Cloud Build 服務帳戶代表您執行建構作業。根據預設,在 Cloud Build 上執行建構作業時,建構作業會在專案外部的租戶專案中執行。
即使專案位於 VPC Service Controls 範圍內,產生建構輸出的 Cloud Build 工作站 VM 仍位於範圍外。因此,如要讓建構作業存取範圍內的資源,您必須將 Cloud Build 服務帳戶新增至存取層級或連入規則,藉此授予該帳戶 VPC Service Controls 範圍的存取權。
詳情請參閱授予 Cloud Build 服務帳戶 VPC Service Controls 服務範圍的存取權。
Cloud Storage 問題
以不存在的 Cloud Storage 記錄值區為目標時遭到拒絕
如果指定的記錄值區不存在,VPC Service Controls 會拒絕存取,並顯示 RESOURCES_NOT_IN_SAME_SERVICE_PERIMETER
違規原因。
您可以使用 VPC Service Controls 專屬 ID (vpcServiceControlUniqueIdentifier
) 查看存取遭拒的記錄。以下是含有 RESOURCES_NOT_IN_SAME_SERVICE_PERIMETER
違規原因的記錄範例:
"serviceName": "storage.googleapis.com",
"methodName": "google.storage.buckets.update",
"resourceName": "projects/325183452875",
"metadata": {
"violationReason": "RESOURCES_NOT_IN_SAME_SERVICE_PERIMETER",
...
"egressViolations": [
{
"sourceType": "Resource",
"targetResource": "projects/0/buckets/this-bucket-does-not-exist",
"source": "projects/325183452875/buckets/bucket-in-same-project",
"servicePerimeter": "accessPolicies/875573620132/servicePerimeters/prod_perimeter"
}]}
如果 egressViolations
物件中的 targetResource
欄位顯示目標 projects/0/buckets
,則系統一律會觸發拒絕,因為 projects/0
不存在,且視為超出服務範圍。
存取 Google 擁有的公開 Cloud Storage bucket 時遭到拒絕
服務範圍不得包含不同機構的專案。範圍只能包含上層機構的專案。如要從位於不同機構的 VPC Service Controls 範圍內專案存取 Cloud Storage 值區,會受到某些限制。
常見的例子是存取 Google 擁有的 Cloud Storage 值區。由於您的專案和包含目標 bucket 的 Google 專案不在同一個範圍內,VPC Service Controls 會拒絕要求,並顯示 RESOURCES_NOT_IN_SAME_SERVICE_PERIMETER
違規原因。
如要解決這個問題,可以建立輸入和輸出規則。
從安全範圍內存取可公開存取的 Cloud Storage bucket
如果您嘗試從服務範圍內存取可公開存取的 Cloud Storage 值區,VPC Service Controls 可能會擲回輸出違規事項,藉此封鎖您的要求。
為確保能視需要持續成功存取物件,我們應將輸出規則套用至受影響的服務範圍。
Security Command Center 問題
本節列出您在使用 VPC Service Controls 範圍內的 Security Command Center 資源時,可能會遇到的問題。
Security Command Center 無法將通知傳送至 Pub/Sub
嘗試將 Security Command Center 通知發布至 VPC Service Controls 範圍內的 Pub/Sub 主題時,會因 RESOURCES_NOT_IN_SAME_SERVICE_PERIMETER
違規而失敗。
建議您在機構層級啟用 Security Command Center。VPC Service Controls 不會將上層機構視為子專案範圍的一部分。如要這麼做,您必須授予 Security Command Center 邊界存取權。
如要解決這個問題,請採取下列任一做法:
- 使用專案中的 Pub/Sub 主題,但該專案不在服務安全防護範圍內。
- 在完成通知設定前,請從服務範圍中移除 Pub/Sub API。
如要進一步瞭解如何啟用傳送至 Pub/Sub 主題的 Security Command Center 通知,請參閱「啟用 Pub/Sub 發現項目通知」。
Security Command Center 無法掃描安全防護範圍內的 Compute Engine 資源
Security Command Center 會使用每個產品和專案的服務帳戶 (P4SA) service-{project_number}@gcp-sa-computescanning.iam.gserviceaccount.com
,掃描專案中的 Compute Engine 資源。如要讓 Security Command Center 存取範圍內的資源,請將 P4SA 新增至存取層級或輸入規則。否則可能會看到 NO_MATCHING_ACCESS_LEVEL
錯誤。
Security Command Center 無法掃描服務範圍內的資源
安全狀態分析會使用 P4SA (每個產品、每個專案的服務帳戶) service-org-
ORGANIZATION_ID@security-center-api.iam.gserviceaccount.com
掃描專案中的資源。如要讓 Security Command Center 存取範圍內的資源,請將 P4SA 帳戶新增至存取層級或輸入規則。否則會看到 NO_MATCHING_ACCESS_LEVEL
錯誤。
Google Kubernetes Engine 問題
本節列出使用 VPC Service Controls 範圍內的 Google Kubernetes Engine 資源時,可能會遇到的問題。
在啟用可存取服務和受限服務的 perimeter 中,自動調度器無法運作
autoscaling.googleapis.com
未與 VPC Service Controls 整合,因此無法新增至受限制的服務或可存取的服務。您無法在可存取的服務中允許 autoscaling.googleapis.com
API。因此,如果周邊設有可存取的服務,叢集自動配置器可能無法運作。
我們不建議使用無障礙服務。使用受限虛擬 IP (VIP) 時,請為 autoscaling.googleapis.com
建立例外狀況,以便在含有自動調度叢集的周邊存取私人 VIP。
BigQuery 問題
本節列出您在使用 VPC Service Controls 範圍內的 BigQuery 資源時,可能會遇到的問題。
VPC Service Controls 範圍限制不適用於 BigQuery 查詢結果匯出作業
如果您嘗試限制從 BigQuery 匯出受保護資料至 Google 雲端硬碟、Google 試算表或 Looker Studio,可能會發現實際行為與預期不符。從 BigQuery UI 執行查詢時,結果會儲存在電腦的本機記憶體中,例如瀏覽器快取。這表示結果現在位於 VPC Service Controls 之外,因此您可能會將結果儲存為 CSV 檔案或儲存至 Google 雲端硬碟。
在此情境中,由於結果是從服務範圍外的本機電腦匯出,因此 VPC Service Controls 會正常運作,但 BigQuery 資料的整體限制遭到規避。
如要解決這個問題,請移除 bigquery.tables.export
權限,限制使用者的 IAM 權限。請注意,這麼做會停用所有匯出選項。
GKE Enterprise 問題
本節列出您在使用 VPC Service Controls 範圍內的 GKE Enterprise 資源時,可能會遇到的問題。
如要排解使用 VPC Service Controls 和 Cloud Service Mesh 時發生的錯誤,請參閱「排解代管型 Cloud Service Mesh 的 VPC Service Controls 問題」。
GKE Enterprise Config Controller 設定會產生輸出違規事項
如果沒有允許透過 containerregistry.googleapis.com
以 google.containers.registry.read
方法連線的輸出設定,在安全範圍外的專案中設定 GKE Enterprise Config Controller 時,預期會失敗。
如要解決這項錯誤,請建立下列輸出規則:
From:
Identities:ANY_IDENTITY
To:
Projects =
NNNNNNNNNNNN
Service =
Service name: containerregistry.googleapis.com
Service methods:
containers.registry.read
將規則新增至違規的周邊後,輸出違規事項就會消失。
Container Registry 問題
本節列出您在使用 VPC Service Controls 範圍內的 Container Registry 資源時,可能會遇到的問題。
VPC Service Controls 封鎖 Container Registry API 要求,即使輸入或輸出規則允許也不例外
如果您已使用入口規則允許存取 Container Registry,且 identity_type
欄位設為 ANY_USER_ACCOUNT
或 ANY_SERVICE_ACCOUNT
,VPC Service Controls 會封鎖存取權。
如要解決這個問題,請將 identity_type
欄位更新為
輸入或輸出規則中的 ANY_IDENTITY
。
將 Artifact Registry 擁有的 Docker 映像檔複製到安全防護範圍內的專案時,服務代理程式發生輸出錯誤
當您嘗試將 Artifact Registry 擁有的映像檔複製到 VPC Service Controls 範圍內的專案時,服務代理程式 cloud-cicd-artifact-registry-copier@system.gserviceaccount.com
的記錄中可能會出現 egress 錯誤。如果範圍政策處於模擬測試模式,通常會發生這類輸出錯誤。
如要解決這個問題,請建立輸出規則,允許服務代理程式 cloud-cicd-artifact-registry-copier@system.gserviceaccount.com
存取 VPC Service Controls 錯誤記錄中提及的專案內 storage.googleapis.com
服務。
Vertex AI 問題
本節列出在 VPC Service Controls 範圍內使用 Vertex AI 資源時可能遇到的問題。
使用者代管的 Notebooks API 要求在輸入或輸出規則中允許,但遭 VPC Service Controls 封鎖
如果您已使用連入政策允許存取 User-managed notebooks API,並將 identity_type
設為 ANY_USER_ACCOUNT
或 ANY_SERVICE_ACCOUNT
,VPC Service Controls 會封鎖對 API 的存取權。
如要解決這個問題,請將 identity_type
欄位更新為
輸入或輸出規則中的 ANY_IDENTITY
。
Spanner 問題
由於每個產品/專案的服務帳戶 (P4SA) NO_MATCHING_ACCESS_LEVEL
service-
PROJECT_NUMBER@gcf-admin-robot.iam.gserviceaccount.com
發生違規情形,因此系統會封鎖 Spanner 資料庫備份作業。
如要解決這個問題,請新增具有上述服務代理的 Ingress 規則,或將其新增至存取層級。
AlloyDB for PostgreSQL 問題
如果 PostgreSQL 適用的 AlloyDB 叢集受到 CMEK 保護,您可能會在服務代理程式 service-
PROJECT_NUMBER@compute-system.iam.gserviceaccount.com
和 service-
PROJECT_NUMBER@gs-project-accounts.iam.gserviceaccount.com
的記錄中,看到連入錯誤。
如要解決這個問題,請新增輸入規則,允許上述服務代理程式存取 VPC Service Controls 錯誤記錄檔中提及的專案內cloudkms.googleapis.com
服務。
後續步驟
- 瞭解搭配使用 VPC Service Controls 與各種服務的已知限制。 Google Cloud
- 瞭解如何使用 VPC Service Controls 專屬 ID 解決與服務範圍相關的問題。