In der heu­ti­gen Zeit wird es immer wich­ti­ger den Zugriff auf Daten und Sys­teme gezielt und prä­zise ver­wal­ten zu kön­nen. Eine zen­trale Platt­form zur Ver­wal­tung der Berech­ti­gun­gen und des Zugriffs für die ein­zel­nen Nut­zer aber auch Grup­pen von Nut­zern ist erfor­der­lich, um z.B. Benut­zern, wel­che aus dem Unter­neh­men aus­schei­den, zen­tral den Zugriff auf Daten und die Berech­ti­gun­gen zur Nut­zung der Sys­teme ent­zie­hen zu kön­nen. Über die Berech­ti­gung von Benut­zer­grup­pen ist es mög­lich bestimmte Berech­ti­gun­gen für ein­zel­nen Abtei­lun­gen inner­halb des Unter­neh­mens zu ver­ge­ben.  Eine Mög­lich­keit für die Ein­rich­tung eines sol­chen zen­tra­len Berech­ti­gungs­sys­tems ist der „Direc­tory Ser­vice“ von AWS.

Der AWS Direc­tory Ser­vice ermög­licht die Erstel­lung eines ver­wal­te­ten Micro­soft Active Direc­tory (AD). Die­ses AD kann für die Ver­wal­tung von Benut­zern und Berech­ti­gun­gen für Win­dows als auch Linux Sys­teme ver­wen­det wer­den. Dar­über hin­aus wird die Rech­te­ver­wal­tung über AD von ver­schie­de­nen AWS Diens­ten wie Rela­tio­nal Data­base Ser­vice (RDS) unterstützt.

Sze­na­rio

Das fol­gende Bild gibt eine Über­sicht über die ver­wen­dete Archi­tek­tur in die­sem Beispiel.

AWS Active Directory Integration – Eine Technische Übersicht Bild1
Abbil­dung 1 Archi­tek­tur Übersicht

Als Grund­lage für die­ses Bei­spiel wird ange­nom­men, dass meh­rere unter­schied­li­che Dienste mit einem loka­len AD ver­bun­den wer­den sol­len. Es han­delt sich bei den anzu­bin­den­den Diens­ten um eine EC2 Instanz mit Win­dows Ser­ver 2022, eine EC2 Instanz mit Ubuntu Ser­ver sowie eine Micro­soft SQL-Ser­ver Daten­bank und einer Post­greSQL Daten­bank. Die Daten­ban­ken wer­den über den Ser­vice AWS RDS bereit­ge­stellt. Außer­dem befin­det sich eine Instanz des Direc­tory Ser­vice in der VPC.  Die VPC dient der netz­werk­mä­ßi­gen Kap­se­lung der ein­zel­nen Ser­vices.  Bei einer VPC han­delt es sich um einen netz­werk­tech­nisch abge­grenz­ten Bereich in der AWS, in dem über unter­schied­li­che Richt­li­nien der Zugriff genau gesteu­ert wer­den kann.  Für die Kom­mu­ni­ka­tion zwi­schen der VPC und dem loka­len Netz­werk wird ein Tran­sit Gate­way ver­wen­det. Das Tran­sit Gate­way ist ein VPN End­punkt in AWS über den ein dyna­misch gerou­te­ter VPN Tun­nel auf­ge­baut wer­den kann. Durch den VPN Tun­nel ist es dann mög­lich unter­schied­li­che Sub­netze in ver­schie­de­nen VPCs anzusprechen.

Ein­rich­ten des Direc­tory Service

Bei der Ein­rich­tung des Direc­tory Ser­vice in AWS wer­den einige Anga­ben, wie die Art des zu erstel­len­den Ver­zeich­nis­ses, benö­tigt. In die­sem Bei­spiel wird ein Ver­zeich­nis vom Typ „AWS Mana­ged Micro­soft AD“ ver­wen­det.  Zu den wei­te­ren Optio­nen bei der Erstel­lung des Ver­zeich­nis­ses gehört die Ein­stel­lung des DNS Namens der Domäne, das Fest­le­gen eines Kenn­worts für den Admin Benut­zer und die Aus­wahl der VPC und Sub­netze, in wel­cher das Direc­tory bereit­ge­stellt wer­den soll.

Anbin­dung von Win­dows Ser­ver 2022

Die Anbin­dung der EC2 mit Win­dows Ser­ver 2022, wel­che hier als Ver­wal­tungs­sys­tem genutzt wird, erfolgt über die Angabe des bei­zu­tre­ten­den Ver­zeich­nis­ses bei der Anlage der EC2 Instanz. Auch hier muss der Netz­werk­zu­griff zwi­schen EC2 und Direc­tory Instanz sicher­ge­stellt werden.

