Vytvoření instančního objektu Azure s použitím prostředí Azure PowerShell
Upozorňující
Modul AzureRM PowerShell byl od 29. února 2024 oficiálně zastaralý. Uživatelům se doporučuje migrovat z AzureRM do modulu Az PowerShell, aby se zajistila nepřetržitá podpora a aktualizace.
I když může modul AzureRM stále fungovat, už se neudržuje ani nepodporuje, přičemž jakékoli další použití se bude umisťovat podle vlastního uvážení a rizika uživatele. Pokyny k přechodu na modul Az najdete v našich zdrojích informací o migraci.
Pokud plánujete spravovat aplikaci nebo službu pomocí Azure PowerShellu, měli byste ji spustit pod instančním objektem Azure Microsoft Entra, a ne pod vlastními přihlašovacími údaji. Tento článek vás provede vytvořením objektu zabezpečení s použitím prostředí Azure PowerShell.
Poznámka:
Instanční objekt můžete vytvořit také na webu Azure Portal. Další podrobnosti najdete v článku Vytvoření aplikace služby Active Directory a instančního objektu s přístupem k prostředkům pomocí portálu.
Co je instanční objekt?
Instanční objekt Azure je identita zabezpečení, kterou používají aplikace, služby a nástroje pro automatizaci vytvořené uživatelem pro přístup ke konkrétním prostředkům Azure. Můžete si ho představit jako identitu uživatele (uživatelské jméno a heslo nebo certifikát) s určitou rolí a přísně řízenými oprávněními. Na rozdíl od obecné identity uživatele instanční objekt potřebuje mít možnost provádět jenom určité akce. Zabezpečení můžete zvýšit tak, že mu přidělíte pouze minimální úroveň oprávnění k provádění úloh správy.
Ověření vlastní úrovně oprávnění
Nejprve musíte mít dostatečná oprávnění v ID Microsoft Entra i v předplatném Azure. Musíte být schopni v Active Directory vytvořit aplikaci a instančnímu objektu přiřadit roli.
Nejjednodušším způsobem, jak zkontrolovat, jestli váš účet má správná oprávnění, je použít k tomu portál. Viz Kontrola požadovaných oprávnění na portálu.
Vytvoření instančního objektu pro aplikaci
Po přihlášení k účtu Azure můžete vytvořit instanční objekt. Musíte být schopni identifikovat nasazenou aplikaci jedním z následujících způsobů:
- Jedinečný název nasazené aplikace, například název MyDemoWebApp používaný v následujících příkladech, nebo:
- ID aplikace, jedinečný identifikátor GUID přidružený k nasazené aplikaci, službě nebo objektu.
Získání informací o aplikaci
S použitím rutiny Get-AzureRmADApplication
můžete získat informace o aplikaci.
Get-AzureRmADApplication -DisplayNameStartWith MyDemoWebApp
DisplayName : MyDemoWebApp
ObjectId : 775f64cd-0ec8-4b9b-b69a-8b8946022d9f
IdentifierUris : {http://MyDemoWebApp}
HomePage : http://www.contoso.com
Type : Application
ApplicationId : 00c01aaa-1603-49fc-b6df-b78c4e5138b4
AvailableToOtherTenants : False
AppPermissions :
ReplyUrls : {}
Vytvoření instančního objektu pro aplikaci
Rutina New-AzureRmADServicePrincipal
slouží k vytvoření instančního objektu.
$servicePrincipal = New-AzureRmADServicePrincipal -ApplicationId 00c01aaa-1603-49fc-b6df-b78c4e5138b4
Secret : System.Security.SecureString
ServicePrincipalNames : {00c01aaa-1603-49fc-b6df-b78c4e5138b4, http://MyDemoWebApp}
ApplicationId : 00c01aaa-1603-49fc-b6df-b78c4e5138b4
DisplayName : MyDemoWebApp
Id : 698138e7-d7b6-4738-a866-b4e3081a69e4
AdfsId :
Type : ServicePrincipal
Potom můžete přímo použít vlastnost $servicePrincipal.Secret pro Connect-AzureRmAccount (viz Přihlášení pomocí instančního objektu níž), nebo můžete SecureString převést na prostý textový řetězec k pozdějšímu využití:
$BSTR = [System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($servicePrincipal.Secret)
$password = [System.Runtime.InteropServices.Marshal]::PtrToStringAuto($BSTR)
[Runtime.InteropServices.Marshal]::ZeroFreeBSTR($BSTR)
Přihlášení pomocí instančního objektu
Nyní se můžete přihlásit jako nový instanční objekt pro vaši aplikaci s použitím hodnoty appId, kterou jste zadali, a hodnoty password, která se vygenerovala automaticky. Pro instanční objekt potřebujete také ID tenanta. Vaše ID tenanta se zobrazí, když se přihlásíte do Azure s použitím osobních přihlašovacích údajů. Pokud se chcete přihlásit pomocí instančního objektu,použijte následující příkazy:
$cred = New-Object System.Management.Automation.PSCredential ("00c01aaa-1603-49fc-b6df-b78c4e5138b4", $servicePrincipal.Secret)
Connect-AzureRmAccount -Credential $cred -ServicePrincipal -TenantId 00000000-0000-0000-0000-000000000000
Po úspěšném přihlášení vypadá výstup nějak takto:
Environment : AzureCloud
Account : 00c01aaa-1603-49fc-b6df-b78c4e5138b4
TenantId : 00000000-0000-0000-0000-000000000000
SubscriptionId :
SubscriptionName :
CurrentStorageAccount :
Gratulujeme! Tyto přihlašovací údaje můžete použít ke spouštění aplikace. Dále je třeba upravit oprávnění instančního objektu.
Správa rolí
Poznámka:
Řízení přístupu na základě role (RBAC) Azure je model definování a správy rolí uživatele a instančních objektů. K rolím jsou přiřazeny sady oprávnění určující, ke kterým prostředkům má objekt zabezpečení přístup a které může číst, zapisovat a spravovat. Další informace o RBAC a rolích najdete v tématu RBAC: Předdefinované role.
Prostředí Azure PowerShell umožňuje spravovat přiřazování rolí pomocí následujících rutin:
Výchozí role pro instanční objekt je Přispěvatel. Tato role vzhledem k rozsáhlosti oprávnění nemusí být v závislosti na rozsahu interakce aplikace se službami Azure ideální. Role Čtenář je více omezující a může být dobrou volbou pro aplikace s přístupem jen pro čtení. Zobrazit podrobnosti o oprávněních jednotlivých rolí nebo vytvořit vlastní role můžete na webu Azure Portal.
V tomto příkladu přidáme do předchozího příkladu roli Čtenář a odstraníme roli Přispěvatel:
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
Zobrazení aktuálních přiřazených rolí:
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
Další rutiny prostředí Azure PowerShell pro správu rolí:
- Get-AzureRmRoleDefinition
- New-AzureRmRoleDefinition
- Remove-AzureRmRoleDefinition
- Set-AzureRmRoleDefinition
Změna přihlašovacích údajů objektu zabezpečení
Z pohledu zabezpečení je dobrým zvykem pravidelně kontrolovat oprávnění a aktualizovat hesla. Spravovat a upravovat přihlašovací údaje zabezpečení byste měli také se změnami aplikace. Můžeme například změnit heslo instančního objektu vytvořením nového hesla a odebráním předchozího.
Přidání nového hesla pro instanční objekt
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 : 6f801c3e-6fcd-42b9-be8e-320b17ba1d36
Type : Password
Získání seznamu přihlašovacích údajů pro instanční objekt
Get-AzureRmADSpCredential -ServicePrincipalName http://MyDemoWebApp
StartDate EndDate KeyId Type
--------- ------- ----- ----
3/8/2017 5:58:24 PM 3/8/2018 5:58:24 PM 6f801c3e-6fcd-42b9-be8e-320b17ba1d36 Password
5/5/2016 4:55:27 PM 5/5/2017 4:55:27 PM ca9d4846-4972-4c70-b6f5-a4effa60b9bc Password
Odebrání předchozího hesla z instančního objektu
Remove-AzureRmADSpCredential -ServicePrincipalName http://MyDemoWebApp -KeyId ca9d4846-4972-4c70-b6f5-a4effa60b9bc
Confirm
Are you sure you want to remove credential with keyId '6f801c3e-6fcd-42b9-be8e-320b17ba1d36' for
service principal objectId '698138e7-d7b6-4738-a866-b4e3081a69e4'.
[Y] Yes [N] No [S] Suspend [?] Help (default is "Y"): Y
Ověření seznamu přihlašovacích údajů pro instanční objekt
Get-AzureRmADSpCredential -ServicePrincipalName http://MyDemoWebApp
StartDate EndDate KeyId Type
--------- ------- ----- ----
3/8/2017 5:58:24 PM 3/8/2018 5:58:24 PM 6f801c3e-6fcd-42b9-be8e-320b17ba1d36 Password
Získání informací o instančním objektu
$svcprincipal = Get-AzureRmADServicePrincipal -ObjectId 698138e7-d7b6-4738-a866-b4e3081a69e4
$svcprincipal | Select-Object -Property *
ServicePrincipalNames : {http://MyDemoWebApp, 00c01aaa-1603-49fc-b6df-b78c4e5138b4}
ApplicationId : 00c01aaa-1603-49fc-b6df-b78c4e5138b4
DisplayName : MyDemoWebApp
Id : 698138e7-d7b6-4738-a866-b4e3081a69e4
Type : ServicePrincipal