VPC Service Controls für BigQuery

Auf dieser Seite wird erläutert, wie Sie die Sicherheit von BigQuery-Ressourcen verbessern können, indem Sie mit VPC Service Controls Perimeter erstellen. Diese Perimeter schränken den Zugriff auf und von BigQuery ein und sind unabhängig von den Steuerelementen der Identitäts- und Zugriffsverwaltung (Identity and Access Management, IAM). Sie sind in den folgenden Anwendungsfällen nützlich:

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

Weitere Informationen finden Sie unter VPC Service Controls.

Hinweis

  • 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.

VPC Service Controls-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 dazu gcloud access-context-manager levels create den Befehl:

    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 Menschen lesbare Titel für den Dienstperimeter

    Weitere Informationen zum Erstellen von Zugriffsebenen finden Sie in den Beispiel implementierungen.

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

    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, für Menschen lesbare Titel für den Dienstperimeter
    • BIGQUERY_PROJECT_NUMBER: die ID des BigQuery-Projekts
    • POLICY_NAME: die ID der Zugriffsrichtlinie

    Perimeter aktualisieren

    Verwenden Sie den gcloud access-context-manager perimeters update-Befehl, 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 Dienst perimeter und Probelauf modus zum Testen von Regeln für ein- und ausgehenden Traffic verwenden.

Anwendungsfälle

Die folgenden Anwendungsbeispiele zeigen, wie Sie Daten, die in BigQuery ein- und ausgehen, mit VPC Service Controls schützen.

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

Die folgenden Beispiele zeigen, wie Sie die Kommunikation zwischen den BigQuery- und Cloud Storage-Projekten selektiv zulassen, wenn sie durch Perimeter getrennt sind.

  1. Aktualisieren Sie die Regeln für ausgehenden Traffic für den Perimeter um das Cloud Storage-Projekt, um dem BigQuery-Projekt den Zugriff auf das Cloud Storage-Projekt zu ermöglichen:

    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. Aktualisieren Sie die Regeln für ausgehenden Traffic für den Perimeter um das BigQuery-Projekt, um dem Cloud Storage-Projekt den Zugriff auf das BigQuery-Projekt zu ermöglichen:

    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 der Perimeter, der das BigQuery-Projekt schützt, storage.googleapis.com als eingeschränkten Dienst enthält, müssen Sie die Regel für 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

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

Nächste Schritte