AWS Active Directory Integration – Eine Technische Übersicht Bild2
Abbil­dung 2 Domain Bei­tritt bei der EC2 Instanz Erstellung

Nach der Erstel­lung der EC2 und dem erfolg­rei­chen Domain Bei­tritt ist eine Anmel­dung and der EC2 mit dem “Admin” Benut­zer, wel­cher vom Direc­tory Ser­vice ange­legt wurde, möglich.

Erstel­len der AD Objekte

In die­sem Abschnitt wer­den die Objekte im AD mit­hilfe der erstell­ten Win­dows Ser­ver EC2 ange­legt. Um die Objekte erstel­len zu kön­nen, ist die Ver­wen­dung eines Benut­zers mit den benö­tig­ten Rech­ten erfor­der­lich. Hier wird der “Admin” Benut­zer für die initiale Ein­rich­tung verwendet.

AWS Active Directory Integration – Eine Technische Übersicht Bild3
Abbil­dung 3 Ange­legte AD Gruppen

Im AD wer­den zwei unter­schied­li­che Grup­pen (SQL-Ser­ver und SQL-Admins) erstellt. Für die unter­schied­li­chen Sys­teme wer­den die auf dem fol­gen­den Screen­shot zu sehen­den Benut­zer ange­legt und den Grup­pen zugewiesen.

AWS Active Directory Integration – Eine Technische Übersicht Bild4
Abbil­dung 4 Ange­legte AD Benutzer

Der Benut­zer „Admin“ ist der von AWS bei der Erstel­lung des ADs über den Direc­tory Ser­vice ange­legte Ver­wal­tungs­be­nut­zer. Die Benut­zer „Red Hat“ und „ubuntu ser­ver“ wer­den in die­sem Bei­spiel für die Anbin­dung der EC2 Instan­zen verwendet.

Anbin­dung der Linux Instanzen

Die Anbin­dung der Linux basier­ten Instan­zen erfolgt ähn­lich wie die Anbin­dung der Win­dows Ser­ver Instanz. Nach dem Erstel­len der Instanz wer­den hier aller­dings nicht die Micro­soft Tools für die AD Inte­gra­tion, son­dern spe­zi­elle Linux Pro­gramm ver­wen­det. Der Bei­tritt der Instanz zur Domäne erfolgt über das Tool „realm“.

Erreich­bar­keit der Domäne prüfen:

sudo realm discover example.com

Die­ser Befehlt prüft, ob die Domäne <example.com> erreich­bar ist.

sudo realm join -U <Username> example.com

Mit die­sem Befehl erfolgt der Bei­tritt der Instanz zur Domäne.

Nach­dem die Instanz der Domäne bei­getre­ten ist, las­sen sich über den Befehl

id <Username>@<example.com>

die Daten des Benut­zers von der Domäne abfragen.

Beson­der­heit Anbin­dung RedHat

Um die Red­Hat Instanz an das Direc­tory anbin­den zu kön­nen, müs­sen zuerst die benö­tig­ten Tools instal­liert wer­den. Im Anschluss passt man die Adres­sen der DNS-Ser­ver an, damit die Instanz das Direc­tory fin­den kann. Der Rest des Set­ups ver­läuft ähn­lich wie bei Ubuntu Server.

Tool­liste Ubuntu/RedHat

Die benö­tig­ten Pro­gramme las­sen sich mit den fol­gen­den Befeh­len installieren.

Ubuntu:
sudo apt install realmd libnss-sss libpam-sss sssd sssd-tools adcli samba-common-bin oddjob oddjob-mkhomedir packagekit
Red­Hat:
yum install sssd realmd oddjob oddjob-mkhomedir adcli samba-common samba-common-tools krb5-workstation openldap-clients

Auf dem fol­gen­den Screen­shot ist das Ergeb­nis des Abrufs der Benut­zer­in­for­ma­tio­nen aus dem AD unter RedHat/Ubuntu zu sehen.

AWS Active Directory Integration – Eine Technische Übersicht Bild5
Abbil­dung 5 Linux Benut­zer­in­for­ma­tion aus AD über Shell auslesen

Aus der Aus­gabe des Befehls ID sind die AD Grup­pen, wel­chen der jewei­lige Nut­zer zuge­ord­net ist, ersichtlich.

Die Ver­wal­tung der AD Berech­ti­gun­gen erfolgt bei den Linux Sys­te­men ohne GUI über die Shell und das Edi­tie­ren von Konfigurationsdateien.

