Gestión de flujos de trabajo de acceso a datos de archivos multiprotocolo con permisos multiprotocolo

Escrito por:

Cuando se trata de acceso a datos de archivos multiprotocolo, uno de los desafíos que resuelve Qumulo se centra en flujos de trabajo de protocolo mixto, donde los usuarios acceden a los mismos archivos a través de los protocolos NFS3, NFSv4.1 y SMB. Un desafío clave en situaciones como esta es cómo manejar los permisos de archivos.

Los usuarios de NFS3 que acceden a sus archivos esperan un modelo de permisos diferente al de los usuarios de Windows que acceden a sus archivos a través de SMB o NFSv4.1. Para crear el flujo de trabajo más fluido posible para los clientes en entornos multiprotocolo, Qumulo ha desarrollado un exclusivo Permisos entre protocolos (XPP) marco que permite a los usuarios de plataformas Windows, Linux y macOS colaborar de forma segura sin el uso de elaboradas protecciones de permisos y esquemas de herencia.

El modelo de permisos multiprotocolo de Qumulo aborda las incompatibilidades inherentes entre los permisos POSIX y la Lista de control de acceso (ACL) para brindar a los usuarios en entornos heterogéneos una experiencia de permisos lo más fluida posible sin importar el protocolo que utilicen.

¿Qué hace que este problema sea tan difícil de resolver?

Los usuarios de sistemas de archivos tienden a no pensar demasiado en los permisos; solo esperamos que funcionen. Pero tener permisos que “simplemente funcionan” requiere pensar mucho desde una perspectiva de ingeniería cuando se tienen dos protocolos completamente diferentes con expectativas distintas trabajando en el mismo entorno.

Permisos POSIX frente a ACL

Los permisos ACL son mucho más detallados que los permisos POSIX. Los permisos POSIX se representan a través de bits de modo que están incrustados en los metadatos de cada archivo y directorio en un conjunto de datos POSIX. Los has visto antes si alguna vez has corrido stat or ls -l desde la línea de comando. Los bits del modo POSIX pueden expresar derechos de lectura, escritura y ejecución de archivos/directorios para el propietario del archivo, el propietario del grupo y todos los demás.

En el mundo POSIX, hay tres niveles de permisos básicos y significan cosas diferentes cuando se aplican a archivos o directorios.

Read Escribe. Implementación
archivos Leer archivo Añadir, Modificar Ejecutar el archivo
Directorio Directorio de la lista Crear / renombrar / borrar niños Directorio transversal (mira a los niños)

Los permisos SMB y NFSv4.1 están representados por Listas de control de acceso (ACL). Un ACL consiste en uno o más Entradas de control de acceso (ACE), cada uno de los cuales contiene un administrador, el usuario/grupo al que se aplica y un conjunto de derechos que el administrador tiene permitido o denegado.

Entonces, por ejemplo, una ACE podría expresar algo como DENEGAR lectura a la cuenta de usuario denominada bob.

Algunos puntos importantes sobre los ACLs:

  • Las ACL se evalúan en orden. La primera ACE en una ACL que se aplica a un fideicomisario gana sobre cualquier ACE posterior que pueda aplicarse a ese fideicomisario.
  • Los derechos posibles en Windows son más detallados que solo leer, escribir y ejecutar; en total, hay derechos posibles de 14, incluido un derecho de “control total” que equivale a los otros derechos combinados de 13.
  • Las ACL se aplican por archivo/directorio y las entradas se pueden transmitir desde los directorios principales a los secundarios. Las ACE que se transmiten desde los directorios principales se denominan "heredadas" y las ACE que se aplican directamente a un archivo en cuestión son "explícitas". Las ACE tienen indicadores que indican cómo y si se heredan.
  • Windows aplica el concepto de una ACL canónica que dicta el orden en que deben aparecer las ACE explícitas y heredadas en una ACL. Una ACL ordenada canónicamente se ve así:

DENYs explícitos
PERMITIDO explícito
DENYs heredados
PERMITIDOS Heredados

