VPC Service Controls für BigQuery

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

  • Datenlecks werden verhindert, indem der Zugriff auf Ressourcen eingeschränkt wird, mit Ausnahme der Ressourcen, die in den Regeln für eingehenden und ausgehenden Traffic ausdrücklich zulässig sind.
  • Sicheres Laden von Daten in BigQuery aus Drittanbieterquellen oder Google Cloud -Diensten wie Cloud Storage.
  • Datenexport aus BigQuery nach Cloud Storage oder zu anderen Zielen steuern.

Weitere Informationen finden Sie unter 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.

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 zum Erstellen den Befehl gcloud access-context-manager levels create:

    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. Informationen zu anderen Anwendungsfällen, 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 Nutzer 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 Probelaufmodus zum Testen von Richtlinien 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 können.

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. Erlauben Sie dem BigQuery-Projekt den 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 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 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 VPC Service Controls-Konfiguration beim Erstellen einer BigLake-Tabelle für Azure Blob Storage.

Nächste Schritte