Estaciones de trabajo en línea OnWorks Linux y Windows

Logotipo

Alojamiento gratuito en línea para estaciones de trabajo

<Anterior | Contenido | Siguiente>

1.7. Control de acceso


La gestión de qué tipo de acceso (lectura, escritura, etc.) deben tener los usuarios a los recursos se conoce como

control de acceso. Las directivas de configuración involucradas se denominan listas de control de acceso o ACL.


Cuando instalamos el paquete slapd, se configuraron automáticamente varias ACL. Veremos algunas consecuencias importantes de esos valores predeterminados y, al hacerlo, tendremos una idea de cómo funcionan las ACL y cómo están configuradas.


Para obtener la ACL efectiva para una consulta LDAP, necesitamos mirar las entradas de ACL de la base de datos que se consulta, así como las de la instancia de base de datos de interfaz especial. Las ACL pertenecientes a este último actúan como predeterminadas en caso de que las del primero no coincidan. La base de datos de la interfaz es la segunda que se consulta y la ACL que se aplica es la primera en hacer coincidir ("la primera coincidencia gana") entre estas 2 fuentes de ACL. Los siguientes comandos darán, respectivamente, las ACL de la base de datos mdb ("dc = example, dc = com") y las de la base de datos frontend:


sudo ldapsearch -Q -LLL -Y EXTERNAL -H ldapi: /// -b \ cn = config '(olcDatabase = {1} mdb)' olcAccess


dn: olcDatabase = {1} mdb, cn = config

olcAccess: {0} a attrs = userPassword por autoescritura por autenticación anónima por * none olcAccess: {1} to attrs = shadowLastChange por autoescritura por * read

olcAccess: {2} a * por * lectura


imagen

El rootDN siempre tiene todos los derechos sobre su base de datos y no necesita estar incluido en ninguna ACL.



sudo ldapsearch -Q -LLL -Y EXTERNAL -H ldapi: /// -b \ cn = config '(olcDatabase = {- 1} frontend)' olcAccess


dn: olcDatabase = {- 1} interfaz, cn = config

olcAccess: {0} a * por dn.exact = gidNumber = 0 + uidNumber = 0, cn = peercred, cn = external

, cn = auth administrar por * break

olcAccess: {1} a dn.exact = "" por * lectura

olcAccess: {2} a dn.base = "cn = Subschema" por * leer


Las dos primeras ACL son cruciales:


olcAccess: {0} a attrs = userPassword por autoescritura por autenticación anónima por * none olcAccess: {1} to attrs = shadowLastChange por autoescritura por * read


Esto se puede representar de manera diferente para facilitar la digestión:


a attrs = userPassword



por autoescritura

por autenticación anónima por * none


to attrs = shadowLastChange por autoescritura

por * leer


Estas ACL hacen cumplir lo siguiente:

• Se proporciona acceso de "autenticación" anónimo al contraseña de usuario atributo para que los usuarios puedan autenticarse, o se unen. Quizás de forma contraria a la intuición, se necesita 'por autenticación anónima' incluso cuando el acceso anónimo al DIT no es deseado, de lo contrario, esto sería un problema de la gallina y el huevo: antes de la autenticación, todos los usuarios son anónimos.

• El por autoescritura ACL otorga acceso de escritura al contraseña de usuario atributo a los usuarios que se autenticaron como el dn donde vive el atributo. En otras palabras, los usuarios pueden actualizar el contraseña de usuario atributo de sus propias entradas.

• El contraseña de usuario De lo contrario, el atributo es inaccesible para todos los demás usuarios, con la excepción de rootDN, que siempre tiene acceso y no necesita ser mencionado explícitamente.

• Para que los usuarios puedan cambiar su propia contraseña, utilice passwd u otras utilidades, del usuario sombraÚltimoCambio El atributo debe poder escribirse. Todos los demás usuarios del directorio pueden leer el contenido de este atributo.


Este DIT se puede buscar de forma anónima debido a 'to * by * read' en esta ACL, que otorga acceso de lectura a todo lo demás, por cualquier persona (incluido el anónimo):


a *

por * leer


Si no lo desea, debe cambiar las ACL. Para forzar la autenticación durante una solicitud de vinculación, alternativamente (o en combinación con la ACL modificada) puede usar la directiva 'olcRequire: authc'.


Como se mencionó anteriormente, no existe una cuenta administrativa ("rootDN") creada para la base de datos slapd-config. Sin embargo, existe una identidad SASL a la que se le concede acceso completo. Representa al superusuario del localhost (root / sudo). Aquí está:


dn.exact = gidNumber = 0 + uidNumber = 0, cn = peercred, cn = externo, cn = auth


El siguiente comando mostrará las ACL de la base de datos slapd-config:


sudo ldapsearch -Q -LLL -Y EXTERNAL -H ldapi: /// -b \ cn = config '(olcDatabase = {0} config)' olcAccess


dn: olcDatabase = {0} config, cn = config

olcAccess: {0} a * por dn.exact = gidNumber = 0 + uidNumber = 0, cn = peercred, cn = external, cn = auth manage by * break


Dado que esta es una identidad SASL, necesitamos usar una SASL mecanismo al invocar la utilidad LDAP en cuestión y la hemos visto muchas veces en esta guía. Es el mecanismo EXTERNO. Consulte el comando anterior para ver un ejemplo. Tenga en cuenta que:


1. Debes usar sudo para convertirse en la identidad raíz para que coincida la ACL.

2. El mecanismo EXTERNO funciona a través de IPC (Sockets de dominio UNIX). Esto significa que debe utilizar el ldapi

Formato de URI.


Una forma sucinta de obtener todas las ACL es la siguiente:


sudo ldapsearch -Q -LLL -Y EXTERNAL -H ldapi: /// -b \ cn = config '(olcAccess = *)' olcAccess olcSuffix

Hay mucho que decir sobre el tema del control de acceso. Consulte la página de manual de slapd.access4.


Top OS Cloud Computing en OnWorks: