共用 VPC Service Controls 規則
本文說明輸入和輸出規則,讓 BigQuery sharing (舊稱 Analytics Hub) 中的發布者和訂閱者,存取具有 VPC Service Controls 範圍的專案資料。本文假設您已熟悉 VPC Service Controls 周邊範圍、共用資料集、資料交易所、資訊主頁和連結資料集。
呼叫端專案是啟動要求的網路或用戶端 Google Cloud 專案,例如 SQL 查詢或 Google Cloud CLI 指令。
建立資料交換庫
在下圖中,包含資料交換和共用資料集的專案位於不同的服務安全防護範圍:
圖 1. 建立資料交換的 VPC Service Controls 規則。
圖 1 標示了下列元件:
- 呼叫者:BigQuery 共用管理員。
- 專案 R:呼叫端專案。
- 專案 E:主機代管資料交換和清單。
身為 BigQuery sharing 管理員,如果您在與呼叫端專案不同的專案中建立資料交換庫,則必須新增下列輸入和輸出規則:
| 專案 | 規則 |
|---|---|
| Project R | 專案 E 的輸出規則 |
| 專案 E (資料交換) | 專案 R 的輸入規則 |
建立產品資訊
在下圖中,包含資料交換和共用資料集的專案位於不同的服務安全防護範圍:
圖 2:建立房源的 VPC Service Controls 規則。
圖 2 標示了下列元件:
- 呼叫端:BigQuery sharing 管理員或發布者。
- 專案 R:呼叫端專案。
- 專案 E:主機代管資料交換和清單。
- 專案 S:代管共用資料集。
在資料交易所建立的項目與共用資料集位於不同專案時,您必須新增下列輸入和輸出規則,讓 BigQuery 共用發布者建立項目:
| 專案 | 規則 |
|---|---|
| Project R |
專案 E 的輸出規則 專案 S 的輸出規則 |
| 專案 E (資料交換) |
專案 S 的輸出規則 專案 R 的輸入規則 |
| 專案 S (共用資料集) |
專案 E 的輸出規則 專案 R 的輸入規則 |
訂閱產品資訊
在下圖中,包含房源資訊和該房源資訊連結資料集的專案位於不同的服務安全防護範圍:
圖 3:訂閱資訊的 VPC Service Controls 規則。
圖 3 標示了下列元件:
- 呼叫端:BigQuery sharing 訂閱者。
- 專案 R:呼叫端專案。
- 專案 E:主機代管資料交換和清單。
- 專案 L:代管連結的資料集。
如果您是 BigQuery sharing 訂閱者,且訂閱的資料交易所屬專案與您的專案不同,則必須新增下列輸入和輸出規則:
| 專案 | 規則 |
|---|---|
| Project R |
專案 E 的輸出規則 專案 L 的輸出規則 |
| 專案 E (房源) |
專案 L 的輸出規則 專案 R 的輸入規則 |
| 專案 L (連結的資料集) |
專案 E 的輸出規則 專案 R 的輸入規則 |
更新產品資訊
更新房源資訊時 (例如修改受限的匯出政策),BigQuery 共用功能會使用背景工作者,將這些變更傳播至相關聯的連結資料集。如果 Google Cloud 專案受到 VPC Service Controls 邊界保護,且設有 IP 限制,則源自 Google 基礎架構的背景工作者可能會遭到封鎖,導致連結的資料集無法順利同步。
如要讓背景工作者更新連結的資料集,您必須明確設定輸入或輸出規則,允許執行 API 呼叫的主體使用者或主體服務帳戶略過 IP 限制。
如要修改訂閱者專案 perimeter 的輸入政策,請新增輸入規則,允許呼叫主體從任何來源 IP 位址 (*) 存取 bigquery.googleapis.com 服務:
ingressFrom:
sources:
- accessLevel: "*"
identities:
- "user:CALLING_USER_EMAIL"
- "serviceAccount:AUTOMATION_SA_EMAIL"
ingressTo:
resources:
- "projects/SUBSCRIBER_PROJECT_NUMBER"
operations:
- serviceName: "bigquery.googleapis.com"
methodSelectors:
- method: "*"
或者,如要修改發布者周邊的輸出政策,請確認呼叫身分已明確新增至導向訂閱者專案的輸出規則中 identities 清單下方:
egressFrom:
identities:
- "user:CALLING_USER_EMAIL"
- "serviceAccount:AUTOMATION_SA_EMAIL"
egressTo:
resources:
- "projects/SUBSCRIBER_PROJECT_NUMBER"
operations:
- serviceName: "bigquery.googleapis.com"
methodSelectors:
- method: "*"
更改下列內容:
CALLING_USER_EMAIL:執行 API 呼叫來更新商家資訊的使用者電子郵件地址。如果更新是由真人使用者進行,請加入這個身分。AUTOMATION_SA_EMAIL:執行 API 呼叫來更新商家資訊的服務帳戶電子郵件地址。如果更新是由自動程序或指令碼進行,請加入這個身分。SUBSCRIBER_PROJECT_NUMBER:包含已連結資料集的訂閱者專案專案編號。
查詢連結資料集中的資料表
在下圖中,呼叫端專案和包含連結資料集的專案位於不同的 service perimeter:
圖 4:查詢連結資料集的 VPC Service Controls 規則。
圖 4 標示了下列元件:
- 呼叫端:BigQuery sharing 訂閱者,或連結資料集的任何 BigQuery 工作使用者。
- 專案 R:呼叫端專案。
- 專案 L:代管連結的資料集。
- 專案 V:代管含有資料表的共用資料集。
當您 (BigQuery sharing 訂閱者) 查詢連結資料集中的資料表時,必須新增下列輸入和輸出規則:
| 專案 | 規則 |
|---|---|
| Project R | 專案 L 的輸出規則 |
| 專案 L (連結的資料集) | 專案 R 的輸入規則 |
查詢連結資料集中的檢視畫面
本節說明查詢連結資料集中的檢視區塊時,必須遵守的 VPC Service Controls 規則。如果檢視區和基礎資料表位於同一專案,或位於不同專案,規則會有所不同。
情境 1
在下圖中,包含連結資料集的專案和與檢視區塊相關聯的基礎資料表,位於不同的服務安全防護範圍。檢視區塊 (專案 S) 和與檢視區塊相關聯的基礎資料表 (專案 V) 位於不同專案:
圖 5. VPC Service Controls 規則,用於查詢連結資料集中的檢視區塊。
圖 5 標示了下列元件:
- 呼叫端:BigQuery sharing 訂閱者或連結資料集的任何 BigQuery 工作使用者。
- 專案 R:呼叫端專案。
- 專案 L:代管連結的資料集。
- 專案 S:代管共用資料集。
- 專案 V:代管包含與檢視區塊相關聯基本資料表的資料集。
當您 (BigQuery sharing 訂閱者) 查詢連結資料集中的檢視區塊時,必須新增下列輸入和輸出規則:
| 專案 | 規則 |
|---|---|
| Project R |
專案 L 的輸出規則 專案 V 的輸出規則 |
| 專案 L (連結的資料集) |
專案 R 的輸入規則 專案 V 的輸出規則 |
| Project V |
專案 L 的輸出規則 專案 R 的輸入規則 |
情境 2
在下圖中,檢視區塊 (專案 V) 和與檢視區塊 (專案 V) 相關聯的基礎資料表位於同一個專案中:
圖 6:VPC Service Controls 規則,用於查詢連結資料集中的檢視區塊。
圖 6 標示了下列元件:
- 呼叫端:BigQuery sharing 訂閱者,或連結資料集的任何 BigQuery 工作使用者。
- 專案 R:呼叫端專案。
- 專案 L:代管連結的資料集。
- 專案 V:同時代管與檢視畫面相關聯的檢視畫面和基本資料表。
當您 (BigQuery sharing 訂閱者) 查詢連結資料集中的檢視區塊時,必須新增下列輸入和輸出規則:
| 專案 | 規則 |
|---|---|
| Project R |
專案 L 的輸出規則 |
| 專案 L (連結的資料集) |
專案 R 的輸入規則 |
查詢連結資料集中的授權 view
在下圖中,授權 view 和與授權 view 相關聯的基礎資料表 (專案 V) 位於同一專案中:
圖 7. VPC Service Controls 規則,用於查詢連結資料集中的檢視區塊。
圖 7 標示了下列元件:
- 呼叫端:BigQuery sharing 訂閱者,或連結資料集的任何 BigQuery 工作使用者。
- 專案 R:呼叫端專案。
- 專案 L:代管連結的資料集。
- 專案 V:同時代管授權 view 和與該 view 相關聯的基礎資料表。
當您 (BigQuery sharing 訂閱者) 查詢連結資料集中的檢視區塊時,必須新增下列輸入和輸出規則:
| 專案 | 規則 |
|---|---|
| Project R |
專案 L 的輸出規則 |
| 專案 L (連結的資料集) |
專案 R 的輸入規則 |
限制
BigQuery sharing 不支援以方法為準的規則。您必須允許所有方法,才能啟用以方法為準的規則。例如:
ingressTo:
operations:
- methodSelectors:
- method: '*'
serviceName: analyticshub.googleapis.com
resources:
- projects/PROJECT_ID
如果 BigQuery 資源也受到服務範圍保護,您必須允許 BigQuery 服務的輸入和輸出規則。建立資料交換時,不一定要允許輸入和輸出規則。BigQuery 的輸入和輸出規則與 BigQuery sharing 規則類似。例如:
ingressTo:
operations:
- methodSelectors:
- method: '*'
serviceName: bigquery.googleapis.com
resources:
- projects/PROJECT_ID