En UNIX: Identificadores Únicos y demás....
Los usuarios en UNIX son identificados en el sistema por un identificador único (UID, siglas en Inglés); sin embargo una identidad completa en UNIX consta de mucho más. Como observación, para ser una estructura tan sencilla, ha pasado la prueba del tiempo:
nombre de usuario : contraseña cifrada (no se usa): UID : GID : Campo GECOS : Carpeta de Inicio : Intérprete de comandos
Ejemplo:
nombre de usuario: juan.perez
UID/GID: 305
GECOS: Juan A. Perez
Inicio: /home/jim
Intérprete: /bin/bash
En el Directorio Activo, las cosas funcionan de manera diferente ya que este es un servicio de directorio LDAP esto quiere decir que hay muchos campos que deben mucho al legado del estándar x.500:
- Login o nombre de usuario: es el nombre de la cuenta en un formato legible. El login debe planearse debido a las limitaciones de ciertas distribuciones de UNIX (como AIX y HP-UX).
- UID: identificador único (unique identifier o UID en inglés)r. El número que asigna el sistema operativo a los archivos y carpetas; procesa permisos y demás. Típicamente los UID del O al 100 son reservados. La cuenta de súper usuario (root) tiene el UID 0.
- Identificador de Grupo (Group ID o GID en Inglés): Es el grupo primario del usuario. En sistemas modernos existe el concepto de auto-grupo. Esto indica que el grupo del usuario es el mismo UID.
- Campo GECOS (descripción): Este es un campo para descripción. Puede ser el nombre completo del usuario, su título o extensión telefónica.
- Carpeta o directorio de Inicio (Home en Inglés): Ubicación de los archivos del usuario Usualmente/home o /exports/home o el estándar de la empresa.
- Intérprete de Comandos (o Shell en Inglés): El intérprete de comandos para el usuario final. Requiere de planificación ya que no todos los intérpretes se instalan pro defecto en todos los sistemas.
nombre de usuario : contraseña cifrada (no se usa): UID : GID : Campo GECOS : Carpeta de Inicio : Intérprete de comandos
Ejemplo:
nombre de usuario: juan.perez
UID/GID: 305
GECOS: Juan A. Perez
Inicio: /home/jim
Intérprete: /bin/bash
juan.perez::305:305:Juan A. Perez:/home/juan.perez:/bin/bash
Excelente simplicidad!!!!
En Directorio Activo: ¿Qué es el UPN?
Notas: Cuando se crea un usuario en el AD, solo hay que especificar el nombre de usuario, el primer nombre, iniciales, apellido y contraseña. Sin embargo, es un poco más complejo porque crea los siguientes campos:
- El User Principal Name o UPN en Inglés: es el identificador en el formato de <usuario>@nombre del dominio
- sAMAccountName: este campo es el nombre corto (<20 caracteres)
- Identificador Unico (o System Identifier, SID en inglés): En el AD se le llama "Object SID". Continene el identificador del dominio más un identificador global.
Al observar en mas detalles el usuario, podemos ver mucho más información:
Dn: CN=Juan Perez,OU=IT,OU=Staff,DC=contoso,DC=com
accountExpires: 9223372036854775807 (never);
badPasswordTime: 0 (never);
badPwdCount: 0;
cn: Jim Brown;
codePage: 0;
countryCode: 0;
displayName: Juan Perez;
distinguishedName: CN=Juan Perez,OU=IT,OU=Staff,DC=contoso,DC=com;
dSCorePropagationData: 0x0 = ( );
givenName: Jim;
instanceType: 0x4 = ( WRITE );
lastLogoff: 0 (never);
lastLogon: 0 (never);
logonCount: 0;
name: Juan Perez;
objectCategory: CN=Person,CN=Schema,CN=Configuration,DC=contoso,DC=com;
objectClass (4): top; person; organizationalPerson; user;
objectGUID: 6698f079-e870-43be-9c14-02260dfbafff;
objectSid: S-1-5-21-3571224596-3006733700-3057749774-1297;
primaryGroupID: 513 = ( GROUP_RID_USERS );
pwdLastSet: 12/10/2013 9:28:34 PM Eastern Standard Time;
sAMAccountName: juan.perez;
sAMAccountType: 805306368 = ( NORMAL_USER_ACCOUNT );
sn: Brown;
userAccountControl: 0x200 = ( NORMAL_ACCOUNT );
userPrincipalName: juan.perez@contoso.com;
uSNChanged: 282804;
uSNCreated: 282799;
whenChanged: 12/10/2013 9:28:34 PM Eastern Standard Time;
whenCreated: 12/10/2013 9:28:34 PM Eastern Standard Time;
accountExpires: 9223372036854775807 (never);
badPasswordTime: 0 (never);
badPwdCount: 0;
cn: Jim Brown;
codePage: 0;
countryCode: 0;
displayName: Juan Perez;
distinguishedName: CN=Juan Perez,OU=IT,OU=Staff,DC=contoso,DC=com;
dSCorePropagationData: 0x0 = ( );
givenName: Jim;
instanceType: 0x4 = ( WRITE );
lastLogoff: 0 (never);
lastLogon: 0 (never);
logonCount: 0;
name: Juan Perez;
objectCategory: CN=Person,CN=Schema,CN=Configuration,DC=contoso,DC=com;
objectClass (4): top; person; organizationalPerson; user;
objectGUID: 6698f079-e870-43be-9c14-02260dfbafff;
objectSid: S-1-5-21-3571224596-3006733700-3057749774-1297;
primaryGroupID: 513 = ( GROUP_RID_USERS );
pwdLastSet: 12/10/2013 9:28:34 PM Eastern Standard Time;
sAMAccountName: juan.perez;
sAMAccountType: 805306368 = ( NORMAL_USER_ACCOUNT );
sn: Brown;
userAccountControl: 0x200 = ( NORMAL_ACCOUNT );
userPrincipalName: juan.perez@contoso.com;
uSNChanged: 282804;
uSNCreated: 282799;
whenChanged: 12/10/2013 9:28:34 PM Eastern Standard Time;
whenCreated: 12/10/2013 9:28:34 PM Eastern Standard Time;
Note la cantidad de campos adicionales que fueron creados., muchos de estos son internos para el servicio de directorio como el DN. Este es el formato x.500 de la ubicación del objeto de usuario. Básicamente explica que el objeto está bajo una carpeta llamada IT Staff.
Dependiendo de la versión del esquema (schema en Inglés) del Directorio Activo, es posible que se incluyan mas campos por defecto. Por ejemplo, si el esquema contiene las extensiones del servidor de correos Microsoft Exchange, dependiendo de las reglas una dirección de correo electrónico sea configurada. Note que el correo electrónico no es necesariamente igual al campo UserPrincipalName.
Entonces, ¿Qué es el Esquema?
Bajo el contexto de las bases de datos, un esquema (o diccionario de datos) define los campos (o atributos) que se pueden definir para un tipo de objeto. Por ejemplo, las páginas blancas tienen un esquema muy sencillo:
Apellido, Primer Nombre, Inicial
Dirección
Número de teléfono
Si se decide mañana que el correo electrónico debe ser incluido en las páginas blancas, entonces se debe extender el esquema de esta base de datos. Hay que considerar:
- ¿Cuántos caracteres son permitidos antes del símbolo de arroba (@)?
- ¿Se va a verificar la validez del dominio de correos?
Estas dos simples preguntas tienen impacto en el tamaño del almacenamientos y el proceso de implementación. Sin embargo, si mañana resulta ser que la inclusión del correo electrónico es una mala idea por lo dinámico de esta información, pues hay que eliminar este campo. En el caso de servicios de directorio, la decisión no es trivial (y en algunos casos imposible)
En una entrada anterior, propuse que el Administrador de Sistemas Windows se preocupa por el potencial uso de extensiones al esquema de AD. Esta es la razón: Si se extiende el esquema y la solución falla, ya el directorio no se puede restaurar al estado original y el espacio es parte del esquema.
La preocupación del administrador es muy válida ya que no es hasta que la solución ha sido probada en producción que se puede evaluar su éxito.
El beneficio de usar a Centrify es que usa el esquema nativo del directorio activo. Desde la versión 31 (incluida en Windows Server 2003 R2) la especificación RFC 2307 fue incluida en el esquema del AD. O sea que no hay preocupaciones para el administrador.