Configuración de la red de un clúster 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 con los requisitos de ruta y firewall para acceder de forma segura a las APIs de Google y otros recursos.

Requisitos de ruta

El agente de Dataproc que se ejecuta en las VMs del clúster accede a la API de control de Dataproc para obtener trabajos y generar informes de estado con el Acceso privado a Google. El Acceso privado a Google garantiza que el tráfico a la API de control de Dataproc no atraviese Internet pública ni salga de los centros de datos de Google, ya que utiliza una ruta de enrutamiento especial a través de la puerta de enlace de Internet predeterminada. Por lo tanto, 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 puerta de enlace de Internet. Esto también es obligatorio para los clústeres solo con IP interna.

Cuando se crean, las redes de VPC contienen una ruta predeterminada generada por el sistema a la puerta de enlace de Internet predeterminada:

Regla Tipo Rango de IP de destino Prioridad Límites de permisos Siguiente salto
default-route-[id] Estática 0.0.0.0/0 1000 - Puerta de enlace de Internet predeterminada

No se recomienda borrar la ruta predeterminada a la puerta de enlace de Internet. Si deseas controlar el acceso a Internet de la red, usa reglas o políticas de firewall.

Si borraste la ruta predeterminada a la puerta de enlace de Internet, debes agregar una ruta predeterminada. El rango de IP de destino debe ser 0.0.0.0/0, ya que los rangos de IP de la API de control de Dataproc no son estáticos.

Requisitos del firewall

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 hacia la API de control de Dataproc y otras VMs del clúster de Dataproc. Este tráfico se permite de forma predeterminada desde la regla implícita de permiso total de salida de la red de VPC. Si agregaste reglas de firewall de rechazo de salida de anulación, crea una regla de firewall de permiso de salida.

  • 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 a la naturaleza con estado del firewall de la red de VPC.

  • Tráfico que reciben las VMs del clúster de Dataproc de otras VMs del clúster de Dataproc. Este tráfico se rechazará de forma predeterminada con la regla de firewall implícita de rechazo de entrada de la red de VPC. Debes crear una regla de firewall de permiso de entrada.

Prácticas recomendadas:

  • Usa etiquetas de red para las VMs de tu clúster de Dataproc, de modo que puedas restringir la aplicabilidad de las reglas de firewall requeridas solo a las VMs del clúster de Dataproc. Si no usas etiquetas de red, puedes especificar objetivos según la cuenta de servicio que se usa para las VMs del clúster. De lo contrario, puedes configurar reglas de firewall para que se apliquen a todas las VM de la red de VPC.
  • Para una mayor seguridad en el acceso y la conectividad de la red, usa etiquetas seguras en lugar de etiquetas de red para definir las fuentes y los destinos de las reglas de firewall.

Crea una regla de firewall de permiso de entrada

