Určité rozšiřující informace, ovšem ne k vlastnímu Hybrid Azure AD Join, jsem napsal do nového článku Windows, macOS a Android registrace do Azure AD a autentizace zařízení.
Úvod Active Directory
Dvě verze Active Directory (AD):
- On-Premises AD - interní/lokální adresářové služby, Active Directory Domain Services (AD DS), využívá Forest a Domain, zařízení jsou Domain Joined, v článku většinou označujeme jako AD DS
- Azure AD - cloudové adresářové služby, využívá Tenant, zařízení jsou Azure AD Joined, v článku označujeme jako Azure AD
Identita zařízení v Azure AD
Pro zabezpečení a administraci aktiv musíme spravovat identitu zařízení (Device Identities). Díky Device Identity Management můžeme použít device-based Conditional Access a řídit přístup pouze ze spravovaných zařízení.
Abychom dostali zařízení do Azure AD, tak máme tři možnosti:
- Azure AD Joined - zařízení je zařazeno pouze do Azure AD (cloud-only), přihlašujeme se firemním Azure AD účtem
- Hybrid Azure AD Joined - zařízení je zařazeno do AD DS i Azure AD, můžeme využít výhody obou prostředí, přihlašujeme se firemním AD DS účtem replikovaným do Azure AD
- Azure AD Registered - může jít o soukromé zařízení či firemní (volitelně zařazené do AD DS), na něm pracujeme lokálním či doménovým (AD DS) účtem, ale máme připojený firemní Azure AD účet, podporováno pro Windows 10, iOS, Android a MacOS, označuje se také jako Workplace Joined
Pozn.: Hybrid Azure AD Joined zařízení nemají v Azure AD přiřazeného vlastníka (Owner) a nezobrazují se u uživatele mezi jeho zařízeními.
Spravovaná zařízení
Spravovaná zařízení (Managed Devices) jsou ta, která mají objekt v Azure AD Tenantu. To znamená, že jsou registrovaná (Registered) nebo připojená (Joined) do Azure AD. Hybridní stav je validní, pokud je přihlášen validní Azure AD uživatel. To dává uživatelům možnost využít Azure AD Single Sign-On (SSO) ke cloudovým zdrojům. Zařízení Windows 10 získávají Primary Refresh Tokens (PRT), který dovoluje využít SSO mezi aplikacemi. Starší OS využívají Seamless SSO.
Některé informace zmiňují, že registrované zařízení musí být navíc označeno jako Compliant (od MDM, třeba Intune), aby bylo bráno jako spravované.
Azure AD Registration
Stručně popíšeme, jak zařízení (primárně Windows 10) zaregistrovat nebo odregistrovat z Azure AD.
Pozn.: Zařízení nemůže být zároveň připojené i registrované do Azure AD (v některých případech to lze, ale může to dělat problémy).
Registrace při přihlašování
Když se někde přihlašujeme Azure AD účtem, tak se může zobrazit dialog, zda povolíme organizaci spravovat zařízení (Allow my organization to manage my device). Pokud odsouhlasíme, tak se k našemu účtu, kterým jsme přihlášeni do počítače, připojí Azure AD účet, kterým se právě přihlašujeme. Také se naše zařízení zaregistruje v Azure AD.
Ruční registrace ve Windows 10
Ručně můžeme provést napojení účtu
- v Settings - Accounts - Access work or school
- zvolíme Connect
- přihlásíme se Azure AD účtem
V obou případech dojde k registraci počítače do Azure AD. Uvidíme je v seznamu zařízení s Join Type Azure AD Registered.
- Azure Active Directory admin center - Devices
Odregistrace a odebrání účtu
Ve Windows 10 můžeme odpojit Azure AD účet (Work or school account) a tím zrušit registraci zařízení v Azure AD (odstraní se počítač z Azure AD).
- v Settings - Accounts - Access work or school
- zvolíme účet
- klikneme na Disconnect a potvrdíme
Pokud pouze smažeme objekt počítače v Azure AD, tak v nastavení počítače (OS) zůstane. Sice nemá oprávnění do Azure AD, ale myslí si, že je registrovaný. Korektní je tedy odstranění na klientovi. Nenašel jsem způsob, jak toto provést v operačním systému, který nemá volbu Access work or school (jako je třeba Windows Server 2016 / 2019).
Hybrid Azure AD Join
V popisech se uvádí, že jde o Managed Domains. Ale patrně to neznamená, že musíme vytvořit Azure AD Domain Services, jak popisuje dokumentace What is Azure Active Directory Domain Services? Ale spíše jde o způsob autentizace (Managed vs. Federated). Spravované prostředí je takové, kdy autentizaci spravuje Azure AD pomocí Password Hash Synchronization či Pass-through Authentication.
PS C:\> Get-MsolDomain Name Status Authentication ---- ------ -------------- firma.onmicrosoft.com Verified Managed firma.com Verified Managed
Jak probíhá Hybrid Azure AD Join
Obecné kroky (zde řešíme pouze Windows 10 zařízení) nastavení a průběhu připojení jsou
- konfigurace Hybrid Azure AD Join pomocí Azure AD Connect - jde o vytvoření SCP záznamu v interní doméně (na který se klienti opakovaně dotazují pro získání informací o Tenantu)
- počítače (Windows 10 zařazené do domény) si vygenerují SelfSigned certifikát a veřejnou část uloží do atributu
userCertificate
svého účtu v AD DS - Azure AD Connect provede synchronizaci účtů počítačů (musí mít certifikát a povolenu synchronizaci)
- počítač provede registraci zařízení (Enroll Device) do Tenantu - připojí se do Azure AD jako Hybrid Azure AD Join, součástí je odeslání žádosti o certifikát
- Azure AD vystaví a odešle certifikát zařízení, který si počítač spojí s žádostí a uloží do úložiště certifikátů (Certificate Store)
Než se počítač dostane do finálního stavu Hybrid Azure AD Join, tak to určitou dobu trvá a možná vyžaduje několik restartů (případně to restarty urychlí). Po vytvoření SCP si ho musí klient načíst, vygenerovat certifikát a uložit do AD DS. Pak musí proběhnout synchronizace účtu do Azure AD. Následně se musí počítač registrovat do Azure AD, což se možná děje při startu nebo přihlášení uživatele. Do té doby je synchronizovaný účet v Azure AD ve stavu Pending. Pokud byl počítač dříve Azure AD Registered, tak potom musí proběhnout zrušení této registrace. Pak je teprve vše korektní.
Pozn.: Za registraci do Azure AD je patrně zodpovědná plánovaná úloha Task Scheduler Library > Microsoft > Windows > Workplace Join - Automatic-Device-Join. Ta se spouští při přihlášení uživatele a při určité události.
Azure AD Connect synchronizace účtů počítačů
Microsoft ve všech návodech uvádí, že jako první krok máme zkontrolovat, že se nám do Azure AD synchronizují objekty počítačů (které mají být hybrid Azure AD Joined). Co se v návodech nepíše je, že dokud nenastavíme podmínky pro Hybrid Azure AD Join, tak se nám počítače synchronizovat nebudou. Vypadá to, že jde o vlastnost Azure AD Connect od verze 1.4.0.0 (tedy již hodně dávno, to mohli zvládnout upravit návody), viz. Understanding Azure AD Connect 1.4.xx.x and device disappearance.
Podle článku se pomocí Azure AD Connect do cloudu synchronizují pouze Windows 10 zařízení, nakonfigurovaná pro Hybrid Azure AD Join, která mají specifickou hodnotu atributu userCertificate
(u objektu počítače v AD DS). Předmět certifikátu je CN={ObjectGUID}
.
Tento certifikát vystavuje Windows vlastnost Hybrid Azure AD Join. Ale až ve chvíli, kdy je dostupné SCP s údaji o Azure AD Tenantu pro registraci zařízení. To znamená, dokud pomocí Azure AD Connect nevytvoříme SCP (také můžeme vytvořit ručně) nebo na některých klientech nevytvoříme patřičný záznam v registrech, tak počítač nemá certifikát a nesynchronizuje se do Azure AD.
Certifikáty pro Azure AD
Snažil jsem se zjistit více o těchto certifikátech. Nenašel jsem žádnou oficiální dokumentaci (něco popisuje článek Deep-dive to Azure AD device join). Níže jsou moje pozorování, která nemusí být přesná.
Ve chvíli, kdy registrujeme počítač do Azure AD (Azure AD Registered), tak se v certifikačním úložišti daného uživatele (certmgr.msc
) vytvoří certifikát. Předmět certifikátu je GUID, ale to je jiné než hodnota atributu objectGUID
účtu počítače v AD DS. Odpovídá položce Device ID
tohoto registrovaného počítače v Azure AD. Certifikát uvádí, že byl vystaven od MS-Organization-Access. Účel klientská autentizace, platnost 10 let.
Pokud počítač najde údaje o Azure AD Tenantu (SCP), tak si vygeneruje SelfSigned certifikát (takže vydavatel i předmět je stejný a odpovídá objectGUID počítače v AD DS) a jeho veřejnou část uloží k účtu počítače do atributu userCertificate
. Tento certifikát patrně není nikde v certifikačním úložišti počítače. Azure AD Connect provede synchronizaci počítačového účtu do Azure AD (takže se tam dostane i veřejný klíč certifikátu). Jeho Device ID
v Azure AD odpovídá objectGUID
počítače v AD DS. Certifikát generuje plánovaná úloha Automatic-Device-Join a tedy příkaz dsregcmd
, ale možná se generuje i jindy. Nepodařilo se mi zjistit, kdy a za jakých podmínek se vystavuje, části lidí se vystavil do hodiny po zveřejnění SCP.
Když se počítač zaregistruje do Azure AD (jako Hybrid Azure AD Join), tak na základě žádosti (CSR) dostane nový certifikát. Ten vznikne v certifikačním úložišti daného počítače (certlm.msc
). Předmět certifikátu je objectGUID počítače v AD DS, je vystaven od MS-Organization-Access a vše stejné, jako při registraci.
Zároveň vzniká druhý certifikát se stejným předmětem a vydavatelem MS-Organization-P2P-Access [2021]. Účel je serverová autentizace. O tomto certifikátu, který má sloužit pro důvěru mezi zařízeními v Tenantu pro RDP, je krátká zmínka What are the MS-Organization-P2P-Access certificates present on our Windows 10 devices?
Nakonec, když proběhne odstranění původní registrace počítače v Azure AD, tak se odstraní i certifikát z uživatelského úložiště.
Pomocí PowerShellu se můžeme podívat (a stáhnout) na certifikát, který se ukládá do AD DS účtu počítače. Ověříme tak, že jde o jiný certifikát, než ten uložený v počítači po registraci do Azure AD. Základní údaje (předmět a vydavatel) zobrazíme
(Get-ADComputer JMENO-POCITACE -Properties Certificates).Certificates
Abychom si prohlédli celý certifikát, tak jej můžeme uložit do souboru
Export-Certificate -Cert (New-Object System.Security.Cryptography.X509Certificates.X509Certificate2 (Get-ADComputer JMENO-POCITACE -Properties Certificates).Certificates[0]) -FilePath c:\JMENO-POCITACE.cer
Záznam o synchronizaci, když se nesynchronizuje počítač
Když povolíme synchronizaci pro určitý počítačový účet, tak můžeme v Synchronization Service najít záznam (například) Delta Synchronization pro konektor naší interní domény. Kde je Connectors with Flow Updates nenulová hodnota, po otevření vidíme řádek pro náš počítač. Rozklikneme a přepneme se na záložku Lineage, kde klikneme na Metaverse Object Properties. Pokud vidíme atribut cloudFiltered = true
, tak se záznam nesynchronizuje. Pokud se zde nenachází atribut userCertificate
, tak to může být důvod.
Pokud na záložce Lineage vidíme pravidlo In from AD - Computer Filtering (mimo In from AD - Computer Join), tak to může být proto, že je záznam filtrovaný (třeba máme povoleno synchronizovat jen členy skupiny). Pokud synchronizujeme pouze určité OU a počítač je v jiné, tak se v žádném záznamu neobjeví. Toto jsou pouze příklady.
Jména počítačů s dolarem v Azure AD
U synchronizace počítačů do Azure AD můžeme narazit na zvláštní věc. Po synchronizaci se nám některé počítače mohou objevit s názvem, který má na konci znak $
(dolar). Při synchronizaci se jako název použije atribut displayName
, pokud je prázdný, tak cn
. Standardně, po zařazení počítače do domény, je displayName
prázdný a cn
obsahuje jméno. Pokud počítač přejmenujeme, tak se vyplní displayName
názvem s dolarem na konci (sAMAccountName). Takže tak se nám dostane do Azure AD, ale tam se při nějakých akcích (provedení Hybrid Azure AD Join) zase změní na standardní jméno.
Detailněji je rozebíráno v The Mysterious Case of the $ (a.k.a. Dollar Sign) Character in Hybrid Azure AD Joined Devices.
Nastavení Hybrid Azure AD Join
Azure AD Connect obsahuje průvodce na konfiguraci Hybrid Azure AD Join. Jde v podstatě o to, že vytváří Service Connection Point (SCP) s údaji o firemním Azure AD Tenantu pro registraci zařízení. Toto SCP klienti pravidelně hledají, aby se mohli registrovat do Azure AD. SCP můžeme také vytvořit ručně. Pokud chceme registrovat pouze pár klientů, tak na nich můžeme nastavit hodnoty pomocí registrů.
Aby se zařízení mohlo korektně registrovat, tak musí mít dostupné některé Microsoft adresy. Pokud se používá SSL inspekce, která přerušuje komunikaci, tak pro adresu https://device.login.microsoftonline.com musí být nastavena výjimka. Microsoft má pro otestování komunikace PowerShell skript Test Device Registration Connectivity.
Průběh konfigurace (nejjednodušší možnost pomocí Azure AD Connect)
- spustíme Azure AD Connect
- klikneme na Configure a Configure device options
- v průvodci se přihlásíme a pod Device options vybereme Configure Hybrid Azure AD Join
- volíme, zda chceme řešit pouze Windows 10 a novější nebo i starší (Windows down-level) podporované systémy (na ně musíme instalovat Microsoft Workplace Join)
- konfigurace SCP, pro každý les (Forest) se přihlásíme Enterprise Admin účtem
- spustíme konfiguraci
Můžeme zkontrolovat, že se nám vytvořilo SCP a obsahuje korektní hodnoty. Například pomocí ADSI Edit se připojíme ke Configuration Naming Context (CN=Configuration,DC=firma,DC=local
). Otevřeme CN=Services, CN=Device Registration Configuration
(původně patrně neexistovalo) a zde se nachází SCP CN=62a0ff2e-97b9-4513-943f-0d221bd30080
. Zvolíme jeho vlastnosti a otevřeme atribut keywords
. Zde jsou dvě hodnoty azureADid
a azureADName
.
Připojení pouze vybraných zařízení
Nemusíme chtít, aby Hybrid Azure AD Join proběhl na všech počítačích v doméně. Například při úvodním testování nebo i v běžném provozu. Můžeme řídit, které účty počítačů se synchronizují do Azure AD. Jedna možnost je pomocí filtrování objektů pro synchronizaci v konfiguraci Azure AD Connect nebo úpravou synchronizačních pravidel Azure AD Connect sync: Configure filtering. Druhá možnost je nepublikovat SCP (dostupné všem), ale zadat tyto hodnoty vybraným klientům pomocí záznamu v registrech.
Windows 10 se automaticky snaží připojit do Azure AD. Pokud definujeme Service Connection Point (SCP), tak údaje z něj použijí pro připojení. V Azure AD se musí nacházet synchronizovaný objekt počítače. Pokud chceme připojit pouze vybrané počítače, tak nemusíme vytvářet SCP, ale pomocí registrů (třeba i pomocí Group Policy) vytvoříme klientské nastavení SCP.
V registrech v cestě HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\CDJ\AAD
, pokud některé klíče neexistují (třeba CDJ a AAD), tak je vytvoříme, přidáme dvě nové hodnoty typu String
. Jde o TenantId
a TenantName
, údaje zjistíme v Azure AD. Jméno je naše ověřená doména nebo registrovaná doména na onmicrosoft.com.
Azure AD Registered a potom Hybrid Azure AD Joined
- Handling devices with Azure AD registered state
- I disabled or deleted my device in the Azure portal or by using Windows PowerShell. But the local state on the device says it's still registered. What should I do?
Pokud bylo Windows 10 zařízení registrováno do Azure AD tenantu a následně proveden Hybrid Azure AD join, tak může vzniknout duální stav. Verze Windows 10 1803 a novější tuto situaci řeší a po provedení Hybrid Azure AD join automaticky zruší původní registraci. Pro starší verze má být nejprve manuálně odstraněn stav Azure AD registered a pak teprve povolen Hybrid Azure AD join.
Audit logy a Troubleshooting
V Azure AD nalezneme logy o registraci zařízení v
- Azure Active Directory admin center - Devices - Audit logs
Ve Windows 10 jsou logy o registraci v
- Applications and Services Log > Microsoft > Windows > User Device Registration
- Applications and Services Log > Microsoft > Windows > AAD
Na klientovi je důležitý první log, kde nalezneme mnoho informací a chyb o průběhu registrace. Například
- Event ID 304 Automatic registration failed. Failed to lookup the registration service information from Active Directory.
- Event ID 304 Automatic registration failed at join phase. … Server error: The device object by the given id (c4d88c3c-27eb-4b8d-acf8-45541d72264e) is not found.
- Event ID 105 The complete join response operation was successful.
- Event ID 106 The registration status has been successfully cleared from the device. Join type: 9 (WORKPLACE_UNJOIN)
Pro zjištění informací na klientovi je velice užitečný řádkový příkaz dsregcmd
. Příklad začátku výstupu
C:\>dsregcmd /status +----------------------------------------------------------------------+ | Device State | +----------------------------------------------------------------------+ AzureAdJoined : YES EnterpriseJoined : NO DomainJoined : YES DomainName : FIRMA
Nachází se zde mnoho důležitých informací včetně zpráv o chybách. Úplně základní jsou informace, zda je zařízení připojeno do Azure AD (AzureAdJoined
), do AD DS (DomainJoined
) nebo registrováno do Azure AD (WorkplaceJoined
). Ve funkčním stavu nesmí být zároveň Azure AD Registered a Azure AD Joined.
Hybrid Azure AD Join oprava
Problém s registrací počítače v Azure AD nastane například, když vyřadíme počítač ze synchronizace do Azure AD. Tím se účet v Azure AD smaže a z tohoto počítače je blokováno přihlášení. Když jej znovu zařadíme do synchronizace, tak se v Azure AD objeví, ale je ve stavu Pending. Výpis na klientovi ukazuje, že je AzureAdJoined, ale stav autentizace je chybný. Přitom přihlášení již funguje.
Část výpisu:
C:\>dsregcmd /status +----------------------------------------------------------------------+ | Device State | +----------------------------------------------------------------------+ AzureAdJoined : YES EnterpriseJoined : NO DomainJoined : YES DomainName : FIRMA Device Name : POCITAC.firma.local +----------------------------------------------------------------------+ | Device Details | +----------------------------------------------------------------------+ DeviceId : XXX Thumbprint : XXX DeviceCertificateValidity : [ 2021-07-26 07:24:46.000 UTC -- 2031-07-26 07:54:46.000 UTC ] KeyContainerId : XXX KeyProvider : Microsoft Software Key Storage Provider TpmProtected : NO DeviceAuthStatus : FAILED. Device is either disabled or deleted ... +----------------------------------------------------------------------+ | Ngc Prerequisite Check | +----------------------------------------------------------------------+ IsDeviceJoined : YES IsUserAzureAD : YES PolicyEnabled : NO PostLogonEnabled : YES DeviceEligible : YES SessionIsNotRemote : YES CertEnrollment : none PreReqResult : WillNotProvision
Řešení napovídá MS FAQ I disabled or deleted my device in the Azure portal or by using Windows PowerShell. But the local state on the device says it's still registered. What should I do?.
Musíme provést re-registraci zařízení. Na stanici spustíme příkaz jako administrátor.
C:\>dsregcmd.exe /debug /leave DsrCLI: logging initialized. DsrCmdJoinHelper::Leave: ClientRequestId: xxxUnjoin request ID: xxx Unjoin response time: Thu, 09 Sep 2021 08:08:04 GMT Unjoin HTTP status: 200 Only the NGC for the current user is being removed. To remove all rerun as SYSTEM. DSREGCMD_END_STATUS AzureAdJoined : NO EnterpriseJoined : NO
Tím se na stanici odstraní stav AzureAdJoined a účet se také smaže v Azure AD.
C:\>dsregcmd /status +----------------------------------------------------------------------+ | Device State | +----------------------------------------------------------------------+ AzureAdJoined : NO EnterpriseJoined : NO DomainJoined : YES DomainName : FIRMA Device Name : POCITAC.firma.local
Následně musí proběhnout synchronizace pomocí Azure AD Connect, aby se účet zařízení znovu vytvořil v Azure AD. Počítač restartujeme a proběhne plánovaná úloha, která automaticky registruje zařízení v Azure AD. V Azure AD již vidíme zařízení registrované a ve výpisu je autentizace v pořádku.
DeviceAuthStatus : SUCCESS
Dobrý den, mám začátečnické dotazy - jestli dobře rozumím, tak Azure AD Joined se dá použít k připojení Windows stanic do domény, aniž bych měl vlastní server s rolí řadiče AD? Jak moc se to liší oproti sítě s řadičem AD?
Funguje pak přihlašování do stanice doménovým jménem libovolného uživatele, skupinové politiky atd.?
Uživatelskými účty pak jsou vlastně Microsoft účty? Jak se v tom případě řeší mapování uživatelských účtů na sdílené složky v síti, které to nepodporují (např. NAS, kde mám pouze běžné jméno a heslo)?
Je výhodné to v malé síti dělat (okolo 15- ti počítačů)?
Jakou verzi Azure AD potřebuji - stačí verze zdarma?
Moc děkuji za info...
odpověď na [1]Sváťa: Já jsem čistý Azure-AD join nepotřeboval, takže ani nestudoval. Ale určitě to není stejné jako Active Directory doména. Nejsou tam Group Policy, pro správu člověk musí používat Intune, apod.
Dobrý den, setkal jste se s možností, kdy máte synchronizovaný počítač do AzureAD typu Hybrid Azure AD Join a daný PC chcete přejmenovat? Jak nejlépe postupovat je nutné zařízení odebrat z Azure AD a poté přejmenovat případně v Azure vyberu skupinu adminu, kteří mohou v PC přejmenovat a dojde k "přeregistraci" na nový název? Mnohokrát děkuji za odpověď.
odpověď na [3]Ondřej B.: Přejmenování musí určitě fungovat naprosto bez problémů. Přejmenuje se (lokálně na PC, tedy v AD DS) a změna se projeví v Azure AD.