Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Ha olyan alkalmazása van, amelynek erőforrásokhoz kell hozzáférnie, létrehozhat egy identitást az alkalmazásnak, és hitelesítheti az alkalmazást annak saját hitelesítő adataival. Ezt az identitást szolgáltatásnévnek nevezzük. Ez a megközelítés lehetővé teszi az alábbiakat:
- A saját engedélyeitől eltérő engedélyek hozzárendelése az alkalmazásidentitáshoz. Ezek az engedélyek jellemzően csak azt engedélyezik, amire az alkalmazásnak szüksége van.
- Tanúsítvány használata hitelesítéshez szkriptek felügyelet nélküli futtatásakor.
Fontos
Szolgáltatásnév létrehozása helyett érdemes lehet felügyelt identitásokat használni az Azure-erőforrásokhoz az alkalmazás-identitáshoz. Ha a kód olyan szolgáltatáson fut, amely támogatja a felügyelt identitásokat, és olyan erőforrásokhoz fér hozzá, amelyek támogatják a Microsoft Entra-hitelesítést, a felügyelt identitások jobb választásnak számítanak. Ha többet szeretne megtudni az Azure-erőforrások felügyelt identitásairól, beleértve azt is, hogy mely szolgáltatások támogatják azt, olvassa el az Azure-erőforrások felügyelt identitásainak ismertetése című témakört.
Ez a cikk bemutatja, hogy hogyan hozhat létre egy szolgáltatásnevet tanúsítvánnyal történő hitelesítéshez. A jelszót használó szolgáltatásnevek beállításáról a következő témakörben tájékozódhat: Azure-beli szolgáltatásnév létrehozása az Azure PowerShell használatával.
A cikk lépéseinek követéséhez a PowerShell legújabb verzióját kell használnia.
Feljegyzés
Javasoljuk, hogy az Azure Az PowerShell modult használja az Azure-ral való interakcióhoz. Az első lépésekhez tekintse meg az Azure PowerShell telepítését ismertető szakaszt. Az Az PowerShell-modulra történő migrálás részleteiről lásd: Az Azure PowerShell migrálása az AzureRM modulból az Az modulba.
Szükséges engedélyek
A cikk elvégzéséhez a Microsoft Entra-azonosítóban és az Azure-előfizetésben is megfelelő engedélyekkel kell rendelkeznie. Pontosabban létre kell tudnia hozni egy alkalmazást a Microsoft Entra-azonosítóban, és hozzárendelni a szolgáltatásnevet egy szerepkörhöz.
A legegyszerűbben a Microsoft Entra felügyeleti központban ellenőrizheti, hogy a fiókja rendelkezik-e megfelelő engedélyekkel.
Az alkalmazás hozzárendelése egy szerepkörhöz
Az előfizetés erőforrásainak eléréséhez hozzá kell rendelnie az alkalmazást egy szerepkörhöz. Döntse el, hogy melyik szerepkör nyújtja a megfelelő engedélyeket az alkalmazáshoz. Az elérhető szerepkörökről az Azure beépített szerepköreiből tájékozódhat.
A hatókört az előfizetés, az erőforráscsoport vagy az erőforrás szintjén állíthatja be. Az engedélyek a hatókör alacsonyabb szintjeire öröklődnek. Ha például hozzáad egy alkalmazást egy erőforráscsoport Olvasó szerepköréhez, az azt jelenti, hogy beolvassa az erőforráscsoportot és a benne lévő erőforrásokat. Ha engedélyezni szeretné az alkalmazás számára az újraindításhoz, a példányok elindításához és leállításához hasonló műveletek végrehajtását, válassza ki a Közreműködő szerepkört.
Szolgáltatásfő felhasználó létrehozása önaláírt tanúsítvánnyal
Az alábbi példa egy egyszerű forgatókönyvet követ. A New-AzADServicePrincipal használatával önaláírt tanúsítvánnyal rendelkező szolgáltatási fiókot hoz létre, és a New-AzRoleAssignment használatával rendeli hozzá az Olvasó szerepkört a szolgáltatási fiókhoz. A szerepkör-hozzárendelés hatóköre a jelenleg kiválasztott Azure-előfizetés. Másik előfizetés kiválasztásához használja a Set-AzContext parancsot.
Feljegyzés
A New-SelfSignedCertificate parancsmag és a PKI modul jelenleg nem támogatott a PowerShell Core-ban.
$cert = New-SelfSignedCertificate -CertStoreLocation "cert:\CurrentUser\My" `
-Subject "CN=exampleappScriptCert" `
-KeySpec KeyExchange
$keyValue = [System.Convert]::ToBase64String($cert.GetRawCertData())
$sp = New-AzADServicePrincipal -DisplayName exampleapp `
-CertValue $keyValue `
-EndDate $cert.NotAfter `
-StartDate $cert.NotBefore
Sleep 20
New-AzRoleAssignment -RoleDefinitionName Reader -ServicePrincipalName $sp.AppId
A példa 20 másodpercet várakozik, hogy az új szolgáltatási főszereplő terjedése a Microsoft Entra ID-n keresztül megtörténhessen. Ha a szkript nem vár elég sokáig, hibaüzenet jelenik meg: "{ID} főnév nem létezik a(z) {DIR-ID} könyvtárban." A hiba megoldásához várjon egy percet, majd futtassa újra a New-AzRoleAssignment parancsot.
A szerepkör-hozzárendelés hatókörét beállíthatja egy adott erőforráscsoportra a ResourceGroupName paraméter használatával. Egy adott erőforrásra is beállíthatja a hatókört a ResourceType és a ResourceName paraméter együttes használatával.
Ha nincs Windows 10 vagy Windows Server 2016, töltse le a New-SelfSignedCertificateEx parancsmagot a PKI Solutionsből. Bontsa ki a fájl tartalmát, és importálja a szükséges parancsmagot.
# Only run if you could not use New-SelfSignedCertificate
Import-Module -Name c:\ExtractedModule\New-SelfSignedCertificateEx.ps1
A szkriptben helyettesítse be az alábbi két sort a tanúsítvány generálásához.
New-SelfSignedCertificateEx -StoreLocation CurrentUser `
-Subject "CN=exampleapp" `
-KeySpec "Exchange" `
-FriendlyName "exampleapp"
$cert = Get-ChildItem -path Cert:\CurrentUser\my | where {$PSitem.Subject -eq 'CN=exampleapp' }
Tanúsítvány biztosítása automatizált PowerShell-szkripttel
Amikor szolgáltatásnévként jelentkezik be, adja meg az AD-alkalmazás címtárának bérlőazonosítóját. A bérlő a Microsoft Entra-azonosító egy példánya.
$TenantId = (Get-AzSubscription -SubscriptionName "Contoso Default").TenantId
$ApplicationId = (Get-AzADApplication -DisplayNameStartWith exampleapp).AppId
$Thumbprint = (Get-ChildItem cert:\CurrentUser\My\ | Where-Object {$_.Subject -eq "CN=exampleappScriptCert" }).Thumbprint
Connect-AzAccount -ServicePrincipal `
-CertificateThumbprint $Thumbprint `
-ApplicationId $ApplicationId `
-TenantId $TenantId
Szolgáltatásnév létrehozása hitelesítésszolgáltatótól származó tanúsítvánnyal
Az alábbi példa egy hitelesítésszolgáltatótól származó tanúsítvánnyal hoz létre egy szolgáltatásnevet. A hozzárendelés a megadott Azure-előfizetésre terjed ki. Hozzáadja a szolgáltatásazonosítót az Olvasó szerepkörhöz. Ha hiba történik a szerepkör-hozzárendelés során, a szkript megismétli a hozzárendelést.
Param (
[Parameter(Mandatory=$true)]
[String] $ApplicationDisplayName,
[Parameter(Mandatory=$true)]
[String] $SubscriptionId,
[Parameter(Mandatory=$true)]
[String] $CertPath,
[Parameter(Mandatory=$true)]
[String] $CertPlainPassword
)
Connect-AzAccount
Import-Module Az.Resources
Set-AzContext -Subscription $SubscriptionId
$CertPassword = ConvertTo-SecureString $CertPlainPassword -AsPlainText -Force
$PFXCert = New-Object -TypeName System.Security.Cryptography.X509Certificates.X509Certificate2 -ArgumentList @($CertPath, $CertPassword)
$KeyValue = [System.Convert]::ToBase64String($PFXCert.GetRawCertData())
$ServicePrincipal = New-AzADServicePrincipal -DisplayName $ApplicationDisplayName
New-AzADSpCredential -ObjectId $ServicePrincipal.Id -CertValue $KeyValue -StartDate $PFXCert.NotBefore -EndDate $PFXCert.NotAfter
Get-AzADServicePrincipal -ObjectId $ServicePrincipal.Id
$NewRole = $null
$Retries = 0;
While ($NewRole -eq $null -and $Retries -le 6)
{
# Sleep here for a few seconds to allow the service principal application to become active (should only take a couple of seconds normally)
Sleep 15
New-AzRoleAssignment -RoleDefinitionName Reader -ServicePrincipalName $ServicePrincipal.AppId | Write-Verbose -ErrorAction SilentlyContinue
$NewRole = Get-AzRoleAssignment -ObjectId $ServicePrincipal.Id -ErrorAction SilentlyContinue
$Retries++;
}
$NewRole
Tanúsítvány biztosítása automatizált PowerShell-szkripttel
Amikor szolgáltatásnévként jelentkezik be, adja meg az AD-alkalmazás címtárának bérlőazonosítóját. A bérlő a Microsoft Entra-azonosító egy példánya.
Param (
[Parameter(Mandatory=$true)]
[String] $CertPath,
[Parameter(Mandatory=$true)]
[String] $CertPlainPassword,
[Parameter(Mandatory=$true)]
[String] $ApplicationId,
[Parameter(Mandatory=$true)]
[String] $TenantId
)
$CertPassword = ConvertTo-SecureString $CertPlainPassword -AsPlainText -Force
$PFXCert = New-Object `
-TypeName System.Security.Cryptography.X509Certificates.X509Certificate2 `
-ArgumentList @($CertPath, $CertPassword)
$Thumbprint = $PFXCert.Thumbprint
Connect-AzAccount -ServicePrincipal `
-CertificateThumbprint $Thumbprint `
-ApplicationId $ApplicationId `
-TenantId $TenantId
Az alkalmazásazonosító és a bérlőazonosító nem bizalmas adat, ezért beágyazhatja közvetlenül a szkriptjébe. A bérlőazonosító megállapításához használja a következőt:
(Get-AzSubscription -SubscriptionName "Contoso Default").TenantId
Az alkalmazásazonosító megállapításához használja a következőt:
(Get-AzADApplication -DisplayNameStartWith {display-name}).AppId
Hitelesítő adatok módosítása
Az AD-alkalmazások hitelesítő adatainak módosításához, akár biztonsági sérülés, akár hitelesítő adatok lejárata miatt, használja a Remove-AzADAppCredential és New-AzADAppCredential parancsmagokat.
Ha egy alkalmazás összes hitelesítő adatát szeretné eltávolítani, használja a következőt:
Get-AzADApplication -DisplayName exampleapp | Remove-AzADAppCredential
Ha tanúsítványértéket kíván hozzáadni, hozzon létre egy önaláírt tanúsítványt a cikkben ismertetett módon. Ezután használja a következőt:
Get-AzADApplication -DisplayName exampleapp | New-AzADAppCredential `
-CertValue $keyValue `
-EndDate $cert.NotAfter `
-StartDate $cert.NotBefore
Hibakeresés
A szolgáltatásnév létrehozásakor az alábbi hibákba ütközhet:
"Authentication_Unauthorized" vagy "Nincs előfizetés a környezetben" . – Ez a hiba akkor jelenik meg, ha a fiókja nem rendelkezik az alkalmazás regisztrálásához szükséges engedélyekkel a Microsoft Entra-azonosítóhoz. Ez a hiba általában akkor jelenik meg, ha csak a Microsoft Entra-azonosítójában szereplő rendszergazdai felhasználók regisztrálhatnak alkalmazásokat, és a fiókja nem rendszergazda. Kérje meg a rendszergazdát, hogy rendelje hozzá Önt egy rendszergazdai szerepkörhöz, vagy engedélyezze a felhasználók számára az alkalmazások regisztrálását.
A fiókja "nem rendelkezik engedéllyel a "Microsoft.Authorization/roleAssignments/write" művelet végrehajtásához a(z) "/subscriptions/{guid}" hatókörön keresztül." – Ez a hiba akkor jelenik meg, ha a fiókja nem rendelkezik megfelelő engedélyekkel ahhoz, hogy szerepkört rendeljen egy identitáshoz. Kérje meg az előfizetés-rendszergazdáját, hogy adja hozzá Önt a Felhasználói hozzáférés rendszergazdája szerepkörhöz.
Következő lépések
- Ha jelszóval szeretne beállítani egy egyszerű szolgáltatást, olvassa el az Azure-szolgáltatásnév létrehozása az Azure PowerShell-lel vagy Azure-szolgáltatásnév létrehozása az Azure CLI-vel című témakört.
- Az alkalmazásokról és a szolgáltatásnevekről bővebben az Alkalmazásobjektumok és egyszerű szolgáltatási objektumok című cikkben olvashat.
- A Microsoft Entra-hitelesítésről további információt a Microsoft Entra ID hitelesítési forgatókönyvei című témakörben talál.
- Az alkalmazásregisztrációk Microsoft Graph használatával történő használatáról az Applications API-referencia nyújt tájékoztatást.