Controles del servicio de VPC para BigQuery
En esta página, se explica cómo mejorar la seguridad en torno a los recursos de BigQuery a través de la creación de perímetros con los Controles del servicio de VPC. Estos perímetros restringen el acceso a BigQuery y desde BigQuery, y son independientes de los controles de Identity and Access Management (IAM). Son útiles en los siguientes casos de uso:
- Para evitar la filtración de datos a través de la restricción del acceso a los recursos, excepto aquellos permitidos específicamente en las reglas de entrada y salida
- Para cargar datos en BigQuery de forma segura desde fuentes de terceros o servicios de Google Cloud, como Cloud Storage
- Para controlar la exportación de datos desde BigQuery a Cloud Storage o a otros destinos
Si quieres obtener más información, consulta la descripción general de los Controles del servicio de VPC.
Antes de comenzar
- Si quieres obtener los permisos que necesitas para configurar los perímetros de servicio, consulta Control de acceso con IAM para los Controles del servicio de VPC.
- Debes tener una política de acceso para tu organización. Para obtener más información, consulta Crea una política de acceso.
Crea el perímetro
En el siguiente ejemplo, se muestra cómo crear un perímetro de Controles del servicio de VPC que limite el rango de direcciones IP externas que pueden acceder a un proyecto de BigQuery.
Crea un nivel de acceso que solo permita el acceso a un rango de direcciones IP específico (por ejemplo, los que están dentro de una red corporativa). Para crearlo, 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
Reemplaza lo siguiente:
ACCESS_LEVEL_NAME
: El ID del nivel de accesoTITLE
: El título legible para el perímetro del servicio
Para obtener más información sobre cómo crear niveles de acceso, consulta las implementaciones de ejemplo.
Protege el recurso de BigQuery a través de la creación o actualización de un perímetro. Los siguientes ejemplos protegen un proyecto. Para otros casos de uso, como proteger la transferencia de datos desde un bucket de Cloud Storage en otro proyecto, consulta los casos de uso.
Crear perímetro
Para crear un perímetro nuevo a fin de proteger 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
Reemplaza lo siguiente:
POLICY_NAME
: El ID de la política de accesoACCESS_LEVEL_NAME
: El ID del nivel de accesoPERIMETER
: El ID del perímetroTITLE
: El título corto y legible para el perímetro del servicioBIGQUERY_PROJECT_NUMBER
: El ID del proyecto de BigQueryPOLICY_NAME
: El ID de la política de acceso
Actualiza el perímetro
Para actualizar un perímetro existente, usa el comando
gcloud access-context-manager perimeters update
:gcloud access-context-manager perimeters update BIGQUERY_PERIMETER --set-ingress-policies=ingress.yaml
Reemplaza
BIGQUERY_PERIMETER
por el ID del perímetro que protege el recurso de BigQuery.
Prueba el perímetro
Prueba el perímetro de los Controles del servicio de VPC antes de aplicarlo. Para obtener más información, consulta Modo de ejecución de prueba para perímetros de servicio y Cómo usar el modo de ejecución de prueba para probar políticas de entrada o salida.
Casos de uso
En los siguientes ejemplos de casos de uso, se muestra cómo proteger los datos que entran y salen de BigQuery con los Controles del servicio de VPC.
Consulta datos de tablas externas de un bucket de Cloud Storage en 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.
Para permitir que el proyecto de BigQuery acceda al proyecto de Cloud Storage, actualiza las reglas de salida del perímetro alrededor 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
Reemplaza lo siguiente:
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
Para permitir que el proyecto de Cloud Storage acceda al proyecto de BigQuery, actualiza las reglas de salida del perímetro alrededor 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
Reemplaza lo siguiente:
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 un 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
Importa y exporta datos desde BigQuery Omni
Como capa adicional de defensa, puedes usar los perímetros de Controles del servicio de VPC para restringir el acceso entre BigQuery Omni y un servicio de nube externo. Para obtener más información y ejemplos, consulta la configuración de Controles del servicio de VPC cuando crees una tabla de BigLake de Azure Blob Storage.
¿Qué sigue?
- Obtén más información sobre los Controles del servicio de VPC en Analytics Hub.
- Obtén información para restringir el acceso a BigQuery Omni con un servicio de nube externo.
- Comprende los riesgos y la mitigación a través de los Controles del servicio de VPC.
- Obtén más información sobre la compatibilidad y las limitaciones de los Controles del servicio de VPC en BigQuery.
- Soluciona problemas habituales de BigQuery y los Controles del servicio de VPC.