Tanúsítvánnyal rendelkező szolgáltatásnév létrehozása az Azure PowerShell használatával
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ásnév 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ásnevet hoz létre, és a New-AzRoleAssignment használatával rendeli hozzá az Olvasó szerepkört a szolgáltatásnévhez. A szerepkör-hozzárendelés hatóköre az aktuális 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ásodpercig alszik, hogy az új szolgáltatásnév propagálási ideje a Microsoft Entra-azonosítón keresztül legyen. 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 hatóköre a megadott Azure-előfizetés. Hozzáadja a szolgáltatásnevet 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 biztonsági sérülés vagy hitelesítő adatok lejárata miatt használja a Remove-AzADAppCredential és a 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.