Configuración de red de clústeres de Dataproc

En esta página se explican los requisitos y las opciones de configuración de la red de clústeres de Dataproc.

Requisitos de conectividad de Dataproc

Tu clúster de Dataproc debe estar en una red de nube privada virtual que cumpla los requisitos de ruta y cortafuegos para acceder de forma segura a las APIs de Google y a otros recursos.

Requisitos de las rutas

Para establecer la comunicación entre el agente de Dataproc que se ejecuta en las VMs del clúster y la API de control de Dataproc, la red de VPC del clúster de Dataproc debe tener una ruta a la pasarela de Internet. También es necesario para los clústeres solo con IP interna.

De forma predeterminada, los clústeres con la versión de imagen 2.2 de Dataproc o posterior aprovisionan VMs con direcciones solo de IP interna. Dataproc habilita automáticamente el acceso privado de Google (PGA) en la subred del clúster para permitir que las VMs del clúster con direcciones IP internas lleguen a las APIs y los servicios de Google mediante una ruta predeterminada generada por el sistema a la puerta de enlace de Internet predeterminada.

Regla Tipo Intervalo de IP de destino Prioridad Límites de ámbito Siguiente salto
default-route-[id] Estática 0.0.0.0/0 1000 - Pasarela de Internet predeterminada

PGA se asegura de que el tráfico del clúster no atraviese la red pública de Internet y no salga de los centros de datos de Google (consulta el diagrama de ejemplo de PGA).

No se recomienda eliminar la ruta predeterminada a la pasarela de Internet. Si quieres controlar el acceso de la red a Internet, utiliza reglas o políticas de cortafuegos.

Si has eliminado la ruta predeterminada a la pasarela de Internet, debes añadir una ruta predeterminada. El intervalo de IPs de destino debe ser 0.0.0.0/0, ya que los intervalos de IPs de la API de control de Dataproc no son estáticos.

Requisitos del cortafuegos

La red de VPC de tu clúster de Dataproc debe permitir explícitamente el siguiente tráfico:

  • Tráfico iniciado desde las VMs del clúster de Dataproc a la API de control de Dataproc y a otras VMs del clúster de Dataproc. Este tráfico se permite de forma predeterminada desde la regla implícita de permitir todo de salida de la red VPC. Si has añadido reglas de cortafuegos de salida de denegación que anulan otras reglas, crea una regla de cortafuegos de salida de permiso.

  • El tráfico de respuesta de la API de control de Dataproc a las VMs del clúster de Dataproc se permite de forma predeterminada debido al carácter de estado del cortafuegos de la red de VPC.

  • Tráfico recibido por las VMs de clústeres de Dataproc de otras VMs de clústeres de Dataproc. Este tráfico se rechazará de forma predeterminada con la regla de cortafuegos implícita de rechazo de entrada de la red VPC. Debes crear una regla de cortafuegos de permiso de entrada.

Prácticas recomendadas:

  • Usa etiquetas de red para las VMs de tu clúster de Dataproc de forma que puedas restringir la aplicabilidad de las reglas de cortafuegos necesarias solo a las VMs del clúster de Dataproc. Si no usas etiquetas de red, puedes especificar los destinos por la cuenta de servicio utilizada en las VMs del clúster. De lo contrario, puedes configurar reglas de cortafuegos para que se apliquen a todas las VMs de la red de VPC.
  • Para disfrutar de una conectividad y un acceso a la red más seguros, usa etiquetas seguras en lugar de etiquetas de red para definir los orígenes y los destinos de las reglas de cortafuegos.

Crear una regla de cortafuegos de entrada

