VPC Service Controls für BigQuery

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

  • Verhindern von Datenlecks durch Einschränken des Zugriffs auf Ressourcen, mit Ausnahme der Ressourcen, die in den Regeln für eingehenden und ausgehenden Traffic ausdrücklich zugelassen sind.
  • Sicheres Laden von Daten aus Drittanbieterquellen oder Google Cloud -Diensten wie Cloud Storage in BigQuery.
  • Datenexport aus BigQuery nach Cloud Storage oder zu anderen Zielen steuern.

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

Hinweis

  • Informationen zum Abrufen der 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 externer IP-Adressen einschränkt, die auf ein BigQuery-Projekt zugreifen können.

  1. Erstellen Sie eine Zugriffsebene, die den Zugriff nur auf einen bestimmten Bereich von IP-Adressen zulässt, z. B. auf 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 menschenlesbare Titel für den Dienstperimeter

    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 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, menschenlesbare Titel für den Dienstperimeter
    • 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- oder 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.

Externe Tabellendaten 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. 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 in der VPC Service Controls-Konfiguration für das Erstellen einer BigLake-Tabelle in Azure Blob Storage.

Nächste Schritte