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 VPC 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 necesita una ruta a Internet para acceder a la API de control de Dataproc, obtener trabajos y registrar el estado. Cuando se crean, las redes de VPC contienen una ruta predeterminada generada por el sistema a Internet. No se recomienda borrar la ruta predeterminada a Internet. En su lugar, usa firewalls para controlar el acceso a la red. Ten en cuenta que los clústeres solo con IP interna también requieren esta ruta predeterminada a Internet para acceder a las APIs de control de Dataproc y a otros servicios de Google, como Cloud Storage, pero su tráfico no sale de los centros de datos de Google.
Requisitos del firewall
Las máquinas virtuales (VM) del clúster de Dataproc deben poder comunicarse entre sí con los protocolos ICMP, TCP (todos los puertos) y UDP (todos los puertos).
La regla de firewall de 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 VMs 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
, la regla implícita de rechazo de entrada bloqueará el tráfico de entrada en la reddefault
.Si borras la regla de firewall
default-allow-internal
o no usas la red de VPCdefault
, 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.
- Crea una regla de firewall de entrada para la red de VPC de tu clúster que permita la conectividad de entrada solo entre las VMs del clúster. Para ello, usa un rango de IP de origen o identifica las VMs del clúster por etiqueta de red o cuenta de servicio.
- Para una mayor seguridad en el acceso y la conectividad de la red, usa etiquetas seguras en lugar de etiquetas de red para definir los orígenes y los destinos de las reglas de firewall.
Crea una regla de firewall 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, etiquetas de origen o cuentas de servicio asociadas a las VMs.
El destino de la regla debe identificar las VMs del clúster. El destino pueden ser todas las VMs de la red de VPC, o bien puedes identificar las VMs 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, 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.
Diagnostica 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:
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)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 a fin de determinar si necesitas 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.
Busca el número del proyecto del clúster de Dataproc:
- 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.
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.
Asegúrate de que el proyecto host de la VPC compartida esté habilitado.
Adjunta el proyecto con el clúster de Dataproc al proyecto host.
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:Abre la página IAM y administración en la consola de Google Cloud .
Usa el selector de proyectos para seleccionar el nuevo proyecto host.
Haz clic en Otorgar acceso.
Completa el formulario Grant Access:
Agregar principales: Ingresa la cuenta de servicio.
Asigna roles: Inserta "Compute Network" en el cuadro de filtro y, luego, selecciona el rol Usuario de la red de Compute.
Haz clic en Guardar.
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.
Busca el número del proyecto del clúster de Dataproc:
- 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.
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.
Asegúrate de que el proyecto host de la VPC compartida esté habilitado.
Adjunta el proyecto con el clúster de Dataproc al proyecto host.
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:Abre la página Redes de VPC en la consola de Google Cloud .
Usa el selector de proyectos para seleccionar el proyecto host.
Haz clic en la red que contiene la subred que usará tu clúster de Dataproc.
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.
Si el Panel de información no está abierto, haz clic en Mostrar panel de información.
Sigue estos pasos para cada cuenta de servicio:
En el panel de información, haz clic en Agregar principal.
Completa el formulario de Grant Access:
Agregar principales: Ingresa la cuenta de servicio.
Asigna roles: Inserta "Compute Network" en el cuadro de filtro y, luego, selecciona el rol Usuario de la red de Compute.
Haz clic en Guardar.
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 de Dataproc solo con direcciones IP internas
Puedes crear un clúster de Dataproc aislado de la Internet pública con instancias de VM que se comuniquen a través de una subred de IP privada (a las VMs del clúster no se les asignan direcciones IP públicas). Cuando lo hagas, la subred del clúster debe tener habilitado el Acceso privado a Google para permitir que los nodos del clúster accedan a las APIs y los servicios de Google, como Cloud Storage, desde IPs internas.
Puedes usar la Google Cloud consola, gcloud CLI o la API de Dataproc para habilitar solo las direcciones IP internas cuando crees un clúster.
Console
Puedes crear un clúster de Dataproc con el Acceso privado a Google habilitado en 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 habilitar las direcciones IP internas con el comando gcloud dataproc clusters create
y la marca ‑‑no-address
.
Puedes usar la marca‑‑network
para crear un clúster que usará una subred con el mismo nombre que la red en la región donde 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 esta a la marca ‑‑network flag
para crear un clúster que usará la subred automática en la región del clúster.
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 habilitar 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, por ejemplo, los trabajos que descarguen paquetes de dependencia de Spark desde Maven Central. Hay varias soluciones para evitar el problema:
Usa Cloud NAT para habilitar el acceso del clúster a Internet.
Crea una imagen personalizada que incluya las dependencias (por ejemplo, paquetes de dependencia de Spark en
/usr/lib/spark/jars/
).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:
Para instalar componentes fuera del perímetro de los Controles del servicio de VPC, crea una imagen personalizada de Dataproc que preinstale los componentes y, luego, crea el clúster con la imagen personalizada.
Consulta los pasos especiales de Dataproc de protección mediante los Controles del servicio de VPC.