Anbin­dung des loka­len AD

Um eine Ver­bin­dung mit dem loka­len AD her­zu­stel­len, wird eine VPN Ver­bin­dung über ein Tran­sit Gate­way ver­wen­det. Die Ver­bin­dung mit dem loka­len AD ermög­licht die Ver­wen­dung der dort ein­ge­rich­te­ten Objekte wie Benut­zer. Durch die VPN Ver­bin­dung sind das lokale AD und das AD des Direc­tory Ser­vices netz­werk­tech­nisch ver­bun­den. Für eine erfolg­rei­che Kom­mu­ni­ka­tion zwi­schen bei­den ADs ist noch die Frei­gabe der Kom­mu­ni­ka­tion auf Anwen­dungs­ebene erfor­der­lich. Die Frei­gabe der Kom­mu­ni­ka­tion auf Anwen­dungs­ebene zwi­schen den bei­den Ver­zeich­nis­sen erfolgt über einen Domain-Trust. Durch die­sen Trust ist die Authen­ti­fi­zie­rung mit Benut­zern des lokal gehos­te­ten AD gegen das Ver­zeich­nis, wel­ches vom Direc­tory Ser­vice bereit­ge­stellt wird, möglich.

Erstel­len der Daten­ban­ken in AWS RDS

Beim Erstel­len der Daten­ban­ken in RDS muss dar­auf geach­tet wer­den, dass die Daten­bank­in­stan­zen den nöti­gen Zugriff auf die Instanz des Direc­tory Ser­vice über das Netz­werk erhal­ten. In die­sem wurde dies über Regeln in den Sicher­heits­grup­pen erle­digt. Ein­stel­lun­gen für einen VPC über­grei­fen­den Netz­werk­ver­kehr sind hier nicht erfor­der­lich, da sich alle Instan­zen in der sel­ben VPC befinden.

Ein­rich­tung Micro­soft SQL-Server

Um einen Benut­zer aus einem AD für eine Micro­soft SQL-Ser­ver Instanz ver­wen­den zu kön­nen, muss die­ser zuerst auf dem SQL-Ser­ver ein­ge­rich­tet wer­den. Die fol­gen­den Befehle legen die Berech­ti­gun­gen für einen ein­zel­nen Benut­zer oder eine Gruppe im AD fest. In die­sem Fall wer­den die Rechte für die Gruppe „SQL-Admins“ festgelegt.

CREATE LOGIN [saracus-aws\SQL-Admins] FROM WINDOWS;
GO
GRANT ALTER ANY CONNECTION TO [saracus-aws\SQL-Admins]
GRANT ALTER ANY LINKED SERVER TO [saracus-aws\SQL-Admins]
GRANT ALTER ANY LOGIN TO [saracus-aws\SQL-Admins]
GRANT ALTER SERVER STATE TO [saracus-aws\SQL-Admins]
GRANT ALTER TRACE TO [saracus-aws\SQL-Admins]
GRANT CONNECT SQL TO [saracus-aws\SQL-Admins]
GRANT CREATE ANY DATABASE TO [saracus-aws\SQL-Admins]
GRANT VIEW ANY DATABASE TO [saracus-aws\SQL-Admins]
GRANT VIEW ANY DEFINITION TO [saracus-aws\SQL-Admins]
GRANT VIEW SERVER STATE TO [saracus-aws\SQL-Admins]
GRANT ALTER ANY SERVER ROLE TO [saracus-aws\SQL-Admins]
GO

Lis­ting 1 Ein­rich­tung AD Gruppe in Micro­soft SQL-Ser­ver und Rechtevergabe

Auf diese Weise kön­nen für jeden Benut­zer die Rechte ange­passt ver­ge­ben wer­den. Die Ver­wal­tung der Micro­soft SQL-Ser­ver Instanz wird über SQL-Ser­ver Manage­ment Stu­dio durch­ge­führt. Bei der Erstel­lung der Benut­zer wird, solange kein Domä­nen Benut­zer mit den ent­spre­chen­den Rech­ten exis­tiert, der von AWS RDS ange­legte Admin Benut­zer ver­wen­det, um die Ver­wal­tungs­auf­ga­ben auszuführen.

Nach­dem die Benut­zer bzw. Grup­pen ange­legt wur­den, kann der Login wie auf dem fol­gen­den Screen­shot gezeigt erfolgen.

AWS Active Directory Integration – Eine Technische Übersicht Bild6
Abbil­dung 6 Micro­soft SQL-Ser­ver Login mit AD Benutzer
Ein­rich­tung PostgreSQL

