含有輸入規則的情境感知存取權

設定情境感知存取權輸入規則後,即可根據用戶端屬性 (例如網路來源 (IP 位址或虛擬私有雲網路)、身分類型 (服務帳戶或使用者)、身分和裝置資料,授予資源存取權。存取權是由輸入規則定義。

如需輸入和輸出規則總覽,請參閱「輸入和輸出規則」一文。

如需套用輸入和輸出規則政策的操作說明,請參閱「設定輸入和輸出政策」一文。

情境感知存取權用途的設定範例

本節包含下列情境感知存取權範例:

  1. 允許使用者透過網際網路存取 BigQuery,但只有特定服務帳戶能從指定 IP 範圍存取
  2. 允許員工透過網際網路從信任的裝置查詢 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 中使用虛擬私有雲網路時的限制,請參閱這一節