Si tú o tu administrador de red o seguridad crean una regla de firewall de entrada para aplicarla a una red de VPC de clúster de Dataproc, esta debe tener las siguientes características:

  • El parámetro sources especifica los orígenes de los paquetes. Todas las VMs del clúster de Dataproc deben poder comunicarse entre sí. Puedes identificar las VMs del clúster por rango de direcciones IP (el rango principal de la subred del clúster de Dataproc), etiquetas de red o cuentas de servicio asociadas con 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 bien puedes identificar las VMs por etiqueta de red de destino o cuenta de servicio de destino.

  • La regla debe incluir los siguientes protocolos y puertos:

    • TCP (todos los puertos, de 0 a 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 prioridad de cualquier regla de firewall de denegación de entrada que se aplique a las mismas fuentes y destinos.

Crea una regla de firewall de permiso de salida

Si tú o tu administrador de red o seguridad crean una regla de firewall de salida para aplicarla a una red de VPC de clúster de Dataproc, esta 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 hacia la API de control de Dataproc. Como las direcciones IP de la API de control no son estáticas, el destino debe especificarse por rango 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 bien puedes identificar las VMs por etiqueta de red de destino o cuenta de servicio de destino.

  • La regla debe incluir los siguientes protocolos y puertos:

    • TCP (todos los puertos, de 0 a 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 prioridad de cualquier regla de firewall de denegación de salida que se aplique a los mismos destinos y objetivos.

Diagnostica reglas de firewall de red de VPC

Para auditar los paquetes que no procesaron las reglas de firewall de mayor prioridad, puedes crear las siguientes dos reglas de firewall de prioridad baja (65534). A diferencia de las reglas de firewall implícitas, puedes habilitar el registro de reglas de firewall en cada una de estas reglas de prioridad baja:

  1. Una regla de denegación de entrada (orígenes 0.0.0.0/0, todos los protocolos, 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, todos los destinos de la red de VPC)

  • Con estas reglas de prioridad baja y el registro de reglas de firewall, puedes registrar paquetes que las reglas de firewall de mayor prioridad (y potencialmente más específicas) no procesaron. Estas dos reglas de prioridad baja también se alinean con las prácticas recomendadas de seguridad mediante la implementación de una estrategia de “paquetes de descarte final”.

  • Examina los registros de reglas de firewall para estas reglas y determina si deseas crear o modificar reglas de mayor prioridad para permitir paquetes. Por ejemplo, si se descartan los paquetes enviados entre las VMs del clúster de Dataproc, esto puede indicar que se deben ajustar tus reglas de firewall.

Crear red de VPC

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

Entorno de Assured Workloads: Cuando usas un entorno de Assured Workloads para el cumplimiento de las reglamentaciones, el clúster, su red de VPC y sus buckets de Cloud Storage deben estar contenidos dentro del entorno de Assured Workloads.

Crea un clúster que use tu red de VPC

Console

Selecciona tu red en la sección Configuración de red en el panel Personalizar clúster. Después de elegir la red, el selector de Subred muestra las subredes disponibles en la región que seleccionaste 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 donde se crea el clúster.

--network example. Dado que 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 de VPC en modo automático a la marca ‑‑network. El clúster usará la subred de VPC en modo automático en 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 de VPC personalizada o en modo automático en la región del clúster. Especifica la ruta de acceso 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 de REST

Puedes 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,
    },
    ...

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

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

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

    1. Abre la página Configuración de IAM y administración en la consola deGoogle Cloud . Selecciona el proyecto en el que crearás el clúster de Dataproc. Copia el ID del proyecto.
  2. Un principal con la función de administrador de la VPC compartida debe realizar los siguientes pasos. Consulta las instrucciones para configurar la VPC compartida a fin de obtener información de referencia.

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

    2. Adjunta 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 de Usuario de red para el proyecto host:

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

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

      3. Haz clic en Otorgar acceso.

      4. Completa el formulario Grant Access:

        1. Agregar principales: Ingresa la cuenta de servicio.

        2. Asigna roles: Inserta "Compute Network" en el cuadro de filtro y, luego, selecciona el rol Usuario de la red de Compute.

        3. Haz clic en Guardar.

  3. Después de que la cuenta de servicio tenga el rol Network User para el proyecto host, crea un clúster que use la red de VPC compartida.

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

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

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

    1. Abre la página Configuración de IAM y administración en la consola deGoogle Cloud . Selecciona el proyecto en el que crearás el clúster de Dataproc. Copia el ID del proyecto.
  2. Un principal con la función de administrador de la VPC compartida debe realizar los siguientes pasos. Consulta las instrucciones para configurar la VPC compartida a fin de obtener información de referencia.

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

    2. Adjunta 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 de usuario de red para el proyecto host:

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

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

      3. Haz clic en la red que contiene la subred que usará tu clúster de Dataproc.

      4. En la página Detalles de la red de VPC, haz clic en la casilla de verificación 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 para cada cuenta de servicio:

        1. En el panel de información, haz clic en Agregar principal.

        2. Completa el formulario de Grant Access:

          1. Agregar principales: Ingresa la cuenta de servicio.

          2. Asigna roles: Inserta "Compute Network" en el cuadro de filtro y, luego, selecciona el rol Usuario de la red de Compute.

          3. Haz clic en Guardar.

  3. Después de que la cuenta de servicio tenga el rol Network User para el proyecto host, crea un clúster que use la subred de la VPC compartida.

Crea un clúster solo con IP interna

Esta sección se aplica a los clústeres con versiones de imagen anteriores a 2.2. Las VMs del clúster con direcciones solo de IP interna están habilitadas de forma predeterminada cuando se crean clústeres de Dataproc con versiones de imagen 2.2 y posteriores.

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

Console

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 . Haz clic en Solo IP interna en el panel Personalizar clúster para habilitar esta función en tu clúster.

gcloud CLI

Solo puedes crear un clúster con 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 ...

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

Como alternativa, puedes usar la marca ‑‑subnet para crear un clúster que usará una subred automática o personalizada en la región donde se creará el clúster. Pasa la marca ‑‑subnet a la ruta de acceso 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 de REST

Puedes usar el campo GceClusterConfig.internalIpOnly como parte de una solicitud clusters.create para crear un clúster que habilite solo las 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
    },
    ...

Descarga dependencias con clústeres que solo tienen IP internas

De forma predeterminada, los clústeres que tienen solo IP internas no cuentan con acceso a Internet. Por lo tanto, fallarán los trabajos que descarguen dependencias de Internet, como los que descarguen paquetes de dependencia de Spark desde Maven Central. Hay varias soluciones 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, paquetes de dependencia de Spark en /usr/lib/spark/jars/).

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

Redes de Dataproc y Controles del servicio de VPC

Los Controles del servicio de VPC permiten a los administradores definir un perímetro de seguridad alrededor de los recursos de los servicios administrados por Google para controlar la comunicación entre esos servicios.

Ten en cuenta las siguientes limitaciones y estrategias cuando uses redes de Controles del servicio de VPC con clústeres de Dataproc:

¿Qué sigue?