Multiusuario basado en cuentas de servicio seguras

La función de seguridad de instancias múltiples segura de Dataproc (llamada "multiusuario seguro", a continuación), te permite compartir un clúster con múltiples usuarios, con un conjunto de usuarios mapeados a cuentas de servicio cuando se crea el clúster. Con las instancias multiusuario seguras, los usuarios pueden enviar cargas de trabajo interactivas al clúster con identidades de usuario aisladas.

Cuando un usuario envía un trabajo al clúster, el trabajo realiza lo siguiente:

  • Se ejecuta como un usuario del SO específico con un principal de Kerberos específico

  • Accede a recursos de Google Cloud con las credenciales de cuenta de servicio asignadas

Consideraciones y limitaciones

Cuando creas un clúster con multiusuarios habilitado habilitado, ocurre lo siguiente:

  • El clúster solo está disponible para usuarios con cuentas de servicio asignadas. Por ejemplo, los usuarios no asignados no pueden ejecutar trabajos en el clúster.

  • La puerta de enlace de componentes de Dataproc no está habilitada.

  • El acceso SSH directo al clúster y a las funciones de Compute Engine, como la capacidad de ejecutar secuencias de comandos de inicio en VM del clúster, están bloqueados. Además, los trabajos no se pueden ejecutar con privilegios de sudo.

  • Kerberos está habilitado y configurado en el clúster para una comunicación segura dentro de los clústeres.

  • Los flujos de trabajo de Dataproc no son compatibles.

Crea un clúster de instancias múltiples seguro

Para crear un clúster de múltiples instancias seguro de Dataproc, usa la marca --secure-multi-tenancy-user-mapping a fin de especificar una lista de asignaciones de usuario a servicio.

Ejemplo:

El siguiente comando crea un clúster con el usuario bob@my-company.com asignado a la cuenta de servicio service-account-for-bob@iam.gserviceaccount.com y el usuario alice@my-company.com asignado a la cuenta de servicio service-account-for-alice@iam.gserviceaccount.com.

gcloud dataproc clusters create my-cluster \
    --secure-multi-tenancy-user-mapping="bob@my-company.com:service-account-for-bob@iam.gserviceaccount.com,alice@my-company.com:service-account-for-alice@iam.gserviceaccount.com" \
    --scopes=https://www.googleapis.com/auth/iam \
    --service-account=cluster-service-account@iam.gserviceaccount.com \
    --region=region \
    other args ...

De manera alternativa, puedes almacenar la lista de asignaciones de usuario a servicio en un archivo YAML o JSON local o en Cloud Storage. Usa la marca --identity-config-file para especificar la ubicación del archivo.

Ejemplo de archivo de configuración de identidad:

user_service_account_mapping:
  bob@my-company.com: service-account-for-bob@iam.gserviceaccount.com
  alice@my-company.com: service-account-for-alice@iam.gserviceaccount.com

Comando de muestra para crear el clúster con la marca --identity-config-file:

gcloud dataproc clusters create my-cluster \
    --identity-config-file=local or "gs://bucket" /path/to/identity-config-file \
    --scopes=https://www.googleapis.com/auth/iam \
    --service-account=cluster-service-account@iam.gserviceaccount.com \
    --region=region \
    other args ...

Notas:

  • Como se muestra en los comandos anteriores, el clúster --scopes debe incluir al menos https://www.googleapis.com/auth/iam, que es necesario para que la cuenta de servicio del clúster realice el robo de identidad.

  • La cuenta de servicio del clúster debe tener permisos para actuar como las cuentas de servicio asignadas a los usuarios (consulta Administra el robo de identidad de cuentas de servicio).

  • Recomendación: Usa diferentes cuentas de servicio de clúster para diferentes clústeres a fin de permitir que cada cuenta de servicio de clúster robe solo una cuenta de servicio de usuario asignada y limitada.