Sicherheits-IDs

Eine Sicherheits-ID (SID) ist ein eindeutiger Wert variabler Länge, der zum Identifizieren eines Vertrauensnehmersverwendet wird. Jedes Konto verfügt über eine eindeutige SID, die von einer Autorität,z. B. einem Windows Domänencontroller, ausgestellt und in einer Sicherheitsdatenbank gespeichert wird. Jedes Mal, wenn sich ein Benutzer anmeldet, ruft das System die SID für diesen Benutzer aus der Datenbank ab und platziert sie im Zugriffstoken für diesen Benutzer. Das System verwendet die SID im Zugriffstoken, um den Benutzer in allen nachfolgenden Interaktionen mit Windows Sicherheit zu identifizieren. Wenn eine SID als eindeutiger Bezeichner für einen Benutzer oder eine Gruppe verwendet wurde, kann sie nie wieder verwendet werden, um einen anderen Benutzer oder eine andere Gruppe zu identifizieren.

Windows Sicherheit verwendet SIDs in den folgenden Sicherheitselementen:

  • In Sicherheitsbeschreibungen zum Identifizieren des Besitzers eines Objekts und einer primären Gruppe
  • In Zugriffssteuerungseinträgen, um den Vertrauensnehmer zu identifizieren, für den der Zugriff zugelassen, verweigert oder überwacht wird.
  • In Zugriffstoken, um den Benutzer und die Gruppen zu identifizieren, denen der Benutzer angehört

Zusätzlich zu den eindeutig erstellten domänenspezifischen SIDs, die bestimmten Benutzern und Gruppen zugewiesen sind, gibt es bekannte SIDs, die generische Gruppen und generische Benutzer identifizieren. Beispielsweise identifizieren die bekannten SIDs Jeder und Welt eine Gruppe, die alle Benutzer enthält.

Die meisten Anwendungen müssen nie mit SIDs arbeiten. Da die Namen bekannter SIDs variieren können, sollten Sie die -Funktionen verwenden, um die SID aus vordefinierten Konstanten zu erstellen, anstatt den Namen der bekannten SID zu verwenden. Beispielsweise verfügt die englische Version des betriebssystems Windows über eine bekannte SID namens "BUILTIN \ Administrators", die in internationalen Versionen des Systems möglicherweise einen anderen Namen hat. Ein Beispiel zum Erstellen einer bekannten SID finden Sie unter Suchen nach einer SID in einem Zugriffstoken in C++.

Wenn Sie mit SIDs arbeiten müssen, bearbeiten Sie sie nicht direkt. Verwenden Sie stattdessen die folgenden Funktionen.

Funktion Beschreibung
AllocateAndInitializeSid Ordnet eine SID mit der angegebenen Anzahl von Unterautoritäten zu und initialisiert sie.
ConvertSidToStringSid Konvertiert eine SID in ein Zeichenfolgenformat, das für Anzeige, Speicherung oder Transport geeignet ist.
ConvertStringSidToSid Konvertiert eine SID im Zeichenfolgenformat in eine gültige funktionale SID.
CopySid Kopiert eine Quell-SID in einen Puffer.
EqualPrefixSid Testet zwei SID-Präfixwerte auf Gleichheit. Ein SID-Präfix ist die gesamte SID, mit Ausnahme des letzten Unterautoritätswerts.
EqualSid Überprüft zwei SIDs auf Gleichheit. Sie müssen genau übereinstimmen, um als gleich betrachtet zu werden.
FreeSid Gibt eine zuvor zugeordnete SID mithilfe der AllocateAndInitializeSid-Funktion frei.
GetLengthSid Ruft die Länge einer SID ab.
GetSidIdentifierAuthority Ruft einen Zeiger auf die Bezeichnerautorität für eine SID ab.
GetSidLengthRequired Ruft die Größe des Puffers ab, der zum Speichern einer SID mit einer angegebenen Anzahl von Unterautoritäten erforderlich ist.
GetSidSubAuthority Ruft einen Zeiger auf eine angegebene Unterautorität in einer SID ab.
GetSidSubAuthorityCount Ruft die Anzahl der Unterautoritäten in einer SID ab.
InitializeSid Initialisiert eine SID-Struktur.
IsValidSid Überprüft die Gültigkeit einer SID, indem überprüft wird, ob die Revisionsnummer innerhalb eines bekannten Bereichs liegt und dass die Anzahl der Unterautoritäten kleiner als der Höchstwert ist.
LookupAccountName Ruft die SID ab, die einem angegebenen Kontonamen entspricht.
LookupAccountSid Ruft den Kontonamen ab, der einer angegebenen SID entspricht.