Permisos de protocolo cruzado en Qumulo

Dadas las diferencias bastante significativas entre los bits del modo POSIX y las ACL, ¿cómo maneja Qumulo los permisos? Tenemos nuestra propia versión de ACL, llamada QACL. Se asigna casi 1:1 a la ACL estándar de la industria y almacena y comprende un superconjunto de derechos que se pueden expresar tanto en POSIX como en Windows.

Las inconsistencias entre los modelos de permisos ACL y POSIX se pueden reducir a cuatro operaciones: mostrar bits de modo, cambiar permisos, crear archivos y cambiar el propietario de un archivo. En esta publicación, veremos específicamente la visualización de bits de modo y el cambio de permisos para comprender cómo Qumulo resuelve estas inconsistencias.

Antes de profundizar más en las operaciones de permisos específicos, es importante tener en cuenta que uno de los desafíos subyacentes que aborda XPP, el modelo multiprotocolo de Qumulo, es cómo determinar el usuario o usuarios a los que se aplica un conjunto de permisos. Esto es cierto independientemente del protocolo: en un sistema de archivos distribuido de alta disponibilidad como De qumulo, donde existen potencialmente múltiples fuentes de identidad (por ejemplo, LDAP, Active Directory, usuarios/grupos locales de Qumulo), puede resultar difícil saber quién es quién debido a la forma en que se almacenan e identifican los usuarios internamente.

Con XPP, Qumulo introdujo la equivalencia de ID, que utiliza POSIX UID/GID como identificador común en todas las fuentes de identidad: Active Directory con extensiones POSIX o asignaciones definidas por el usuario, OpenLDAP y usuarios/grupos locales de Qumulo. Esto hace posible comparar estos valores para descubrir quién es alguien y a qué grupos pertenece.

Viendo el modo POSIX

Ahora, recuerde que Qumulo almacena permisos en forma de QACL. Esto significa que no almacenamos el modo POSIX como un valor en el disco. Cuando los usuarios que acceden a Qumulo a través de NFS quieren ver los bits de modo de un determinado archivo, los generamos a partir de una QACL. Esto es sencillo cuando QACL solo especifica fideicomisarios que se alinean exactamente con los usuarios/grupos/todos POSIX, pero cuando hay otros fideicomisarios “adicionales”, se vuelve más complicado.

ALLOW file owner read
ALLOW file group owner read
ALLOW Everyone read

En esta simple ACL, es fácil saber qué modo POSIX mostrar. El propietario, el propietario del grupo y Todos tienen derechos de lectura, lo que se traduce en 444. Pero, ¿y si nuestro ACL se veía así?

 

ALLOW file owner read something
ALLOW file group owner read something
ALLOW Everyone read something
ALLOW alice read read, execute, write file

¿Cómo manejamos el ACE “extra” que apunta a Alicia? Para mostrar el modo POSIX más preciso posible, necesitamos saber si Alice es la propietaria del archivo y/o pertenece al grupo del archivo. Descubrir ambas informaciones es posible, pero costoso, y causaría un gran impacto en el rendimiento de la operación bastante común de mostrar el modo POSIX.

En particular, para averiguar si Alice está en el grupo del archivo, deberíamos realizar una expansión recursiva de la membresía del grupo tanto para el grupo del archivo como para alice, además de consultar todas las fuentes de identidad para descubrir si alice es el propietario del archivo.

El enfoque de Qumulo es realizar verificaciones de equivalencia de ID, la menos costosa de las dos operaciones, para ver si una ACE "adicional" es en realidad adicional, o si es el propietario del archivo, pero de lo contrario agrega los permisos adicionales del administrador al bit Todos. Entonces, suponiendo que Alice no es la propietaria del archivo en la ACL anterior, al iniciar el archivo, un usuario vería el bit de modo 447, con los derechos de Alice plegados en el bit Todos.

