VPC Service Controls für BigQuery

Auf dieser Seite erfahren Sie, wie Sie die Sicherheit von BigQuery-Ressourcen durch Erstellen von Perimetern mit VPC Service Controls erhöhen. Diese Perimeter schränken den Zugriff auf und von BigQuery ein und sind unabhängig von IAM-Kontrollen (Identity and Access Management). Sie eignen sich für folgende Anwendungsfälle:

  • Datenlecks verhindern, indem der Zugriff auf Ressourcen eingeschränkt wird, mit Ausnahme derjenigen, die in den Regeln für eingehenden und ausgehenden Traffic ausdrücklich zugelassen sind.
  • Daten aus Drittanbieterquellen oder Google Cloud-Diensten wie Cloud Storage sicher in BigQuery laden
  • Datenexport aus BigQuery nach Cloud Storage oder anderen Zielen steuern

Weitere Informationen finden Sie in der Übersicht zu VPC Service Controls.

Hinweise

  • Informationen zu den Berechtigungen, die Sie zum Konfigurieren von Dienstperimetern benötigen, finden Sie unter Zugriffssteuerung mit IAM für VPC Service Controls.
  • Sie benötigen eine Zugriffsrichtlinie für Ihre Organisation. Weitere Informationen finden Sie unter Zugriffsrichtlinie erstellen.

Perimeter erstellen

Im folgenden Beispiel wird gezeigt, wie Sie einen VPC Service Controls-Perimeter erstellen, der den Bereich der externen IP-Adressen einschränkt, die auf ein BigQuery-Projekt zugreifen können.

  1. Erstellen Sie eine Zugriffsebene, die nur den Zugriff auf einen bestimmten Bereich von IP-Adressen zulässt, z. B. auf die IP-Adressen innerhalb eines Unternehmensnetzwerks. Verwenden Sie den Befehl gcloud access-context-manager levels create, um sie zu erstellen:

    echo """
    - ipSubnetworks:
      - 162.222.181.0/24
      - 2001:db8::/48
    """ > level.yaml
    
    gcloud access-context-manager levels create ACCESS_LEVEL_NAME \
        --title="TITLE" --basic-level-spec=level.yaml
    

    Ersetzen Sie Folgendes:

    • ACCESS_LEVEL_NAME: die ID der Zugriffsebene
    • TITLE: Der für Nutzer lesbare Titel des Dienstperimeters

    Weitere Informationen zum Erstellen von Zugriffsebenen finden Sie in den Beispielimplementierungen.

  2. Schützen Sie die BigQuery-Ressource, indem Sie einen Perimeter erstellen oder aktualisieren. In den folgenden Beispielen wird ein Projekt geschützt. Weitere Anwendungsfälle, z. B. zum Schutz der Datenübertragung von einem Cloud Storage-Bucket in ein anderes Projekt, finden Sie in den Anwendungsfällen.

    Perimeter erstellen

    Verwenden Sie den Befehl gcloud access-context-manager perimeters create, um einen neuen Perimeter zum Schutz des BigQuery-Projekts zu erstellen:

    echo """
    - ingressFrom:
        identityType: ANY_IDENTITY
        sources:
        - accessLevel: accessPolicies/POLICY_NAME/accessLevels/ACCESS_LEVEL_NAME
      ingressTo:
        operations:
        - methodSelectors:
          - method: '*'
          serviceName: bigquery.googleapis.com
        resources:
        - '*'
    
    """ > ingress.yaml
    
    gcloud access-context-manager perimeters create BIGQUERY_PERIMETER --title="TITLE" \
        --resources=BIGQUERY_PROJECT_NUMBER \
        --restricted-services=bigquery.googleapis.com \
        --ingress-policies=ingress.yaml
        --policy=POLICY_NAME
    

    Ersetzen Sie Folgendes:

    • POLICY_NAME: die ID der Zugriffsrichtlinie
    • ACCESS_LEVEL_NAME: die ID der Zugriffsebene
    • PERIMETER: die ID des Perimeters
    • TITLE: Der kurze, visuell lesbare Titel des Dienstperimeters
    • BIGQUERY_PROJECT_NUMBER: die ID des BigQuery-Projekts
    • POLICY_NAME: die ID der Zugriffsrichtlinie

    Perimeter aktualisieren

    Verwenden Sie den Befehl gcloud access-context-manager perimeters update, um einen vorhandenen Perimeter zu aktualisieren:

    gcloud access-context-manager perimeters update BIGQUERY_PERIMETER --set-ingress-policies=ingress.yaml
    

    Ersetzen Sie BIGQUERY_PERIMETER durch die ID des Perimeters, der die BigQuery-Ressource schützt.

Perimeter testen

Testen Sie den VPC Service Controls-Perimeter, bevor Sie ihn erzwingen. Weitere Informationen finden Sie unter Probelaufmodus für Dienstperimeter und Mit dem Modus „Probelauf“ Ingress- oder Egress-Richtlinien testen.

Anwendungsfälle

In den folgenden Anwendungsbeispielen wird gezeigt, wie Sie Daten, die in BigQuery eingehen und aus BigQuery ausgehen, mit VPC Service Controls schützen.

Daten aus externen Tabellen aus einem Cloud Storage-Bucket in einem anderen Projekt abfragen

In den folgenden Beispielen wird gezeigt, wie Sie die Kommunikation zwischen den BigQuery- und Cloud Storage-Projekten selektiv zulassen, wenn sie durch Perimeter getrennt sind.

  1. Gewähren Sie dem BigQuery-Projekt Zugriff auf das Cloud Storage-Projekt, indem Sie die Regeln für ausgehenden Traffic für den Perimeter um das Cloud Storage-Projekt aktualisieren:

    echo """
    - egressFrom:
        identityType: ANY_IDENTITY
      egressTo:
        operations:
        - methodSelectors:
          - method: '*'
          serviceName: storage.googleapis.com
        resources:
        - projects/BIGQUERY_PROJECT_NUMBER
    """ > egress.yaml
    
    gcloud access-context-manager perimeters update CLOUD_STORAGE_PERIMETER --policy=POLICY_NAME --set-egress-policies=egress.yaml
    

    Ersetzen Sie Folgendes:

    • BIGQUERY_PROJECT_NUMBER: die ID des BigQuery-Projekts
    • CLOUD_STORAGE_PERIMETER: die ID des Perimeters, der die Cloud Storage-Ressourcen schützt
    • POLICY_NAME: die ID der Zugriffsrichtlinie
  2. Gewähren Sie dem Cloud Storage-Projekt Zugriff auf das BigQuery-Projekt, indem Sie die Regeln für den ausgehenden Traffic für den Perimeter um das BigQuery-Projekt aktualisieren:

    echo """
    - egressFrom:
        identityType: ANY_IDENTITY
      egressTo:
        operations:
        - methodSelectors:
          - method: '*'
          serviceName: storage.googleapis.com
        resources:
        - projects/CLOUD_STORAGE_PROJECT_NUMBER
    """ > egress1.yaml
    
    gcloud access-context-manager perimeters update BIGQUERY_PERIMETER --policy=POLICY_NAME --set-egress-policies=egress1.yaml
    

    Ersetzen Sie Folgendes:

    • CLOUD_STORAGE_PROJECT_NUMBER: die ID des Cloud Storage-Projekts
    • PERIMETER: die ID des Perimeters
    • POLICY_NAME: die ID der Zugriffsrichtlinie
  3. Optional: Wenn storage.googleapis.com im Perimeter enthalten ist, der das BigQuery-Projekt schützt, müssen Sie die Regel für den eingehenden Traffic aktualisieren:

    echo """
    - ingressFrom:
        identityType: ANY_IDENTITY
        sources:
        - accessLevel: accessPolicies/POLICY_NAME/accessLevels/ACCESS_LEVEL_NAME
      ingressTo:
        operations:
        - methodSelectors:
          - method: '*'
          serviceName: bigquery.googleapis.com
        - methodSelectors:
          - method: '*'
          serviceName: storage.googleapis.com
        resources:
        - '*'
    
    """ > ingress.yaml
    
    gcloud access-context-manager perimeters create BIGQUERY_PERIMETER --title="TITLE" \
        --resources=BIGQUERY_PROJECT_NUMBER \
        --restricted-services=bigquery.googleapis.com \
        --ingress-policies=ingress.yaml
        --policy=POLICY_NAME
    

Daten aus BigQuery Omni importieren und exportieren

Sie können VPC Service Controls-Perimeter verwenden, um den Zugriff zwischen BigQuery Omni und einem externen Cloud-Dienst als zusätzliche Sicherheitsebene einzuschränken. Weitere Informationen und Beispiele finden Sie in der Konfiguration von VPC Service Controls für das Erstellen einer BigLake-Tabelle in Azure Blob Storage.

Nächste Schritte