Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Automatizované nástroje, které používají Azure služby, by měly mít vždy omezená oprávnění. Místo toho, aby se aplikace přihlašovaly jako plně privilegovaní uživatelé, Azure nabízí služební principály.
Služební účet Azure je identita určená pro použití s aplikacemi, hostovanými službami a automatizovanými nástroji pro přístup k prostředkům Azure. Tento přístup je omezen rolemi přiřazenými k service principal, což vám dává kontrolu nad tím, k jakým prostředkům lze přistupovat a na jaké úrovni. Z bezpečnostních důvodů se vždy doporučuje používat služební identity s automatizovanými nástroji, než umožnit jejich přihlášení jako uživatel.
V tomto článku se dozvíte, jak vytvořit, získat informace o instančním objektu a resetovat ho pomocí Azure PowerShell.
Upozornění
Při vytváření objektu služby pomocí příkazu New-AzADServicePrincipal, výstup obsahuje pověření, která musíte chránit. Jako alternativu zvažte použití spravovaných identit , abyste se vyhnuli nutnosti používat přihlašovací údaje.
Předpoklady
- Pokud se rozhodnete používat Azure PowerShell místně:
- Nainstalujte modul Az PowerShell.
- Připojte se ke svému účtu Azure pomocí rutiny Connect-AzAccount.
- Pokud se rozhodnete použít Azure Cloud Shell:
- Další informace najdete v tématu Přehled Azure Cloud Shell.
Vytvořte služebního principála
Vytvořte služební objekt pomocí příkazového modulu New-AzADServicePrincipal. Při vytváření služebního principálu zvolíte typ ověřování, které používá.
Důležité
Počínaje modulem Az PowerShell verze 7.x už New-AzADServicePrincipal nepřiřazuje roli Přispěvatel instančnímu objektu ve výchozím nastavení. Pokud chcete přiřadit konkrétní roli instančnímu objektu, přečtěte si postup přidání přiřazení role.
Poznámka:
Pokud váš účet nemá oprávnění ke vytvoření služebního principálu, New-AzADServicePrincipal vrátí chybovou zprávu obsahující "Nedostatečná oprávnění k dokončení operace." Požádejte správce Microsoft Entra o vytvoření klíčového objektu služby.
V adresáři Microsoft Entra ID, ve kterém je nastavení uživatele Uživatelé můžou registrovat aplikace byl nastaven na No, musíte být členem jedné z následujících předdefinovaných rolí Microsoft Entra ID (které mají akci: microsoft.directory/applications/createAsOwner nebo microsoft.directory/applications/create):
- Vývojář aplikace
- Správce aplikace
- Správce cloudové aplikace
- Globální správce
- Správce hybridních identit
Další informace o uživatelských nastaveních v Microsoft Entra ID najdete v tématu Restrict, kdo může vytvářet aplikace.
K dispozici jsou dva typy ověřování pro služební identity: ověřování založené na hesle a ověřování založené na certifikátu.
Ověřování pomocí hesla
Důležité
Výchozí rolí instančního objektu ověřování založeného na heslech je Přispěvatel. Tato role má úplná oprávnění ke čtení a zápisu do účtu Azure. Informace o správě přiřazení rolí najdete v tématu Správa rolí služebního principála.
Bez jakýchkoli dalších parametrů ověřování se použije ověřování na základě hesla a vytvoří se pro vás náhodné heslo. Pokud chcete ověřování založené na heslech, doporučuje se tato metoda.
$sp = New-AzADServicePrincipal -DisplayName ServicePrincipalName
Vrácený objekt obsahuje PasswordCredentials.SecretText vlastnost obsahující vygenerované heslo. Ujistěte se, že tuto hodnotu ukládáte na bezpečné místo pro ověření pomocí servisního účtu. Jeho hodnota se nezobrazí ve výstupu konzoly. Pokud heslo ztratíte, obnovte přihlašovací údaje entity služby.
Následující kód umožňuje exportovat tajný kód:
$sp.PasswordCredentials.SecretText
Vrácený objekt New-AzADServicePrincipal obsahuje členy Id a DisplayName, z nichž lze některý použít pro přihlášení pomocí hlavního objektu služby.
Důležité
Přihlášení pomocí aplikační identity vyžaduje ID tenanta, pod kterým byla aplikační identita vytvořena. Pokud chcete získat aktivního tenanta při vytvoření instančního objektu, spusťte následující příkaz ihned po vytvoření instančního objektu:
(Get-AzContext).Tenant.Id
Ověřování pomocí certifikátů
Důležité
Při vytváření hlavní služby pro ověřování na základě certifikátů není přiřazena žádná výchozí role. Informace o správě přiřazení rolí najdete v tématu Správa rolí servisního principálu.
Hlavní objekty služby používající ověřování založené na certifikátech se vytvoří s parametrem CertValue. Tento parametr přebírá řetězec ASCII s kódováním base64 veřejného certifikátu. Toto je reprezentováno souborem PEM nebo textovým kódem CRT nebo CER. Binární kódování veřejného certifikátu se nepodporuje. Tyto pokyny předpokládají, že už máte k dispozici certifikát.
$cert = <public certificate as base64-encoded string>
$sp = New-AzADServicePrincipal -DisplayName ServicePrincipalName -CertValue $cert
Vrácený objekt z New-AzADServicePrincipal obsahuje vlastnosti Id a DisplayName, z nichž kteroukoliv lze použít pro přihlášení pomocí služebního principálu. Klienti, kteří se přihlašují pomocí služby principal, potřebují také přístup k soukromému klíči certifikátu.
Důležité
Přihlášení pomocí aplikačního objektu vyžaduje ID tenanta, pod kterým byl aplikační objekt vytvořen. Pokud chcete získat aktivního tenanta při vytvoření instančního objektu, spusťte následující příkaz ihned po vytvoření instančního objektu:
(Get-AzContext).Tenant.Id
Získání existujícího provozního účtu
Seznam zástupců služeb pro aktivního tenanta je možné načíst pomocí cmdletu Get-AzADServicePrincipal. Ve výchozím nastavení tento příkaz vrátí všechny instanční objekty v tenantovi. U velkých organizací může vrácení výsledků trvat delší dobu. Místo toho se doporučuje použít jeden z volitelných argumentů filtrování na straně serveru:
-
DisplayNameBeginsWithpožaduje instanční objekty, které mají předponu odpovídající zadané hodnotě. Zobrazovaný název servisního principála je hodnota nastavenáDisplayNameběhem vytváření. -
DisplayNamepožaduje přesnou shodu názvu hlavního účtu služby.
Správa rolí aplikačního objektu
Azure PowerShell má následující rutiny pro správu přiřazení rolí:
Další informace o Role-Based Access Control (RBAC) a rolích najdete v tématu RBAC: Předdefinované role.
Následující příklad přidá roli Čtenář a odebere roli Přispěvatel :
New-AzRoleAssignment -ApplicationId <service principal application ID> -RoleDefinitionName 'Reader'
Remove-AzRoleAssignment -ObjectId <service principal object ID> -RoleDefinitionName 'Contributor'
Důležité
Rutiny přiřazení rolí nepřijímají ID objektu hlavní služby. Převezmou přidružené ID aplikace, které se vygeneruje při vytváření. K získání ID aplikace pro služební účet použijte Get-AzADServicePrincipal.
Poznámka:
Pokud váš účet nemá oprávnění k přiřazení role, zobrazí se chybová zpráva, že váš účet "nemá autorizaci k provedení akce 'Microsoft.Authorization/roleAssignments/write'". Pokud chcete spravovat role, obraťte se na správce Microsoft Entra.
Přidání role neomezuje dříve přiřazená oprávnění. Při omezení oprávnění služebního principu by se měla odebrat role Přispěvatel.
Změny je možné ověřit výpisem přiřazených rolí:
Get-AzRoleAssignment -ServicePrincipalName ServicePrincipalName
Přihlášení pomocí servisního principála
Otestujte přihlašovací údaje a oprávnění nové hlavní služby tím, že se přihlásíte. Pokud se chcete přihlásit pomocí instančního objektu, potřebujete k němu přidruženou applicationId hodnotu a tenanta, pod kterým je vytvořený.
Přihlášení pomocí služebního účtu pomocí hesla:
# Use the application ID as the username, and the secret as password
$credentials = Get-Credential
Connect-AzAccount -ServicePrincipal -Credential $credentials -Tenant <tenant ID>
Ověřování založené na certifikátech vyžaduje, aby Azure PowerShell mohl načíst informace z místního úložiště certifikátů na základě kryptografického otisku certifikátu.
Connect-AzAccount -ServicePrincipal -Tenant <TenantId> -CertificateThumbprint <Thumbprint> -ApplicationId <ApplicationId>
Pokyny k importu certifikátu do úložiště přihlašovacích údajů přístupného pomocí PowerShellu najdete v tématu Ověřování na základě certifikátů.
Resetování přihlašovacích údajů
Pokud zapomenete přihlašovací údaje pro aplikační objekt, přidejte pomocí New-AzADSpCredential nové přihlašovací údaje s náhodným heslem. Tato rutina nepodporuje uživatelsky definované přihlašovací údaje při resetování hesla.
Důležité
Před přiřazením nových přihlašovacích údajů možná budete chtít odebrat existující přihlašovací údaje, abyste se s nimi nemohli přihlásit. K tomu použijte rutinu Remove-AzADSpCredential :
Remove-AzADSpCredential -DisplayName ServicePrincipalName
$newCredential = New-AzADSpCredential -ServicePrincipalName ServicePrincipalName
Troubleshooting
Pokud se zobrazí chyba "New-AzADServicePrincipal: Jiný objekt se stejnou hodnotou pro identifikátorUris vlastnosti již existuje.", ověřte, že hlavní služba se stejným názvem už neexistuje.
Get-AzAdServicePrincipal -DisplayName ServicePrincipalName
Pokud už existující servisní principal nepotřebujete, můžete jej odstranit podle následujícího příkladu.
Remove-AzAdServicePrincipal -DisplayName ServicePrincipalName
K této chybě může dojít také v případě, že jste dříve vytvořili instanční objekt pro aplikaci Azure Active Directory. Pokud odeberete zástupce služby, aplikace bude stále dostupná. Tato aplikace zabraňuje vytvoření dalšího služebního principálu se stejným názvem.
Pomocí následujícího příkladu můžete ověřit, že aplikace Microsoft Entra se stejným názvem neexistuje:
Get-AzADApplication -DisplayName ServicePrincipalName
Pokud aplikace se stejným názvem existuje a už ji nepotřebujete, můžete ji odebrat pomocí následujícího příkladu.
Remove-AzADApplication -DisplayName ServicePrincipalName
Jinak zvolte alternativní název nového služebního principálu, který se pokoušíte vytvořit.