Freigeben über


Sicherheits-IDs

Eine Sicherheits-ID (SID) ist ein eindeutiger Wert der variablen Länge, die zum Identifizieren eines Trustees verwendet 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 ist. 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 der 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.

Die Windows-Sicherheit verwendet SIDs in den folgenden Sicherheitselementen:

  • In Sicherheitsdeskriptoren, um den Besitzer eines Objekts und einer primären Gruppe zu identifizieren
  • In Zugriffssteuerungseinträge, um den Trustee zu identifizieren, für den der Zugriff zulässig, verweigert oder überwacht wurde
  • In Zugriffstoken, um den Benutzer und die Gruppen zu identifizieren, zu denen der Benutzer gehört

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

Arbeiten mit SIDs

Die meisten Anwendungen müssen nie mit SIDs arbeiten. Da die Namen von bekannten 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 us-englische Version des Windows-Betriebssystems über eine bekannte SID namens "BUILTIN\Administrators", die möglicherweise einen anderen Namen in internationalen Versionen des Systems hat. Ein Beispiel, das eine bekannte SID erstellt, 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 Weist eine SID mit der angegebenen Anzahl von Unterautoritäten zu und initialisiert sie.
ConvertSidToStringSid Konvertiert eine SID in ein Zeichenfolgenformat, das zum Anzeigen, Speichern oder Transport geeignet ist.
ConvertStringSidToSid Konvertiert eine Zeichenfolgenformat-SID 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 Testet zwei SIDs auf Gleichheit. Sie müssen exakt übereinstimmen, um als gleich angesehen zu werden.
FreeSid Gibt eine zuvor zugewiesene SID mithilfe der Funktion "AllocateAndInitializeSid" 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 sich die Revisionsnummer innerhalb eines bekannten Bereichs befindet 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.

Bekannte SIDs

Suchen nach einer SID in einem Zugriffstoken in C++-