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í služby Azure, 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í instanční objekty.
Instanční objekt Azure je identita vytvoř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 instančnímu objektu, což vám dává kontrolu nad tím, ke kterým prostředkům je možné přistupovat, a na jaké úrovni. Z bezpečnostních důvodů se vždy doporučuje používat instanční objekty s automatizovanými nástroji, než aby se mohly přihlásit pomocí identity uživatele.
V tomto článku se dozvíte, jak vytvořit, získat informace o instančním objektu a resetovat ho pomocí Azure PowerShellu.
Upozornění
Při vytváření instančního objektu pomocí příkazu New-AzADServicePrincipal výstup obsahuje přihlašovací údaje, které musíte chránit. Jako alternativu zvažte použití spravovaných identit , abyste se vyhnuli nutnosti používat přihlašovací údaje.
Požadavky
- Pokud se rozhodnete používat Azure PowerShell lokálně:
- 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 přehledu služby Azure Cloud Shell .
Vytvořte služebního principála
Vytvořte instanční objekt pomocí rutiny New-AzADServicePrincipal . Při vytváření instančního objektu zvolíte typ ověřování přihlaš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í služebního principála.
V adresáři Microsoft Entra ID, kde uživatelské nastavení Uživatelé mohou registrovat aplikace je nastaveno na Ne, 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 naleznete v tématu Omezení, kdo může vytvářet aplikace.
Pro instanční objekty jsou k dispozici dva typy ověřování: ověřování založené na heslech a ověřování na základě certifikátů.
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í instančního objektu.
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 někam zabezpečenou pro ověření pomocí instančního objektu. Jeho hodnota se nezobrazí ve výstupu konzoly. Pokud heslo ztratíte, resetujte přihlašovací údaje instančního objektu.
Následující kód umožňuje exportovat tajný kód:
$sp.PasswordCredentials.SecretText
Vrácený objekt New-AzADServicePrincipal obsahuje členy Id a DisplayName členy, z nichž lze použít pro přihlášení pomocí instančního objektu.
Důležité
Přihlášení pomocí instančního objektu vyžaduje ID tenanta, pod kterým se instanční objekt vytvořil. 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í instančního objektu ověřování založeného na certifikátech není přiřazena žádná výchozí role. Informace o správě přiřazení rolí najdete v tématu Správa rolí instančního objektu.
Instanční objekty 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 New-AzADServicePrincipal obsahuje Id vlastnosti a DisplayName vlastnosti, z nichž lze použít pro přihlášení pomocí instančního objektu. Klienti, kteří se přihlašují pomocí instančního objektu, potřebují také přístup k privátnímu klíči certifikátu.
Důležité
Přihlášení pomocí instančního objektu vyžaduje ID tenanta, pod kterým se instanční objekt vytvořil. 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 instančního objektu
Seznam instančních objektů pro aktivního tenanta je možné načíst pomocí rutiny 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 instančního objektu je hodnota nastavenáDisplayNameběhem vytváření. -
DisplayNamepožaduje přesnou shodu názvu instančního objektu.
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 řízení přístupu (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řebírají ID instančního objektu. Převezmou přidružené ID aplikace, které se vygeneruje při vytváření. K získání ID aplikace pro instanční objekt 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í instančního objektu 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í instančního objektu
Otestujte přihlašovací údaje a oprávnění nového instančního objektu přihlášením. 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í instančního objektu 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í na základě certifikátů vyžaduje, aby Azure PowerShell mohl načítat 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 instanční objekt, přidejte pomocí rutiny 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
Řešení problémů
Pokud se zobrazí chyba New-AzADServicePrincipal: Jiný objekt se stejnou hodnotou pro identifikátorUris vlastnosti již existuje.", ověřte, že instanční objekt se stejným názvem ještě neexistuje.
Get-AzAdServicePrincipal -DisplayName ServicePrincipalName
Pokud už existující instanční objekt nepotřebujete, můžete ho odebrat pomocí 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 instanční objekt odeberete, bude aplikace stále dostupná. Tato aplikace vám brání ve vytváření jiného instančního objektu 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 instančního objektu, který se pokoušíte vytvořit.
Azure PowerShell