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.

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

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

  1. 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 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. 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 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 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?