設定情境感知存取權輸入規則後,即可根據用戶端屬性 (例如網路來源 (IP 位址或虛擬私有雲網路)、身分類型 (服務帳戶或使用者)、身分和裝置資料,授予資源存取權。存取權是由輸入規則定義。
如需輸入和輸出規則總覽,請參閱「輸入和輸出規則」一文。
如需套用輸入和輸出規則政策的操作說明,請參閱「設定輸入和輸出政策」一文。
情境感知存取權用途的設定範例
本節包含下列情境感知存取權範例:
- 允許使用者透過網際網路存取 BigQuery,但只有特定服務帳戶能從指定 IP 範圍存取
- 允許員工透過網際網路從信任的裝置查詢 BigQuery,並允許特定服務帳戶以不公開的方式將資料載入 Cloud Storage bucket (來源資料)
允許使用者透過網際網路存取 BigQuery,但只有特定服務帳戶能從指定 IP 範圍存取

假設您已定義下列 perimeter,並透過使用 gcloud 列出 perimeter 的方式找到該 perimeter:
name: accessPolicies/222/servicePerimeters/Example
status:
resources:
- projects/111
restrictedServices:
- bigquery.googleapis.com
- storage.googleapis.com
vpcAccessibleServices:
enableRestriction: true
allowedServices:
- RESTRICTED_SERVICES
title: Example
我們也假設您已定義名為 CorpDatacenters 的存取層級。 在這個範例中,CorpDatacenters 是公司資料中心的 IP 許可範圍,允許服務帳戶從中存取。
以下是方向性政策,允許所有人員和一組特定服務帳戶存取,但僅限於一組特定 IP (由存取層級定義):
echo """
- ingressFrom:
identities:
- serviceAccount:my-sa@my-project.iam.gserviceaccount.com
sources:
- accessLevel: accessPolicies/222/accessLevels/CorpDatacenters
ingressTo:
operations:
- serviceName: bigquery.googleapis.com
methodSelectors:
- method: \"*\"
resources:
- \"*\"
- ingressFrom:
identityType: ANY_USER_ACCOUNT
sources:
- accessLevel: \"*\"
ingressTo:
operations:
- serviceName: bigquery.googleapis.com
methodSelectors:
- method: \"*\"
resources:
- \"*\"
""" > ingress.yaml
執行下列指令,套用輸入規則:
gcloud access-context-manager perimeters update Example --set-ingress-policies=ingress.yaml
允許員工查詢 BigQuery,並將資料私下載入 Cloud Storage bucket

假設您已定義下列 perimeter,並透過使用 gcloud 列出 perimeter 的方式找到該 perimeter:
name: accessPolicies/222/servicePerimeters/Example
status:
resources:
- projects/111
restrictedServices:
- bigquery.googleapis.com
- storage.googleapis.com
vpcAccessibleServices:
enableRestriction: true
allowedServices:
- RESTRICTED_SERVICES
title: Example
以下方向性政策允許使用者從信任的裝置存取 BigQuery view (使用存取層級),同時允許特定服務帳戶以不公開的方式,從授權的虛擬私有雲網路存取 Cloud Storage:
echo """
- ingressFrom:
identities:
- serviceAccount:my-sa@my-project.iam.gserviceaccount.com
sources:
- resource: projects/111
ingressTo:
operations:
- serviceName: storage.googleapis.com
methodSelectors:
- method: google.storage.Write
- method: google.storage.objects.create
resources:
- \"*\"
- ingressFrom:
identityType: ANY_SERVICE_ACCOUNT
sources:
- resource: //compute.googleapis.com/projects/my-network-project/global/networks/top-tier-vpc-network
ingressTo:
operations:
- serviceName: storage.googleapis.com
methodSelectors:
- method: google.storage.Write
- method: google.storage.objects.create
resources:
- \"*\"
- ingressFrom:
identityType: ANY_USER_ACCOUNT
sources:
- accessLevel: accessPolicies/222/accessLevels/TrustedDevices
ingressTo:
operations:
- serviceName: bigquery.googleapis.com
methodSelectors:
- permission: bigquery.tables.getData
resources:
- \"*\"
""" > ingress.yaml
執行下列指令,套用輸入規則:
gcloud access-context-manager perimeters update Example --set-ingress-policies=ingress.yaml
如要瞭解在 service perimeter 中使用虛擬私有雲網路時的限制,請參閱這一節。