Multiusuario de seguridad basado en la cuenta de servicio de Dataproc (llamada “multiusuario seguro” a continuación) te permite compartir un clúster con varios usuarios, con un conjunto de usuarios asignados a cuentas de servicio cuando se crea el clúster. Con multiusuario seguro, 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, este realiza las siguientes acciones:
se ejecuta como un usuario específico del SO con un principal de Kerberos específico
accede a los recursos de Google Cloud mediante las credenciales de la cuenta de servicio asignada
Consideraciones y limitaciones
Cuando creas un clúster con multiusuario seguro, se habilita lo siguiente:
Puedes enviar trabajos solo a través de la API de Jobs de Dataproc.
El clúster solo está disponible para los usuarios con cuentas de servicio asignadas. Por ejemplo, los usuarios sin asignar no pueden ejecutar trabajos en el clúster.
Las cuentas de servicio se pueden asignar solo a usuarios de Google, no a Grupos de Google.
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 las VM del clúster, está bloqueado. Además, los trabajos no se pueden ejecutar con privilegios
sudo
.Kerberos está habilitado y configurado en el clúster para una comunicación segura dentro del clúster. No se admite la autenticación de usuarios finales a través de Kerberos.
No se admiten los flujos de trabajo de Dataproc.
Crea un clúster de multiusuario seguro
A fin de crear un clúster de multiusuario seguro de Dataproc, usa la marca --secure-multi-tenancy-user-mapping
para especificar una lista de asignaciones de usuario a cuenta de 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 ...
Como alternativa, puedes almacenar la lista de asignaciones de usuario a cuenta de servicio en un archivo YAML o JSON local o de Cloud Storage. Usa la marca --identity-config-file
para especificar la ubicación del archivo.
Archivo de configuración de identidad de muestra:
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
Usa el 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 menoshttps://www.googleapis.com/auth/iam
, lo cual 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 en nombre de las cuentas de servicio asignadas a los usuarios (consulta Permisos de la cuenta 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 actúe en nombre de un grupo limitado y previsto de cuentas de servicio de usuario asignadas.