Cómo obtener el SID (Identificativo de Seguridad) de un equipo en un dominio Windows usando C# (C Sharp) con Visual Studio .NET Community. Mostramos todo el código fuente necesario para, mediante objeto del Directorio Activo, obtener este código unívoco de un equipo en un dominio Active Directory de Microsoft Windows.

Un poco de teoría, qué es el SID y de qué se compone en entornos Windows

Un identificador de seguridad (SID) es un valor único de longitud variable que se utiliza para identificar una entidad de seguridad (como un grupo de seguridad) en sistemas operativos Windows.

Los SID pueden utilizarse tanto para equipos como para usuarios y otros objetos de Active Directory. Su estructura es variable en función de la versión del SID, del sistema operativo y del objeto a identificar.

Este identificador es útil para solucionar problemas relacionados con la seguridad. También para solucionar problemas de visualización en el editor de lista de control de acceso (ACL) de Windows. Internamente, Windows utiliza este SID para identificar los objetos.

Estructura básica del SID en Windows

La estructura básica de un SID en Windows, que puede variar en función de la versión del SID, del sistema operativo, del dominio y del objeto, un ejemplo de SID de un equipo Windows 10 agregado a un dominio Active Directory:

S-1-5-21-486220024-3606244659-3428632647-548

La estructura básica de un SID de Windows es:

  • S-1: indica la revisión o versión del SID, en este caso la 1.
  • 5: indica el SECURITY_NT_AUTHORITY, indica que es un SID específico de Windows.
  • 21: indica el SECURITY_NT_NON_UNIQUE, indica que seguirá una identificación de dominio.
  • 123456789-1234567890-1234567890: las siguientes tres matrices de SubAuthority contienen números aleatorios de 32 bits para identificar de forma exclusiva el dominio.
  • 548 RID: indica un ID de objeto único dentro del dominio.

Algunos SID conocidos en entornos Windows

A continuación mostramos algunos SID utilizados por Windows para equipos, grupos y usuarios especiales:

SID Nombre Descripción
S-1-0Entidad nulaEntidad de identificador.
S-1-0-0NadieNingún principal de seguridad.
S-1-1Entidad mundialEntidad de identificador.
S-1-1-0TodosGrupo que incluye todos los usuarios, incluso los anónimos e invitados. Los miembros son controlados por el sistema operativo.
S-1-2Entidad localEntidad de identificador.
S-1-2-0LocalGrupo que incluye todos los usuarios que han iniciado la sesión localmente.
S-1-3Creator AuthorityEntidad de identificador.
S-1-3-0Creator OwnerMarcador de posición en una entrada de control de acceso heredable (ACE). Cuando la ACE se hereda, el sistema sustituye este SID por el SID del creador del objeto.
S-1-3-1Creator GroupMarcador de posición en una ACE heredable. Cuando la ACE se hereda, el sistema sustituye este SID por el SID del grupo principal del creador del objeto.
S-1-5 NT Authority Entidad de identificador.
S-1-5-6ServicioGrupo que incluye todos los principales de seguridad que han iniciado la sesión como un servicio.
S-1-5-7 AnónimoGrupo que incluye todos los usuarios que han iniciado sesión anónimamente.
S-1-5-21dominio-513 Usuarios del dominioGrupo global que incluye todas las cuentas de usuario de un dominio. Cuando crea una cuenta de usuario en un dominio, se agrega de forma predeterminada a este grupo.
S-1-5-21dominio-512 Administradores de dominio Grupo global cuyos miembros están autorizados para administrar el dominio. El grupo Admins. del dominio es miembro del grupo Administradores en todos los equipos que se han unido a un dominio, incluidos los controladores de dominio.
S-1-5-21dominio-514 Invitados de dominio Grupo global que tiene sólo un miembro, la cuenta de invitado integrada del dominio.
S-1-5-21dominio-515 Equipos de dominio Grupo global que incluye todos los clientes y servidores se han unido al dominio.
S-1-5-21dominio-516 Controladores de dominio Grupo global que incluye todos los controladores de dominio del dominio.
S-1-5-32-545 UsersDespués de la instalación inicial del sistema operativo, el único miembro es el grupo Usuarios autenticados. Cuando un equipo se une a un dominio, el grupo Admins. del dominio se agrega al grupo Usuarios del equipo.

Obtener el SID Identificador de Seguridad de un equipo mediante aplicación C# y DirectoryServices

Crearemos un nuevo proyecto en Visual Studio .NET Community, elegiremos Aplicación de Windows Forms (.NET Framework):

Obtener el SID Identificador de Seguridad de un equipo mediante aplicación C# y DirectoryServices

Introduciremos el nombre del proyecto, por ejemplo ProyectoA_Obtener_SID y la carpeta donde se guardará. Dejaremos la versión del Framework por defecto, en nuestro caso .NET Framework 4.7.2:

Obtener el SID Identificador de Seguridad de un equipo mediante aplicación C# y DirectoryServices

Agregaremos los componentes necesarios para mostrar el SID:

  • Un TexBox: donde se mostrará el SID del equipo.
Obtener el SID Identificador de Seguridad de un equipo mediante aplicación C# y DirectoryServices
  • Un Button: para mostrar el SID del equipo.
Obtener el SID Identificador de Seguridad de un equipo mediante aplicación C# y DirectoryServices

El formulario quedará de la siguiente forma:

Obtener el SID Identificador de Seguridad de un equipo mediante aplicación C# y DirectoryServices

Haremos doble clic sobre el botón «Obtener SID» (lo hemos llamado bObtenerSID) para agregar el siguiente código, que será el que obtenga el SID y lo muestre en el TextBox (llamado txtSID):

La función que agregaremos para obtener el SID, que será obtenerSIDEquipo:

Que necesitará las siguientes referencias:

El código fuente completo en C Sharp C# del formulario de la aplicación para obtener el SID y mostrarlo en un TextBox usando DirectoryServices será:

La aplicación Proyecto A Obtener SID en funcionamiento

Compilaremos la aplicación pulsando en F5 para probarla y obtener el SID del equipo donde se está ejecutando:

La aplicación Proyecto A Obtener SID en funcionamiento

Pulsando el botón «Obtener SID» conectará con el Active Directory mediante DirectoryServices y devolverá en el cuadro de texto el SID:

La aplicación Proyecto A Obtener SID en funcionamiento