Si tú, tu red o tu administrador de seguridad creáis una regla de cortafuegos de entrada para aplicarla a una red de VPC de un clúster de Dataproc, debe tener las siguientes características:

  • El parámetro sources especifica las fuentes de los paquetes. Todas las VMs de clúster de Dataproc deben poder comunicarse entre sí. Puedes identificar las VMs del clúster por el intervalo de direcciones IP (el intervalo principal de la subred del clúster de Dataproc), las etiquetas de red o las cuentas de servicio asociadas a las VMs.

  • Los destinos de la regla deben identificar las VMs del clúster. Los destinos pueden ser todas las VMs de la red de VPC o puedes identificar las VMs por etiqueta de red de destino o por cuenta de servicio de destino.

  • La regla debe incluir los siguientes protocolos y puertos:

    • TCP (todos los puertos, del 0 al 65535)
    • UDP (todos los puertos, del 0 al 65535)
    • ICMP

    Dataproc usa servicios que se ejecutan en varios puertos. Especificar todos los puertos ayuda a que los servicios se ejecuten correctamente.

  • La prioridad de la regla debe ser superior a la de cualquier regla de cortafuegos de denegación de entrada que se aplique a los mismos orígenes y destinos.

Crear una regla de cortafuegos de salida permitida

Si tú, tu red o tu administrador de seguridad crea una regla de cortafuegos de salida para aplicarla a una red de VPC de un clúster de Dataproc, debe tener las siguientes características:

  • El parámetro destinations especifica los destinos de los paquetes. Todas las VMs del clúster de Dataproc deben poder iniciar tráfico entre sí y con la API de control de Dataproc. Como las direcciones IP de la API de control no son estáticas, el destino debe especificarse por intervalo de IP 0.0.0.0/0.

  • Los destinos de la regla deben identificar las VMs del clúster. Los destinos pueden ser todas las VMs de la red de VPC o puedes identificar las VMs por etiqueta de red de destino o por cuenta de servicio de destino.

  • La regla debe incluir los siguientes protocolos y puertos:

    • TCP (todos los puertos, del 0 al 65535)
    • UDP (todos los puertos, del 0 al 65535)
    • ICMP

    Dataproc usa servicios que se ejecutan en varios puertos. Especificar todos los puertos ayuda a que los servicios se ejecuten correctamente.

  • La prioridad de la regla debe ser mayor que la de cualquier regla de cortafuegos de denegación de salida que se aplique a los mismos destinos y objetivos.

Diagnosticar reglas de cortafuegos de redes de VPC

Para auditar los paquetes que no han procesado las reglas de cortafuegos de mayor prioridad, puede crear las dos reglas de cortafuegos de denegación de baja prioridad (65534) siguientes. A diferencia de las reglas de cortafuegos implícitas, puede habilitar el registro de reglas de cortafuegos en cada una de estas reglas de baja prioridad:

  1. Una regla de denegación de entrada (fuentes 0.0.0.0/0, todos los protocolos y todos los destinos de la red de VPC)

  2. Una regla de denegación de salida (destinos 0.0.0.0/0, todos los protocolos y todos los destinos de la red VPC)

  • Con estas reglas de baja prioridad y el registro de reglas de cortafuegos, puede registrar los paquetes que no procesen las reglas de cortafuegos de mayor prioridad y, posiblemente, más específicas. Estas dos reglas de baja prioridad también se ajustan a las prácticas recomendadas de seguridad, ya que implementan una estrategia de "paquetes de eliminación final".

  • Examina los registros de las reglas de cortafuegos para determinar si quieres crear o modificar reglas de mayor prioridad para permitir paquetes. Por ejemplo, si se descartan los paquetes enviados entre las VMs de un clúster de Dataproc, puede ser una señal de que las reglas de cortafuegos deben ajustarse.

Crear una red VPC

En lugar de usar la red default de VPC, puedes crear tu propia red de VPC en modo automático o personalizado. Cuando creas el clúster, asocias tu red a él.

Entorno de Assured Workloads: cuando usas un entorno de Assured Workloads para cumplir los requisitos normativos, el clúster, su red de VPC y sus segmentos de Cloud Storage deben estar incluidos en el entorno de Assured Workloads.

Crear un clúster que use tu red de VPC

Consola

Selecciona tu red en la sección Configuración de red del panel Personalizar clúster. Después de elegir la red, el selector Subred muestra las subredes disponibles en la región que has seleccionado para el clúster.

Google Cloud CLI

Usa gcloud dataproc clusters create con la marca ‑‑network o ‑‑subnet para crear un clúster en una subred de tu red. Si usas la marca ‑‑network, el clúster usará una subred con el mismo nombre que la red especificada en la región en la que se cree el clúster.

