Cloud-basiertes NAS mit Azure Files und Kerberos-Authentifizierung für Hybrid-Identitäten
Du möchtest deinem lokalen Datei-Server durch einen auf Basis von Azure Files ersetzen? Das funktioniert sehr einfach aus Basis von Azure Storage Files im Zusammenhang mit der Azure AD-Kerberos-Authentifizierung und hybrid im Azure AD eingebundenen Clients.
Für das Synchronisieren der lokalen Computer- und Benutzer-Konten verwendest du dann Azure AD Connect. Darüber hinaus benötigst du für den eigentlichen Zugriff einer „Sichtverbindung“ zu Azure Files, da Azure Files SMB-Anfragen erwartet. Dies bewerkstelligst du z. B. mit Hilfe einer VPN- oder Express-Route-Verbindung. Ich erkläre daher hier nicht, wie Azure AD Connect einzurichten ist, bzw. wie du ein VPN mit Azure betreibst, sondern verweise hierzu auf andere Beiträge in diesem Blog. Auch die grundsätzliche Funktionsweise von Azure Storage Files muss ich für diesen Beitrag voraussetzen. Dieser Beitrag konzentriert sich daher auf das Aktivieren/Ermöglichen der Kerberos-Authentifizierung für Hybrid-Benutzer für Azure Files.
In der Praxis umfasst das Thema allerdings deutlich mehr Aspekte. Hier steht meist die Migration eines bestehenden NAS-Systems oder Files-Servers zu Azure im Vordergrund. Ebenfalls geht es hier häufig auch um eine Optimierung der Performance beim Zugriff. Hierfür (also für die Migration UND einen performanten Zugriff) ist beispielsweise „Azure File Sync“ die perfekte Lösung. Azure Files Sync werde ich allerdings in einem künftigen Beitrag besprechen. Hier gehen wir davon aus, dass wir einen komplett neuen Dateiserver in der Cloud aufsetzen.
Diese Konfiguration erlaubt deinen Hybrid-Benutzern (also Benutzern, die sowohl in deinen Active Directory, als auch in deinem Azure Active Directory existieren) via Kerberos-Authentifizierung auf deine in Azure-Files gehosteten Dateifreigaben zuzugreifen. In folgendem Beispiel nutzt du Azure AD zum Ausstellen der benötigten Kerberos-Tickets für den Zugriff auf die Dateifreigabe via SMB. Damit könnten deine Endbenutzer theoretisch sogar ohne eine „Sichtverbindung“ zu deinen lokalen Domänen-Controllern über das Internet auf deine Azure-Dateifreigaben zugreifen. Möchtest du jedoch Windows-ACLs oder Berechtigungen auf Verzeichnis- und Dateiebene für einen Benutzer oder eine Gruppe konfigurieren, ist selbstverständlich eine Sichtverbindung zu einem lokalen Domänencontroller erforderlich. Du brauchst immer eine „Sicht-Verbindung“ zwischen deinem lokalen Netzwerk und Azure Files für den eigentlichen SMB-Zugriff, solange du diese Einschränkung nicht mit dem Dienst Azure File Sync umgehst, der das File-REST-Protokoll unterstützt. Dazu mehr in einem anderen Artikel.
Übrigens musst du dich in der Praxis für genau eine AD-Methode für eine identitätsbasierte Authentifizierung mit Azure Files entscheiden. Anstelle der Azure AD Kerberos-Authentifizierung für Hybrid-Identitäten könntest du optional auch eine lokale AD DS-Instanz oder die „Azure Active Directory Domain Services“ (ADDS) verwenden. Allerdings unterscheiden sich die Konfigurationsschritte und unterstützten Szenarien für die einzelnen Methoden voneinander. Klickst du in einer Azure Storage Dateifreigabe auf der „Übersichtsseite“ im Abschnitt „Active Directory auf den Link „Nicht konfiguriert“, siehst du die verschiedenen Optionen:
Voraussetzungen
Wir konzentrieren uns hier auf die dritte Option. Was die „Client“-Seite betrifft musst du bedenken, dass die hier gezeigte Kerberos-Funktionalität von Azure AD für hybride Identitäten nur für Windows 11 in der Pro- oder Enterprise-Version zur Verfügung steht sowie für Windows 10 Pro- oder Enterprise ab Version 2004 oder höher mit den neuesten kumulativen Updates installiert, insbesondere https://support.microsoft.com/topic/november-22-2021-kb5007254-os-build-20348-380-preview-9a960291-d62e-486a-adcc-6babe5ae6fc1 „KB5007253 – 2021-11“ (Vorschau für kumulatives Update für Windows 10).
Außerdem kannst du den Zugriff von einem Windows Server 2022 aus realisieren, wenn die neuesten kumulativen Updates installiert sind, insbesondere https://support.microsoft.com/topic/november-22-2021-kb5007254-os-build-20348-380-preview-9a960291-d62e-486a-adcc-6babe5ae6fc1 „KB5007254““ – 2021-11“ (Vorschau für kumulatives Update für Microsoft Server-Betriebssystemversion 21H2).
Zudem müssen deine Clients für die Azure AD/Kerberos-basierte Authentifizierung hybrid in Azure AD eingebunden sein (hybrid joined), was letztlich eine Funktion von Azure AD Connect ist, denn Azure AD Kerberos unterstützt keine Clients, die „nur“ mit Azure AD DS oder nur mit dem ADDS verknüpft sind und das Feature unterstützt auch keine Benutzerkonten, die „nur“ im Azure AD erstellt wurden (Organisationskonten). Vielmehr müssen die Benutzerkonten genau wie die Geräte (Computer-Konten) hybride Benutzeridentitäten sein. Du kommst also um das Einrichten von Azure AD Connect (oder Azure AD Cloud Sync) nicht herum, um Benutzerkonten oder Gruppen initial im ADDS erstellen und dann synchronisieren zu können, denn beim späteren Zuweisen von Azure RBAC-Berechtigungen für deine Azure-Dateifreigabe zu einem Benutzer oder einer Gruppe müssen diese Entitäten vorher im Active Directory erstellt und mit Azure AD synchronisiert worden sein.
Ferner darf MFA für die Azure-App, welches das Speicherkonto repräsentiert (der zugehörige Serviceprinzipal wird automatisch erstellt) nicht aktiviert sein. Die Kerberos-Ticketverschlüsselung ist bei Azure AD Kerberos übrigens initial immer AES-256, du kannst aber die SMB-Kanalverschlüsselung deinen Anforderungen anpassen.
Bereitstellung der Azure AD Kerberos Authentifizierung
Klicke also in der o. e. Abbildung (Azure Storage Dateifreigabe / „Übersichtsseite“ / Abschnitt „Active Directory auf den Link) auf „Nicht konfiguriert“ und wähle die Option „Azure AD Kerberos“. Aktivere die Funktion durch Setzen des Häkchens bei „Azure AD Kerberos”.
Die Funktion „Domänendienste“ im unteren Teil des Dialogs ist optional und wird benötigt, wenn du Berechtigungen auf Verzeichnis- und Dateiebene im Windows-Datei-Explorer konfigurieren möchtest. Dann musst du den Domänennamen und den global eindeutigen Bezeichner (GUID) der Domäne für deine lokale ADDS-Instanz hier eintragen.
Du kannst aber Berechtigungen auf Verzeichnis- und Dateiebene auch über icacls konfigurieren und den Schritt hier überspringen. Bei icacls braucht der Client jedoch eine Sichtverbindung zum lokalen Active Directory. Klicke dann auf „Speichern“.
Im Schritt 2 „Berechtigungen auf Freigabeebene festlegen“ musst du Berechtigungen auf Freigabeebene konfigurieren, um Zugriff auf deine Dateifreigaben zu ermöglichen. Dazu gibt es zwei Möglichkeiten: du kannst entweder allen „authentifizierten Identitäten“ eine Standardberechtigung auf Freigabeebene zuweisen (Default) oder du wählst ganz bestimmten Azure AD Benutzern/Benutzergruppen an dieser Stelle gezielt aus.
Alternativ könntest du auch im Azure Portal für die Dateifreigabe im Abschnitt „IAM“ manuell z. B. die Rolle „Mitwirkender für Speicherdateidaten-SMB-Freigabe“ zuweisen:
Hast du die Azure AD Kerberos-Authentifizierung aktiviert, entsteht wie oben erwähnt automatisch eine neue Azure AD-Unternehmensanwendung stellvertretend für das Speicherkonto in deinem Azure AD-Mandanten mit Hilfe eines Dienstprinzipals, welches nicht für die Autorisierung für die Dateifreigabe genutzt wird. Allerdings musst du dem Dienstprinzipal explizit die Administratoreinwilligung geben.
Suche dazu im Azure Portal nach „App-Registrierungen“. Dort findest du den zugehörigen Dienstprinzipal (hier „[Storage Account] nasdemosa.file.core.windows.net“.
Wechsele „in“ deine App-Registrierung und dort zum Menü „API-Berechtigungen“.
Klicke auf „Administratorzustimmung für <Mandantenname>“. Damit erteilst du deine Zustimmung für die drei angeforderten API-Berechtigungen „openid“, „profile“ und „User.Read“ für alle Konten in diesem Verzeichnis. Der das Speicherkonto mit der Azure-Dateifreigabe repräsentierende Dienstprinzipal im Azure AD erlaubt dann für alle Benutzerkonten aus dem Azure AD eine Anmeldung bei Azure Stoage und kann das grundlegende Profil eines jeden Nutzers anzeigen.
Das Ergebnis sollte so aussehen:
Beachte Folgendes: Derzeit erlaubt Azure AD Kerberos nicht das Verwenden von MFA für den Zugriff auf eine mit Azure AD Kerberos konfigurierte Azure-Dateifreigabe. Du musst deine Azure AD-App, bzw. den Dienstprinzipal, der das zugrunde liegende Speicherkonto repräsentiert aus deiner ggf. vorhandenen MFA-Richtlinie für bedingten Zugriff ausschließen. Dazu machst du im Azure AD unter „Sicherheit / Bedingter Zugriff“. Du kannst bei den für die Richtlinie konfigurierten Benutzer im Tab „Ausschließen“ den zugehörigen Dienstprinzipal ausschließen.
Berechtigungen auf Freigabeebene
Hast du wie gewünscht deine Berechtigungen auf Freigabeebene eingerichtet, kannst du optional deinen Benutzern oder Gruppen Berechtigungen auf Verzeichnis-/Dateiebene erteilen, wozu dein Client-Gerät wie oben erwähnt eine Sichtverbindung zu einem lokalen AD braucht. Du hast dann zwei Möglichkeiten, Berechtigungen auf Verzeichnis- und Dateiebene mit der Azure AD Kerberos-Authentifizierung zu konfigurieren: Mit der Option „Windows-Explorer“ muss der Client über die Domäne in das lokale ADDS eingebunden sein. Optional kannst du das Windows-Hilfsprogramm „icacls“ dazu nutzen. Dann muss der Client nicht in Domäne eingebunden sein, aber er braucht wie oben beschrieben trotzdem eine Sichtverbindung zum lokalen AD.
Kerberos-Support auf dem Client
Jetzt muss du nur noch die Azure AD-Kerberos-Funktionalität auf den Clients aktivieren, von dem aus du auf deine Azure-Files-Freigaben zugreifen möchtest. Das musst du natürlich auf jedem einzelnen Client tun. Du machst das wahlweise mit der lokalen Gruppenrichtlinie „Administrative Templates\System\Kerberos\Allow retrieving the Azure AD Kerberos Ticket Granting Ticket during logon.“ oder (falls du deine lokalen Geräte bereits über Intune verwaltest) mit der Intune-Richtline CSP (Kryptografiedienstanbieter). Diese heißt https://learn.microsoft.com/de-de/windows/client-management/mdm/policy-csp-kerberos#kerberos-cloudkerberosticketretrievalenabled Kerberos/CloudKerberosTicketRetrievalEnabled.
Außerdem muss du einen neuen Registrierungsschlüssel in der Registry des Clients erstellen:
reg add HKLM\SYSTEM\CurrentControlSet\Control\Lsa\Kerberos\Parameters /v CloudKerberosTicketRetrievalEnabled /t REG_DWORD /d 1
Du kannst nun deine Dateifreigabe mit Hilfe des im Azure-Portal unter dem Knopf „Verbinden“ für die betreffende Dateifreigabe automatisch erzeugten Powershell-Skriptes mit der Authentifizierungsmethode „Active Directory“ dauerhaft in deine virtuelle Client-Maschine einbinden:
Statt via „New-PSDrive“ wie es das automatisch generierte Skript tut, kannst du die Freigabe am Client auch traditionell mit „net use“ und dem Speicherkontoschlüssel einbinden.
net use Z: "\nasdemosa.file.core.windows.net\incas-nas" /u:AZURE\nasdemosa <kontoschlüssel>
Prüfe ggf. vorher, ob der Port 445 für SMB am Client erreichbar ist:
Test-NetConnection -ComputerName nasdemosa.file.core.windows.net -Port 445
Die eigentlichen Zugriffberechtigungen hängen jetzt aber am jeweiligen ADDS/AD-User (Sync).
Prüfe ggf. die aktuellen Dateisystemberechtigungen mit …
icacls Z:
Kontakt
„*“ zeigt erforderliche Felder an