Esto puede parecer inusual al principio; en realidad, no es cierto que todos tengan permisos de lectura, escritura y ejecución en el archivo. Sin embargo, imagine que mostramos 444 como modo para este archivo. Alguien que observe ese modo podría suponer que nadie tenía permisos de escritura o ejecución. Pero Alice tiene esos permisos y hacer que el usuario crea lo contrario introduce un riesgo de seguridad. Al mostrar el modo más permisivo posible para una QACL determinada, Qumulo permite a los usuarios que miran los permisos POSIX saber que alguien, si no todos, tiene los permisos indicados en el bit Todos.

Cambiando el modo POSIX

Otro problema al hacer que las ACL y los permisos POSIX funcionen juntos es cómo manejar un chmod que viene a través de NFS. Recuerde, las QACL potencialmente tienen derechos más allá de lectura/escritura/ejecución de POSIX, así como también administradores adicionales y esquemas de herencia complicados.

 

DENY alice read read, take ownership (Object inherit)
DENY charlie read execute / traverse
ALLOW charlie read read, write file
ALLOW charlie's group read read
ALLOW Everyone read read contents
ALLOW bob read read, write (Inherit-only)

Charlie es el propietario del archivo al que se aplica esta QACL. El indicador de herencia de objeto en ACE de Alice significa que debe transmitirse a cualquier archivo/directorio secundario, y el indicador de solo herencia en Bob significa que debe transmitirse y que no debe afectar los permisos de Bob en el archivo actual. ¿Cómo cambiamos este QACL cuando alguien hace chmod 555 en él?

Con XPP utilizamos un algoritmo que analiza tanto el modo solicitado como la QACL preexistente, y manipula la QACL para respetar la intención del chmod y al mismo tiempo preservar la estructura de herencia de la QACL preexistente. A modo de ejemplo, la QACL resultante después de aplicar el modo 555 al anterior sería:

DENY alice read take ownership
DENY alice read read, take ownership (Object inherit, inherit-only)
ALLOW charlie read read, execute / traverse
ALLOW charlie's group read read, execute / traverse
ALLOW Everyone read read, execute / traverse
ALLOW bob read read, write (Inherit-only)

¿Lo que pasó aquí? Los derechos se han cambiado para reflejar el modo solicitado, 555. Observe también que hubo una entrada DENY en el propietario del archivo en la QACL anterior que ya no existe porque contradice el chmod.

Ahora veamos las otras ACE. ¿Por qué ahora hay dos ACE para Alicia?

DENY alice read read, take ownership (Object inherit)

Antes después

 

DENY alice read take ownership
DENY alice read read, take ownership (Object inherit, inherit-only)

La primera ACE conserva el permiso denegado en un derecho que no es POSIX en la ACE original (tomar propiedad es un concepto exclusivo de ACL), y la segunda es solo una copia de la primera, marcada como solo herencia para que pueda ser pasado a archivos y directorios secundarios sin afectar el archivo actual. Debido a que, para empezar, el ACE de Bob era solo de herencia, no afecta los permisos en este archivo de todos modos y permanece igual después de chmod.

Conclusión: simplificación del acceso a datos de archivos multiprotocolo para los usuarios

El modelo de permisos de protocolo cruzado de Qumulo es un enfoque único para administrar el acceso multiprotocolo a datos comunes para clientes basados ​​en POSIX y ACL, brindando a nuestros usuarios una opción que es simple, no requiere configuración y simplemente funciona.

Más información

Contáctenos

  • Haz una prueba de manejo. Haga una demostración de Qumulo en nuestros nuevos laboratorios prácticos interactivos o solicite una prueba gratuita.
  • Suscríbete al blog de Qumulo para obtener historias de clientes, conocimientos técnicos, actualizaciones de la industria y noticias de productos.
0 0 votos
Valoración del artículo
Suscríbete
Notificarme sobre
invitado
0 Comentarios
Más antiguo
Más Nuevos Más votados
Comentarios en línea
Ver todos los comentarios

Artículos Relacionados

0
Me encantaría tus pensamientos, por favor comenta.x
Ir al Inicio