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.

  1. 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 acceso
    • TITLE: 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.

  2. 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 acceso
    • ACCESS_LEVEL_NAME: ID del nivel de acceso
    • PERIMETER: el ID del perímetro
    • TITLE: título breve y legible del perímetro de servicio.
    • BIGQUERY_PROJECT_NUMBER: el ID del proyecto de BigQuery
    • POLICY_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.

  1. 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 BigQuery
    • CLOUD_STORAGE_PERIMETER: el ID del perímetro que protege los recursos de Cloud Storage
    • POLICY_NAME: el ID de la política de acceso
  2. 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 Storage
    • PERIMETER: el ID del perímetro
    • POLICY_NAME: el ID de la política de acceso
  3. 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