使用入站规则实现情境感知访问权限

情境感知访问权限入站规则设置根据网络来源(IP 地址或 VPC 网络)、身份类型(服务账号或用户)、身份和设备数据等客户端特性允许对资源的访问权限。访问权限由入站规则定义。

如需大致了解入站和出站规则,请参阅入站和出站规则

如需了解如何应用入站和出站规则政策,请参阅配置入站和出站政策

情境感知访问权限使用场景的配置示例

本部分包含情境感知访问权限的以下示例:

  1. 允许真人用户从互联网访问 BigQuery 并仅允许特定服务账号从指定的 IP 范围进行访问
  2. 允许员工从可信设备通过互联网查询 BigQuery,并允许特定服务账号以专用方式将数据加载到 Cloud Storage 存储桶(源数据)

允许真人用户从互联网访问 BigQuery 并仅允许特定服务账号从指定的 IP 范围进行访问

来自已识别用户和网络的入站流量

假设您已定义了如下边界,可以通过使用 gcloud 列出边界找到:

name: accessPolicies/222/servicePerimeters/Example
status:
  resources:
  - projects/111
  restrictedServices:
  - bigquery.googleapis.com
  - storage.googleapis.com
  vpcAccessibleServices:
    enableRestriction: true
    allowedServices:
    - RESTRICTED_SERVICES
title: Example

我们还假设定义了名为 CorpDatacenter 的访问权限级别。在此示例中,CorpDatacenter 是一组已列入白名单的企业数据中心 IP 范围,允许服务账号从这一 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 存储桶

来自已识别设备和网络的入站流量

假设您已定义了如下边界,可以通过使用 gcloud 列出边界找到:

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 视图,并允许特定服务账号从已获授权的 VPC 网络对 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

如需了解在服务边界内使用 VPC 网络时的 VPC 网络限制,请参阅 VPC 网络限制