Sdílet prostřednictvím


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í:

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