Controles de Servicio de VPC para BigQuery
En esta página se explica cómo reforzar la seguridad de los recursos de BigQuery creando perímetros con Controles de Servicio de VPC. Estos perímetros restringen el acceso a BigQuery y desde BigQuery, y son independientes de los controles de Gestión de Identidades y Accesos (IAM). Son útiles en los siguientes casos prácticos:
- Evitar las filtraciones de datos restringiendo el acceso a los recursos, excepto a aquellos que se permitan específicamente en las reglas de entrada y salida.
- Cargar datos de forma segura en BigQuery desde fuentes o servicios de terceros, como Cloud Storage. Google Cloud
- Controlar la exportación de datos de BigQuery a Cloud Storage u otros destinos.
Para obtener más información, consulta la descripción general de Controles de Servicio de VPC.
Antes de empezar
- Para obtener los permisos que necesitas para configurar perímetros de servicio, consulta Control de acceso con IAM para Controles de Servicio de VPC.
- Debes tener una política de acceso para tu organización. Para obtener más información, consulta el artículo Crear una política de acceso.
Crear el perímetro de Controles de Servicio de VPC
En el siguiente ejemplo se muestra cómo crear un perímetro de seguridad de Controles de Servicio de VPC que limite el intervalo de direcciones IP externas que pueden acceder a un proyecto de BigQuery.
Crea un nivel de acceso que solo permita acceder a un intervalo de direcciones IP específico, por ejemplo, las que se encuentren en una red corporativa. Para crearla, usa el comando
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
Haz los cambios siguientes:
ACCESS_LEVEL_NAME
: ID del nivel de accesoTITLE
: el título legible por personas del perímetro de servicio
Para obtener más información sobre cómo crear niveles de acceso, consulta las implementaciones de ejemplo.
Protege el recurso de BigQuery creando o actualizando un perímetro. En los siguientes ejemplos se protege un proyecto. Para otros casos prácticos, como proteger la transferencia de datos de un segmento de Cloud Storage en otro proyecto, consulta los casos prácticos.
Crear perímetro
Para crear un perímetro que proteja el proyecto de BigQuery, usa el comando
gcloud access-context-manager perimeters create
: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
Haz los cambios siguientes:
POLICY_NAME
: el ID de la política de accesoACCESS_LEVEL_NAME
: ID del nivel de accesoPERIMETER
: el ID del perímetroTITLE
: título breve y legible del perímetro de servicio.BIGQUERY_PROJECT_NUMBER
: el ID del proyecto de BigQueryPOLICY_NAME
: el ID de la política de acceso
Actualizar perímetro
Para actualizar un perímetro, usa el comando
gcloud access-context-manager perimeters update
:gcloud access-context-manager perimeters update BIGQUERY_PERIMETER --set-ingress-policies=ingress.yaml
Sustituye
BIGQUERY_PERIMETER
por el ID del perímetro que protege el recurso de BigQuery.
Probar el perímetro
Prueba tu perímetro de Controles de Servicio de VPC antes de aplicarlo. Para obtener más información, consulta Modo de prueba para perímetros de servicio y Usar el modo de prueba para probar políticas de entrada o salida.
Casos prácticos
En los siguientes ejemplos de casos prácticos se muestra cómo proteger los datos que entran y salen de BigQuery con Controles de Servicio de VPC.
Consultar datos de una tabla externa de un segmento de Cloud Storage de otro proyecto
En los siguientes ejemplos se muestra cómo permitir de forma selectiva la comunicación entre los proyectos de BigQuery y Cloud Storage cuando están separados por perímetros.
Permite que el proyecto de BigQuery acceda al proyecto de Cloud Storage actualizando las reglas de salida del perímetro del proyecto de Cloud Storage:
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
Haz los cambios siguientes:
BIGQUERY_PROJECT_NUMBER
: el ID del proyecto de BigQueryCLOUD_STORAGE_PERIMETER
: el ID del perímetro que protege los recursos de Cloud StoragePOLICY_NAME
: el ID de la política de acceso
Permite que el proyecto de Cloud Storage acceda al proyecto de BigQuery actualizando las reglas de salida del perímetro del proyecto de BigQuery:
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
Haz los cambios siguientes:
CLOUD_STORAGE_PROJECT_NUMBER
: el ID del proyecto de Cloud StoragePERIMETER
: el ID del perímetroPOLICY_NAME
: el ID de la política de acceso
Opcional: Si el perímetro que protege el proyecto de BigQuery incluye
storage.googleapis.com
como servicio restringido, debes actualizar la regla de entrada: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
Importar y exportar datos de BigQuery Omni
Como medida de defensa adicional, puedes usar perímetros de Controles de Servicio de VPC para restringir el acceso entre BigQuery Omni y un servicio en la nube externo. Para obtener más información y ejemplos, consulta la configuración de Controles de Servicio de VPC al crear una tabla BigLake de Azure Blob Storage.
Siguientes pasos
- Más información sobre Controles de Servicio de VPC en Analytics Hub
- Consulta cómo restringir el acceso a BigQuery Omni con un servicio de nube externo.
- Consulta los riesgos y las medidas de mitigación mediante Controles de Servicio de VPC.
- Más información sobre la compatibilidad y las limitaciones de Controles de Servicio de VPC en BigQuery
- Soluciona problemas habituales de BigQuery y Controles de Servicio de VPC.