Für die Ver­wal­tung der Post­greSQL Instanz wird das Pro­gramm pgAd­min unter Win­dows ver­wen­det. Bei Post­greSQL ist es mög­lich den Pass­wort­ab­gleich des Benut­zers über das AD durch­zu­füh­ren. Dazu muss der Benut­zer erst in der Daten­bank ange­legt wer­den, was auch hier mit dem von RDS initial erstell­ten Admi­nis­tra­ti­ons Benut­zer durch­ge­führt wurde. Um den Benut­zer vor unbe­fug­tem Zugriff zu schüt­zen, sollte der Benut­zer mit einem Pass­wort ver­se­hen wer­den. Das gesetzte Pass­wort ver­hin­dert die Anmel­dung ohne Pass­wort und ohne akti­vierte “Ker­be­ros authen­ti­ca­tion”. AD Grup­pen wer­den nicht direkt von Post­greSQL unter­stützt. Die Ver­wen­dung von Berech­ti­gun­gen für AD Grup­pen ist jedoch über externe Skripte bzw. Plug­ins möglich.

AWS Active Directory Integration – Eine Technische Übersicht Bild6
Abbil­dung 7 Benut­zer in PostgreSQL

Bei Post­greSQL müs­sen die Benut­zer im For­mat <Benutzername>@<Domain> ange­legt wer­den. In den Ein­stel­lun­gen für die Ver­bin­dung muss „Ker­be­ros authen­ti­ca­tion“ akti­viert wer­den, um die Authen­ti­fi­zie­rung mit dem AD durchzuführen.

AWS Active Directory Integration – Eine Technische Übersicht Bild7
Abbil­dung 8 Ver­bin­dungs­ein­stel­lun­gen mit AD Benut­zer in pgAdmin

Eine Mög­lich­keit für ein Skript, wel­ches die Ver­wen­dung von AD Berech­ti­gun­gen in Post­greSQL ermög­licht, ist ein Python Skript zur Über­tra­gung der AD Berech­ti­gun­gen in ent­spre­chende Daten­bank Berech­ti­gun­gen. Das Skript benö­tigt einen Zugriff auf das AD zum Aus­le­sen der Berech­ti­gun­gen der ein­zel­nen Benut­zer und einen Zugriff auf die Daten­bank, um die Berech­ti­gun­gen set­zen zu kön­nen. Außer­dem ist ein Map­ping zwi­schen AD Berech­ti­gun­gen und Daten­bank Berech­ti­gun­gen erfor­der­lich. Das Skript kann dann zyklisch aus­ge­führt werden.

Fazit

Im Bereich der AD Inte­gra­tion haben alle in die­sem Bei­spiel genutz­ten AWS Ser­vices unter­schied­li­che Stär­ken und Schwä­chen. Im Bereich der Daten­ban­ken, die hier über RDS bereit­ge­stellt wur­den, ist Micro­soft SQL-Ser­ver deut­lich ein­fa­cher an ein AD zum Rech­te­ma­nage­ment anzu­bin­den als die Post­greSQL Daten­bank. Bei der SQL-Ser­ver Daten­bank kön­nen die Rechte über ein­fa­che SQL-Befehle ver­wal­tet wer­den und den AD Objek­ten (Benut­zern / Grup­pen) zuge­wie­sen wer­den, wodurch der admi­nis­tra­tive Auf­wand gerin­ger aus­fällt. Bei der Post­greSQL Daten­bank wer­den für die Rech­te­ver­wal­tung über das AD externe Skripte wie z.B. ein Python Skript benö­tigt. Die­ses Skript hat die Auf­gabe einen Abgleich der Berech­ti­gun­gen zwi­schen AD und der Post­greSQL Daten­bank durch­zu­füh­ren. Die Anbin­dung der bei­den EC2 Instan­zen gestal­tet sich in bei­den Fäl­len (Win­dows Ser­ver / Red­Hat) ähn­lich auf­wen­dig. Bei der Anbin­dung der unter­schied­li­chen Betriebs­sys­teme ist die Anbin­dung der Win­dows Sys­tem am ein­fachs­ten, da hier für alle Schritte Pro­gramme mit gra­fi­schen Ober­flä­chen direkt von Micro­soft bereit­ge­stellt wer­den. Bei den Linux Sys­te­men erfolgt die Ver­wal­tung der Rechte jedoch über text­ba­sierte Kon­fi­gu­ra­ti­ons­da­teien und der Shell, wodurch sich die Admi­nis­tra­tion schwie­ri­ger gestaltet.