Configuración de la red del clúster de Dataproc

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

Requisitos de conectividad de Dataproc

Las máquinas virtuales (VM) del clúster de Dataproc deben poder comunicarse entre sí mediante los protocolos ICMP, TCP (todos los puertos) y UDP (todos los puertos).

La regla de firewall default-allow-internal de la red de VPC default cumple con los requisitos de conectividad del clúster de Dataproc y permite la entrada desde el rango de origen 10.128.0.0/9 de todas las VM en la red de VPC de la siguiente manera:

Regla Red Dirección Prioridad Rango de origen Protocolos:Puertos
default-allow-internal default ingress 65534 10.128.0.0/9 tcp:0-65535,udp:0-65535,icmp
  • Si borras la regla de firewall default-allow-internal, el tráfico de entrada en la red default se bloquea con la regla implícita de denegación de entrada.

  • Si borras la regla de firewall default-allow-internal o no usas la red de VPC default, debes crear tu propia regla que cumpla con los requisitos de conectividad de Dataproc y, luego, aplicarla a la red de VPC de tu clúster.

Práctica recomendada: Crea una regla de firewall de entrada para la red de VPC del clúster que permita la conectividad de entrada solo entre las VM del clúster mediante un rango de IP de origen o la identificación de VM del clúster por etiqueta de red o cuenta de servicio.

Crea una regla de firewall de entrada

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

  • El parámetro sources especifica los orígenes de los paquetes. Todas las VM del clúster de Dataproc deben poder comunicarse entre sí. Puedes identificar las VM del clúster por rango de direcciones IP, etiquetas de origen o cuentas de servicio asociadas con las VM.

  • El objetivo de la regla debe identificar las VM del clúster. El destino puede ser todas las VM de la red de VPC, o puedes identificar las VM por rango de direcciones IP, etiqueta 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, de 0 a 65535)
    • ICMP

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

Diagnostica tus reglas de firewall de VPC

Para auditar los paquetes que no procesaron las reglas de firewall de mayor prioridad, puedes crear 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 no procesados por reglas de firewall de mayor prioridad y potencialmente más específicas. 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 las reglas de firewall para estas reglas a fin de determinar si necesitas crear o modificar reglas de mayor prioridad para permitir paquetes. Por ejemplo, si los paquetes enviados entre las VM del clúster de Dataproc se descartan, esto puede indicar que debes ajustar las reglas de firewall.

Crear red de VPC

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

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

Crea un clúster que use tu red de VPC

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. Debido a que las redes automáticas se crean con subredes en cada región, y a cada subred se le asigna el nombre de red, puedes pasar el nombre de la red de VPC de modo automático a la marca ‑‑network. El clúster usará la subred de VPC de 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 un modo automático o una subred de red de VPC personalizada en la región del clúster. Especifica la ruta de acceso completa a los recursos 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,
    },
    ...

Console

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 seleccionaste para el clúster.

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 que se define 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 Configuración de IAM y administración en la consola de Google 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. Sigue las instrucciones de este paso secundario a fin de configurar las dos cuentas de servicio siguientes para tener la función Usuario de red en 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 elegir el proyecto host nuevo.

      3. Haz clic en Otorgar acceso.

      4. Completa el formulario para otorgar acceso. Repite estos pasos para agregar ambas cuentas de servicio:

        1. Agregar principales: Ingresa la cuenta de servicio.

        2. Asigna roles: Inserta “Red de Compute” en el cuadro de filtro y, luego, selecciona la función Usuario de la red de Compute.

        3. Haz clic en Guardar.

  3. Después de que ambas cuentas de servicio tengan la función Network User para el proyecto host, crea un clúster que use 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 que se define 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 Configuración de IAM y administración en la consola de Google 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. Sigue las instrucciones de este paso si quieres configurar las dos cuentas de servicio siguientes para tener la función Usuario de red en el proyecto host:

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

      2. Usa el selector de proyectos para elegir 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. Realiza los siguientes pasos para cada cuenta de servicio:

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

        2. Completa el formulario para otorgar acceso:

          1. Agregar principales: Ingresa la cuenta de servicio.

          2. Asigna roles: Inserta “Red de Compute” en el cuadro de filtro y, luego, selecciona la función Usuario de la red de Compute.

          3. Haz clic en Guardar.

  3. Después de que ambas cuentas de servicio tengan la función Network User para el proyecto host, crea un clúster que use la subred de VPC compartida.

Crea un clúster de Dataproc solo con direcciones IP internas

Puedes crear un clúster de Dataproc que esté aislado de la Internet pública cuyas instancias de VM se comuniquen a través de una subred de IP privada (las VM del clúster no tienen asignadas direcciones IP públicas). Para ello, la subred debe tener habilitado el Acceso privado a Google a fin de permitir que los nodos del clúster accedan a las API y los servicios de Google, como Cloud Storage, desde IP internas.

gcloud CLI

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

Usa las marcas ‐‐no-address y ‐‐network: Usa la marca ‑‑no-address con la marca ‑‑network para crear un clúster que usará una subred con el mismo nombre que la red en la región en la que se crea el clúster.

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

Por ejemplo, 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 la red automática a ‑‑network flag para crear un clúster que usará la subred automática en la región del clúster.

Usa las marcas ‐‐no-address y ‐‐subnet: usa la marca ‑‑no-address con las marcas ‑‑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 a la ruta de acceso completa a los recursos 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 establecer el campo GceClusterConfig internalIpOnly a true como parte de una solicitud clusters.create para habilitar solo 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
    },
    ...

Console

Puedes crear un clúster de Dataproc con el Acceso privado a Google habilitado desde la página Create a cluster (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.

Dado que, de forma predeterminada, los clústeres de solo IP interna no tienen acceso a Internet, los trabajos que descargan dependencias de Internet, por ejemplo, los trabajos que descargan paquetes de dependencia de Spark desde Maven Central, fallarán. Hay varias soluciones para evitar el problema:

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

  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 de 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: