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.
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.yamlErsetzen Sie Folgendes:
ACCESS_LEVEL_NAME: die ID der ZugriffsebeneTITLE: Der für Nutzer lesbare Titel des Dienstperimeters.
Weitere Informationen zum Erstellen von Zugriffsebenen finden Sie in den Beispielimplementierungen.
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_NAMEErsetzen Sie Folgendes:
POLICY_NAME: die ID der ZugriffsrichtlinieACCESS_LEVEL_NAME: die ID der ZugriffsebenePERIMETER: die ID des PerimetersTITLE: Der kurze, für Nutzer lesbare Titel des Dienstperimeters.BIGQUERY_PROJECT_NUMBER: die ID des BigQuery-ProjektsPOLICY_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.yamlErsetzen Sie
BIGQUERY_PERIMETERdurch 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.
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.yamlErsetzen Sie Folgendes:
BIGQUERY_PROJECT_NUMBER: die ID des BigQuery-ProjektsCLOUD_STORAGE_PERIMETER: die ID des Perimeters, der die Cloud Storage-Ressourcen schütztPOLICY_NAME: die ID der Zugriffsrichtlinie
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.yamlErsetzen Sie Folgendes:
CLOUD_STORAGE_PROJECT_NUMBER: die ID des Cloud Storage-ProjektsPERIMETER: die ID des PerimetersPOLICY_NAME: die ID der Zugriffsrichtlinie
Optional: Wenn der Perimeter, der das BigQuery-Projekt schützt,
storage.googleapis.comals 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
- Weitere Informationen zu VPC Service Controls in BigQuery-Freigabe
- Zugriff auf BigQuery Omni mit einem externen Clouddienst einschränken
- Risiken und Risikominderung durch VPC Service Controls
- Weitere Informationen zur Unterstützung und zu Einschränkungen von VPC Service Controls in BigQuery
- Häufige Probleme mit BigQuery und VPC Service Controls beheben