Azure-beli szolgáltatásnév létrehozása az Azure PowerShell használatával
Figyelmeztetés
Az AzureRM PowerShell-modul 2024. február 29-én hivatalosan elavult. Javasoljuk a felhasználóknak, hogy migráljanak az AzureRM-ből az Az PowerShell-modulba a folyamatos támogatás és frissítések biztosítása érdekében.
Bár az AzureRM-modul továbbra is működik, a továbbiakban nem tart fenn vagy nem támogatott, így a folyamatos használatot a felhasználó saját belátása szerint és kockázatára teheti. Az Az modulra való áttéréshez tekintse meg a migrálási erőforrásainkat.
Ha azt tervezi, hogy az alkalmazást vagy szolgáltatást az Azure PowerShell-lel felügyeli, a saját hitelesítő adatai helyett az Azure Microsoft Entra szolgáltatásnév alatt kell futtatnia. Ez a cikk végigvezeti a szolgáltatásnevek Azure PowerShell-lel való létrehozásának folyamatán.
Feljegyzés
Az Azure Portalon is létrehozhat szolgáltatásneveket. További részletekért lásd: Active Directory-alkalmazás és -szolgáltatásnév létrehozása a portálon erőforrások eléréséhez.
Mi az a szolgáltatásnév?
Az Azure-beli szolgáltatásnév egy biztonsági identitás, amellyel a felhasználó által létrehozott appok, szolgáltatások és automatizálási eszközök elérnek adott Azure-erőforrásokat. Képzelje el úgy, mint egy „felhasználói identitást” (felhasználónév és jelszó vagy tanúsítvány) egy adott szerepkörrel és szigorúan szabályozott engedélyekkel. Az általános identitásoktól eltérően a szolgáltatásnév csak konkrét feladatok végrehajtására szolgál. Csak akkor javítja a biztonságot, ha csak a felügyeleti feladataihoz szükséges minimális engedélyeket osztja ki neki.
Saját jogosultsági szint ellenőrzése
Először is megfelelő engedélyekkel kell rendelkeznie mind a Microsoft Entra-azonosítójában, mind az Azure-előfizetésében. Létre kell tudnia hozni alkalmazást az Active Directoryban, és ki kell tudnia osztani szerepköröket a szolgáltatásnévnek.
A legegyszerűbben a portálon ellenőrizheti, hogy rendelkezik-e megfelelő jogosultságokkal. Lásd Szükséges jogosultságok ellenőrzése a portálon.
Szolgáltatásnév létrehozása az app számára
Miután bejelentkezett Azure-fiókjába, létrehozhatja a szolgáltatásnevet. A következő módszerek egyikének rendelkezésre kell állnia az üzembe helyezett app azonosításához:
- Az üzembe helyezett app egyedi neve (a következő példákban ez a „MyDemoWebApp”), vagy
- az alkalmazásazonosító, az üzembe helyezett alkalmazással, szolgáltatással vagy objektummal társított egyedi GUID
Az alkalmazás adatainak lekérése
Az alkalmazással kapcsolatos információkat a Get-AzureRmADApplication
parancsmaggal kérheti le.
Get-AzureRmADApplication -DisplayNameStartWith MyDemoWebApp
DisplayName : MyDemoWebApp
ObjectId : 775f64cd-0ec8-4b9b-b69a-8b8946022d9f
IdentifierUris : {http://MyDemoWebApp}
HomePage : http://www.contoso.com
Type : Application
ApplicationId : 00001111-aaaa-2222-bbbb-3333cccc4444
AvailableToOtherTenants : False
AppPermissions :
ReplyUrls : {}
Szolgáltatásnév létrehozása az alkalmazás számára
A szolgáltatásnév a New-AzureRmADServicePrincipal
parancsmaggal hozható létre.
$servicePrincipal = New-AzureRmADServicePrincipal -ApplicationId 00001111-aaaa-2222-bbbb-3333cccc4444
Secret : System.Security.SecureString
ServicePrincipalNames : {00001111-aaaa-2222-bbbb-3333cccc4444, http://MyDemoWebApp}
ApplicationId : 00001111-aaaa-2222-bbbb-3333cccc4444
DisplayName : MyDemoWebApp
Id : 698138e7-d7b6-4738-a866-b4e3081a69e4
AdfsId :
Type : ServicePrincipal
Itt használhatja közvetlenül a $servicePrincipal.Secret tulajdonságot a Connect-AzureRmAccount parancsmaggal (lásd az alábbi, „Bejelentkezés a szolgáltatásnévvel” című részt) vagy átalakíthatja ezt a SecureString típusú sztringet egyszerű szöveges sztringgé későbbi használatra:
$BSTR = [System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($servicePrincipal.Secret)
$password = [System.Runtime.InteropServices.Marshal]::PtrToStringAuto($BSTR)
[Runtime.InteropServices.Marshal]::ZeroFreeBSTR($BSTR)
Bejelentkezés a szolgáltatásnévvel
Most már bejelentkezhet az alkalmazás új szolgáltatásnevével az automatikusan létrehozott appId és jelszó használatával. Szüksége lesz a szolgáltatásnévhez tartozó bérlőazonosítóra is. A bérlőazonosító akkor jelenik meg, ha a saját hitelesítő adataival bejelentkezik az Azure-ba. Szolgáltatásnévvel való bejelentkezéshez használja a következő parancsokat:
$cred = New-Object System.Management.Automation.PSCredential ("00001111-aaaa-2222-bbbb-3333cccc4444", $servicePrincipal.Secret)
Connect-AzureRmAccount -Credential $cred -ServicePrincipal -TenantId 00000000-0000-0000-0000-000000000000
Sikeres bejelentkezés után az alábbihoz hasonló kimenet jelenik meg:
Environment : AzureCloud
Account : 00001111-aaaa-2222-bbbb-3333cccc4444
TenantId : 00000000-0000-0000-0000-000000000000
SubscriptionId :
SubscriptionName :
CurrentStorageAccount :
Gratulálunk! Ezekkel a hitelesítő adatokkal futtathatja az appját. Ezután be kell állítania a szolgáltatásnév jogosultságait.
Szerepkörök kezelése
Feljegyzés
Az Azure szerepköralapú hozzáférés-vezérlése (RBAC) a felhasználói nevek és szolgáltatásnevek szerepköreinek meghatározására és kezelésére szolgáló modell. A szerepkörökhöz jogosultságkészletek vannak társítva, amelyek meghatározzák az egyszerű entitás által olvasható, elérhető, írható és kezelhető erőforrásokat. További információkért az RBAC-ról és a szerepkörökről: RBAC: Beépített szerepkörök.
Az Azure PowerShell a következő parancsmagokat kínálja a szerepkör-hozzárendelések kezeléséhez:
A szolgáltatásnevek alapértelmezett szerepköre a Közreműködő. Mivel azonban ez széles körű engedélyekkel rendelkezik, nem feltétlenül ez a legjobb választás, attól függően, hogy az app milyen mértékben használja az Azure-szolgáltatásokat. Az Olvasó szerepkör sokkal korlátozóbb, és jó választás lehet a csak olvasó appokhoz. A szerepkör-specifikus engedélyek részleteit megtekintheti az Azure Portalon, és létrehozhat saját szerepköröket is.
Esetünkben az Olvasó szerepkört adjuk hozzá a példához, és töröljük a Közreműködő szerepkört:
New-AzureRmRoleAssignment -ResourceGroupName myRG -ObjectId 698138e7-d7b6-4738-a866-b4e3081a69e4 -RoleDefinitionName Reader
RoleAssignmentId : /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myRG/providers/Microsoft.Authorization/roleAssignments/818892f2-d075-46a1-a3a2-3a4e1a12fcd5
Scope : /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myRG
DisplayName : MyDemoWebApp
SignInName :
RoleDefinitionName : Reader
RoleDefinitionId : b24988ac-6180-42a0-ab88-20f7382dd24c
ObjectId : 698138e7-d7b6-4738-a866-b4e3081a69e4
ObjectType : ServicePrincipal
Remove-AzureRmRoleAssignment -ResourceGroupName myRG -ObjectId 698138e7-d7b6-4738-a866-b4e3081a69e4 -RoleDefinitionName Contributor
Az aktuálisan hozzárendelt szerepkörök megtekintése:
Get-AzureRmRoleAssignment -ResourceGroupName myRG -ObjectId 698138e7-d7b6-4738-a866-b4e3081a69e4
RoleAssignmentId : /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myRG/providers/Microsoft.Authorization/roleAssignments/0906bbd8-9982-4c03-8dae-aeaae8b13f9e
Scope : /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myRG
DisplayName : MyDemoWebApp
SignInName :
RoleDefinitionName : Reader
RoleDefinitionId : acdd72a7-3385-48ef-bd42-f606fba81ae7
ObjectId : 698138e7-d7b6-4738-a866-b4e3081a69e4
ObjectType : ServicePrincipal
Egyéb Azure PowerShell-parancsmagok a szerepkörök kezeléséhez:
- Get-AzureRmRoleDefinition
- New-AzureRmRoleDefinition
- Remove-AzureRmRoleDefinition
- Set-AzureRmRoleDefinition
Szolgáltatásnév hitelesítő adatainak módosítása
A jogosultságok rendszeres áttekintése és a jelszavak cseréje ajánlott biztonsági eljárás. Az app változása esetén is érdemes lehet módosítani a hitelesítő adatokat. A szolgáltatásnév jelszava például módosítható egy új jelszó létrehozásával és a korábbi törlésével.
Új jelszó hozzáadása a szolgáltatásnévhez
New-AzureRmADSpCredential -ServicePrincipalName http://MyDemoWebApp
Secret : System.Security.SecureString
StartDate : 11/16/2018 12:38:23 AM
EndDate : 11/16/2019 12:38:23 AM
KeyId : 00001111-aaaa-2222-bbbb-3333cccc4444
Type : Password
A szolgáltatásnév hitelesítő adatainak listázása
Get-AzureRmADSpCredential -ServicePrincipalName http://MyDemoWebApp
StartDate EndDate KeyId Type
--------- ------- ----- ----
3/8/2017 5:58:24 PM 3/8/2018 5:58:24 PM 00001111-aaaa-2222-bbbb-3333cccc4444 Password
5/5/2016 4:55:27 PM 5/5/2017 4:55:27 PM ca9d4846-4972-4c70-b6f5-a4effa60b9bc Password
A régi jelszó törlése a szolgáltatásnévből
Remove-AzureRmADSpCredential -ServicePrincipalName http://MyDemoWebApp -KeyId ca9d4846-4972-4c70-b6f5-a4effa60b9bc
Confirm
Are you sure you want to remove credential with keyId '00001111-aaaa-2222-bbbb-3333cccc4444' for
service principal objectId '698138e7-d7b6-4738-a866-b4e3081a69e4'.
[Y] Yes [N] No [S] Suspend [?] Help (default is "Y"): Y
A szolgáltatásnév hitelesítőadat-listájának ellenőrzése
Get-AzureRmADSpCredential -ServicePrincipalName http://MyDemoWebApp
StartDate EndDate KeyId Type
--------- ------- ----- ----
3/8/2017 5:58:24 PM 3/8/2018 5:58:24 PM 00001111-aaaa-2222-bbbb-3333cccc4444 Password
A szolgáltatásnév adatainak lekérése
$svcprincipal = Get-AzureRmADServicePrincipal -ObjectId 698138e7-d7b6-4738-a866-b4e3081a69e4
$svcprincipal | Select-Object -Property *
ServicePrincipalNames : {http://MyDemoWebApp, 00001111-aaaa-2222-bbbb-3333cccc4444}
ApplicationId : 00001111-aaaa-2222-bbbb-3333cccc4444
DisplayName : MyDemoWebApp
Id : 698138e7-d7b6-4738-a866-b4e3081a69e4
Type : ServicePrincipal