--network example. Como las redes automáticas se crean con subredes en cada región y cada subred recibe el nombre de la red, puedes pasar el nombre de la red VPC de modo automático a la marca ‑‑network. El clúster usará la subred de VPC en modo automático de la región especificada con la marca ‑‑region.

gcloud dataproc clusters create CLUSTER_NAME \
    --network NETWORK_NAME \
    --region=REGION \
    ... other args ...

--subnet example. Puedes usar la marca ‑‑subnet para crear un clúster que use una subred de red VPC de modo automático o personalizado en la región del clúster. Especifica la ruta completa del recurso de la subred.

gcloud dataproc clusters create CLUSTER_NAMEW \
    --subnet projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME \
    --region=REGION \
    ... other args ...

API REST

Puede especificar el campo networkUri o subnetworkUri GceClusterConfig como parte de una solicitud clusters.create.

Ejemplo

POST /v1/projects/my-project-id/regions/us-central1/clusters/
{
  "projectId": "PROJECT_ID",
  "clusterName": CLUSTER_NAME,
  "config": {
    "configBucket": "",
    "gceClusterConfig": {
      "subnetworkUri": SUBNET_NAME,
    },
    ...

Crear un clúster que use una red VPC en otro proyecto

Un clúster de Dataproc puede usar una red de VPC compartida definida en un proyecto del host. El proyecto en el que se crea el clúster de Dataproc se denomina proyecto de servicio.

  1. Busca el número de proyecto del clúster de Dataproc:

    1. Abre la página IAM y administración Configuración en la consolaGoogle Cloud . Selecciona el proyecto en el que crearás el clúster de Dataproc. Copia el ID del proyecto.
  2. Un principal con el rol Administrador de VPC compartida debe seguir estos pasos. Consulta las instrucciones para configurar una VPC compartida para obtener información general.

    1. Asegúrate de que el proyecto host de la VPC compartida esté habilitado.

    2. Vincula el proyecto con el clúster de Dataproc al proyecto host.

    3. Configura la cuenta de servicio del agente de servicio de Dataproc (service-[project-number]@dataproc-accounts.iam.gserviceaccount.com) para que tenga el rol Usuario de red en el proyecto host:

      1. Abre la página IAM y administración en la Google Cloud consola.

      2. Usa el selector de proyectos para seleccionar el nuevo proyecto host.

      3. Haz clic en Conceder acceso.

      4. Rellena el formulario de concesión de acceso:

        1. Añadir principales: introduce la cuenta de servicio.

        2. Asignar roles: inserta "Compute Network" en el cuadro de filtro y, a continuación, selecciona el rol Usuario de red de Compute.

        3. Haz clic en Guardar.

  3. Una vez que la cuenta de servicio tenga el rol Network User en el proyecto del host, crea un clúster que utilice la red de VPC compartida.

Crear un clúster que use una subred de VPC en otro proyecto

Un clúster de Dataproc puede usar una subred de VPC compartida definida en un proyecto host. El proyecto en el que se crea el clúster de Dataproc se denomina proyecto de servicio.

  1. Busca el número de proyecto del clúster de Dataproc:

    1. Abre la página IAM y administración Configuración en la consolaGoogle Cloud . Selecciona el proyecto en el que crearás el clúster de Dataproc. Copia el ID del proyecto.
  2. Un principal con el rol Administrador de VPC compartida debe seguir estos pasos. Consulta las instrucciones para configurar una VPC compartida para obtener información general.

    1. Asegúrate de que el proyecto host de la VPC compartida esté habilitado.

    2. Vincula el proyecto con el clúster de Dataproc al proyecto host.

    3. Configura la cuenta de servicio del agente de servicio de Dataproc (service-[project-number]@dataproc-accounts.iam.gserviceaccount.com) para que tenga el rol Usuario de red en el proyecto host:

      1. Abre la página Redes de VPC en la Google Cloud consola.

      2. Usa el selector de proyectos para seleccionar el proyecto host.

      3. Haga clic en la red que contenga la subred que utilizará su clúster de Dataproc.

      4. En la página Detalles de la red de VPC, marca la casilla situada junto al nombre de la subred que usará tu clúster.

      5. Si el panel de información no está abierto, haz clic en Mostrar panel de información.

      6. Sigue estos pasos con cada cuenta de servicio:

        1. En el panel de información, haz clic en Añadir principal.

        2. Rellene el formulario de concesión de acceso:

          1. Añadir principales: introduce la cuenta de servicio.

          2. Asignar roles: inserta "Compute Network" en el cuadro de filtro y, a continuación, selecciona el rol Usuario de red de Compute.

          3. Haz clic en Guardar.

  3. Una vez que la cuenta de servicio tenga el rol Network User en el proyecto del host, crea un clúster que utilice la subred de VPC compartida.

Crear un clúster solo con IPs internas

Esta sección se aplica a los clústeres con versiones de imagen anteriores a 2.2. Las VMs de clúster con direcciones IP internas únicamente están habilitadas de forma predeterminada al crear clústeres de Dataproc con versiones de imagen 2.2 y posteriores.

Puedes usar la Google Cloud consola, la CLI de gcloud o la API de Dataproc para crear un clúster con solo direcciones IP internas. Ten en cuenta que Dataproc habilita automáticamente el Acceso privado de Google en la subred regional del clúster cuando se habilita la opción de solo IP interna para permitir las conexiones a las APIs y los servicios de Google.

Consola

Solo puedes crear un clúster de Dataproc con direcciones IP internas desde la página Crear un clúster de Dataproc en la consola de Google Cloud . En el panel Personalizar clúster, haz clic en Solo IP interna para habilitar esta función en tu clúster.

CLI de gcloud

Puedes crear un clúster con solo direcciones IP internas mediante el comando gcloud dataproc clusters create con la marca ‑‑no-address.

gcloud dataproc clusters create CLUSTER_NAME \
    --no-address \
    --network NETWORK_NAME \
    --region=REGION \
    ... other args ...

Como las redes automáticas se crean con subredes en cada región con el mismo nombre que la red automática, puedes transferir el nombre de la red automática a ‑‑network flag para crear un clúster que use la subred automática en la región del clúster.

También puedes usar la marca ‑‑subnet para crear un clúster que use una subred automática o personalizada en la región en la que se creará el clúster. Pasa la marca ‑‑subnet la ruta completa del recurso de la subred.

gcloud dataproc clusters create cluster-name \
    --no-address \
    --subnet projects/project-id/regions/region/subnetworks/subnetwork-name \
    --region=region \
    ... other args ...

API REST

Puedes usar el campo GceClusterConfig.internalIpOnly como parte de una solicitud clusters.create para crear un clúster que solo habilite direcciones IP internas.

Ejemplo:

POST /v1/projects/my-project-id/regions/us-central1/clusters/
{
  "projectId": "my-project-id",
  "clusterName": "example-cluster",
  "config": {
    "configBucket": "",
    "gceClusterConfig": {
      "subnetworkUri": "custom-subnet-1",
      "zoneUri": "us-central1-b",
      "internalIpOnly": true
    },
    ...

Descargar dependencias con clústeres solo con IP interna

De forma predeterminada, los clústeres con solo IP interna no tienen acceso a Internet. Por lo tanto, las tareas que descarguen dependencias de Internet, como las que descarguen paquetes de dependencias de Spark de Maven Central, fallarán. Hay varias soluciones alternativas para evitar el problema:

  1. Usa Cloud NAT para habilitar el acceso del clúster a Internet.

  2. Crea una imagen personalizada que incluya las dependencias (por ejemplo, los paquetes de dependencias de Spark en /usr/lib/spark/jars/).

  3. Sube las dependencias a un segmento de Cloud Storage y, a continuación, usa una acción de inicialización para descargar las dependencias del segmento durante la creación del clúster.

Redes de Dataproc y Controles de Servicio de VPC

Con los Controles de Servicio de VPC, los administradores pueden definir un perímetro de seguridad alrededor de los recursos de los servicios gestionados por Google para controlar la comunicación entre dichos servicios.

Ten en cuenta las siguientes limitaciones y estrategias al usar redes de Controles de Servicio de VPC con clústeres de Dataproc:

Siguientes pasos