Attribute im AD verstecken und eigene Attribute erstellen
In einer normalen AD-Umgebung kann jeder Benutzer Attribute aus dem AD auslesen. Dies ist allerdings nicht gerade wünschenswert, da so auch eventuell private Informationen allen Benutzern zugänglich sind. An Universitäten wäre zum Beispiel die Matrikelnummer ein solches schützenswertes Attribut.
Um das Verstecken eines solchen Attributs zu realisieren gibt es jetzt 2 Möglichkeiten:
Man nimmt ein bereits existierendes Attribut im AD und versteckt es, oder man erstellt sich ein eigenes Attribut Matrikelnummer. Hierbei ist zu beachten, dass so genannte „Base Schema Attributes“ gibt, die nicht versteckt werden können.
Ist das Attribut ein Base Schema Attribut?
Man öffnet ldp.exe (Start -> Ausführen -> ldp.exe)
Über Connection -> Bind verbindet man sich zu seiner Domäne
Mit View-> Tree -> BaseDN:CN=Schema,CN=Configuration,DC=Domain,DC=local bekommt man eine Liste der Attribute des ADs (hierbei ist Domain und local durch IHREDOMAIN und IHREENDUNG zu ersetzen)
Man navigiert zu dem gewünschten Attribut, zum Beispiel „Employee-ID“
Ein Doppelklick zeigt rechts die Informationen des Attributs an
Steht hier systemFlags0x10 = (FLAG_SCHEMA_BASE_OBJECT); so kann das Attribut nicht versteckt werden
Verstecken eines Attributs
Um ein Attribut zu verstecken, muss man folgende Schritte ausführen:
Man öffnet ADSI Edit (Start -> Ausführen -> adsiedit.msc)
und navigiert über Schema zu dem gewünschten Attribut
Ein Doppelklick öffnet die Eigenschaften des Attributs
Hier trägt man unter searchFlags den Wert 128 ein und bestätigt mit OK
Nun können nur noch Administratoren das Attribut sehen.
Erstellen eines eigenen Attributs
Um ein eigens Attribut zu erstellen öffnet man die MMC über Start -> Ausführen -> mmc
Hier fügt man über File -> Add/Remove Snap-in… -> Add… das Snap-in Active Directory Schema hinzu. (Falls dieses Fehlen sollte, kann man es wie unter [1] beschrieben installieren)
Nun erweitert man Active Directory Schema. Mit einem Rechtsklick auf den Ordner Attributes -> Create Attribute… und dem Bestätigen der Sicherheitswarnung kommt man zum Dialog zum Erstellen eines neuen AD-Attributs. Hierbei sollte man die Microsoft Richtlinien zur Namensgebung unter [2] beachten Die Eintragungen könnten zum Beispiel so aussehen:
Gemeinsamer Name: Matrikel-Nummer
LDAP-Anzeigename: matrikelNummer
Eindeutige X500-OID: %oidgen%.2.1
Beschreibung: Matrikelnummer
Syntax: Ganze Zahl
Minimum: 0
Maximum: 999999999
%oidgen%2.1 steht hierbei für ein Script von Microsoft. Es schlägt vor, wie die neue OID aussehen soll Den Quelltext finden sie hier: oidgen
Nach Bestätigen der Eingabe hat man ein neues AD-Attribut „matrikelNummer“ erstellt. Nun muss man dieses noch den Benutzern hinzufügen. Hierzu öffnet man den Ordner Classes. Ein Doppelklick auf users öffnet die Eigenschaften. Im Tab Attributes kann man über Add… nun das neu erstellte Attribut matrikelNummer hinzufügen. Nun nur noch alle Dialoge und Fenster mit OK schließen.
Um das neu erstellte Attribut zu verstecken geht man wie oben beschrieben vor und setzt searchFlags auf den Wert 128.
Das neue Attribut anzeigen und editieren
Im AD hat nun jeder Benutzer ein Attribut matrikelNummer, allerdings wird es in Active Directory Users and Computers (ADUC) noch nicht angezeigt und man kann es hier auch noch nicht bearbeiten. Um es nur anzuzeigen, genügt es der tabellarischen Ansicht eine Spalte Matrikelnummer hinzufügen:
Hierzu öffnet man ADSIEdit (Start –> Ausführen -> adsiedit.msc) und navigiert je nach Sprache des Systems zu einem der folgenden Punkte:
(deutsch) - Configuration -> CN=DisplaySpecifieres -> CN=407 -> CN=container-Display (englisch) - Configuration -> CN=DisplaySpecifieres -> CN=409 -> CN=container-Display
Hier fügt man unter extraColumns den Eintrag matrikelNummer, Matrikelnummer, 1,-1,0 hinzu und schon wird das zuvor erstellte Attribut matrikelNummer in einer zusätzliche Spalte im ADUC angezeigt.
Um eine solche Spalte nicht unter Users sondern in den jeweiligen OUs zu erhalten muss man das Ganze an einer anderen Stelle eintragen:
(deutsch) - Configuration -> CN=DisplaySpecifieres -> CN=407 -> CN=organizationalUnit -Display (englisch) - Configuration -> CN=DisplaySpecifieres -> CN=409 -> CN=organizationalUnit -Display
Wenn man den Eintrag allerdings nicht nur sehen sondern auch ändern möchte, sollte man sich einen zusätzlichen Kontextmenüeintrag anlegen:
Hierzu benötigen wir zu aller erst ein kleines Skript, welches das Attribut ausließt, es anzeigt und Änderungen zurück ins AD schreibt. Eine sehr einfache Variante wäre folgender Quelltext:
Option Explicit Dim wshArguments, objUser, objSchemaMatrikelNummer, strCurrentMatrikelNummer, strMatrikelNummer, intMaxLen On Error Resume Next Set wshArguments = WScript.Arguments Set objUser = GetObject(wshArguments(0)) Set objSchemaMatrikelNummer = GetObject("LDAP://schema/matrikelNummer") intMaxLen = objSchemaMatrikelNummer.MaxRange 'intMaxLen = 100000 If objUser.matrikelNummer <> "" Then strCurrentMatrikelNummer = objUser.matrikelNummer Else strCurrentMatrikelNummer = "empty" End If strMatrikelNummer = InputBox( _ "Die aktuelle Matrikelnummer lautet " & strCurrentMatrikelNummer & vbCrLf & _ vbCrLf & _ "Tragen Sie bitte die neue Matrikelnummer ein (1 bis " & intMaxLen & " Zeichen)", _ Right(objUser.Name, Len(objUser.Name) - 3) & " Matrikelnummer", _ objUser.matrikelNummer) If strMatrikelNummer = "" Then WScript.Quit 'User clicked Cancel If Len(strMatrikelNummer) > intMaxLen Then MsgBox "Die neue Matrikelnummer ist zu lang und wird somit nicht gespeichert.", _ vbCritical, "Fehler" Else Err.Clear objUser.matrikelNummer = strMatrikelNummer objUser.SetInfo If Err Then MsgBox "Die neue Matrikelnummer wird nicht gespeichert.", _ vbCritical, "Fehler" End If
Diesen Quelltext speichert man nun an einem beliebigen Ort PFAD als matrikelNummer.vbs ab. Nun öffnen man wieder ADSIEdit (Start -> Ausführen -> adsiedit.msc) und navigiert je nach Sprache des Systems zu einem der folgenden Pfade: (deutsch) - Configuration -> CN=DisplaySpecifieres -> CN=407 -> CN=user-Display (englisch) - Configuration -> CN=DisplaySpecifieres -> CN=409 -> CN=user-Display
Hier fügt man unter dem Punkt adminContextMenu folgenden Eintrag hinzu:
2, Matrikelnummer, PFADmatrikelNummer.vbs
Hierbei kann man die 2 durch jede beliebige, noch nicht in den Einträgen auftauchende, Zahl ersetzen, es verändert sich lediglich die Position im Kontext Menü.
Nun hat man über das Kontextmenü des Benutzers eine Möglichkeit die Matrikelnummer direkt zu ändern.
Weiterführende Links:
[1] http://technet.microsoft.com/de-de/library/cc755885(WS.10).aspx
[2] http://technet.microsoft.com/de-de/library/cc759633(WS.10).aspx
- ASP.NET 1
- Active Directory 41
- Administration Tools 1
- Allgemein 60
- Backup 4
- ChatBots 5
- Configuration Manager 3
- DNS 1
- Data Protection Manager 1
- Deployment 24
- Endpoint Protection 1
- Exchange Server 62
- Gruppenrichtlinien 4
- Hyper-V 18
- Intune 1
- Konferenz 1
- Künstliche Intelligenz 7
- Linux 3
- Microsoft Office 11
- Microsoft Teams 1
- Office 365 11
- Office Web App Server 1
- Powershell 21
- Remote Desktop Server 1
- Remote Server 1
- SQL Server 8
- Sharepoint Server 12
- Sicherheit 1
- System Center 10
- Training 1
- Verschlüsselung 2
- Virtual Machine Manager 1
- Visual Studio 1
- WSUS 7
- Windows 10 12
- Windows 8 9
- Windows Azure 4
- Windows Client 1
- Windows Server 24
- Windows Server 2012 7
- Windows Server 2012R2 15
- Windows Server 2016 7
- Windows Server 2019 2
- Windows Server 2022 1
- Zertifikate 4