Egyéni Azure-szerepkörök létrehozása vagy frissítése Azure PowerShell

Fontos

A felügyeleti csoport hozzáadása jelenleg AssignableScopes előzetes verzióban érhető el. Erre az előzetes verzióra nem vonatkozik szolgáltatói szerződés, és a használata nem javasolt éles számítási feladatok esetén. Előfordulhat, hogy néhány funkció nem támogatott, vagy korlátozott képességekkel rendelkezik. További információ: Kiegészítő használati feltételek a Microsoft Azure előzetes verziójú termékeihez.

Ha az Azure beépített szerepkörei nem felelnie meg a szervezet igényeinek, létrehozhatja saját egyéni szerepköreit. Ez a cikk azt ismerteti, hogyan listából, hozhat létre, frissíthet vagy törölhet egyéni szerepköröket a Azure PowerShell.

Az egyéni szerepkör létrehozásához szükséges részletes útmutatóért lásd: Oktatóanyag: Egyéni Azure-szerepkör létrehozása a Azure PowerShell.

Megjegyzés

Ez a cikk az Azure Az PowerShell-modult használja, amely az Azure-ral való kommunikációhoz ajánlott PowerShell-modul. Az Az PowerShell-modul használatának megkezdéséhez lásd 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.

Előfeltételek

Egyéni szerepkörök létrehozásához a következőre van szükség:

Egyéni szerepkörök listázása

A hatókörökhöz hozzárendelhető szerepkörök felsorolásához használja a Get-AzRoleDefinition parancsot. Az alábbi példa felsorolja az összes hozzárendelhető szerepkört a kiválasztott előfizetésben.

Get-AzRoleDefinition | FT Name, IsCustom
Name                                              IsCustom
----                                              --------
Virtual Machine Operator                              True
AcrImageSigner                                       False
AcrQuarantineReader                                  False
AcrQuarantineWriter                                  False
API Management Service Contributor                   False
...

Az alábbi példa csak azokat az egyéni szerepköröket sorolja fel, amelyek hozzárendelhetőek a kiválasztott előfizetésben.

Get-AzRoleDefinition -Custom | FT Name, IsCustom
Name                     IsCustom
----                     --------
Virtual Machine Operator     True

Ha a kiválasztott előfizetés nem szerepel a szerepkörben, az egyéni szerepkör AssignableScopes nem szerepel a listán.

Egyéni szerepkör-definíciók felsorolása

Egyéni szerepkör-definíció listához használja a Get-AzRoleDefinition használhatja a következőt:. Ez ugyanaz a parancs, mint amit a beépített szerepkörhöz használ.

Get-AzRoleDefinition <role_name> | ConvertTo-Json
PS C:\> Get-AzRoleDefinition "Virtual Machine Operator" | ConvertTo-Json

{
  "Name": "Virtual Machine Operator",
  "Id": "00000000-0000-0000-0000-000000000000",
  "IsCustom": true,
  "Description": "Can monitor and restart virtual machines.",
  "Actions": [
    "Microsoft.Storage/*/read",
    "Microsoft.Network/*/read",
    "Microsoft.Compute/*/read",
    "Microsoft.Compute/virtualMachines/start/action",
    "Microsoft.Compute/virtualMachines/restart/action",
    "Microsoft.Authorization/*/read",
    "Microsoft.ResourceHealth/availabilityStatuses/read",
    "Microsoft.Resources/subscriptions/resourceGroups/read",
    "Microsoft.Insights/alertRules/*",
    "Microsoft.Support/*"
  ],
  "NotActions": [],
  "DataActions": [],
  "NotDataActions": [],
  "AssignableScopes": [
    "/subscriptions/11111111-1111-1111-1111-111111111111"
  ]
}

Az alábbi példa csak a szerepköri műveleteket sorolja fel:

(Get-AzRoleDefinition <role_name>).Actions
PS C:\> (Get-AzRoleDefinition "Virtual Machine Operator").Actions

"Microsoft.Storage/*/read",
"Microsoft.Network/*/read",
"Microsoft.Compute/*/read",
"Microsoft.Compute/virtualMachines/start/action",
"Microsoft.Compute/virtualMachines/restart/action",
"Microsoft.Authorization/*/read",
"Microsoft.ResourceHealth/availabilityStatuses/read",
"Microsoft.Resources/subscriptions/resourceGroups/read",
"Microsoft.Insights/alertRules/*",
"Microsoft.Insights/diagnosticSettings/*",
"Microsoft.Support/*"

Egyéni szerepkör létrehozása

Egyéni szerepkör létrehozásához használja a New-AzRoleDefinition parancsot. A szerepkör strukturálható objektum vagy PSRoleDefinition JSON-sablon használatával két módon strukturálható.

Erőforrás-szolgáltató műveleteinek lekérte

Amikor egyéni szerepköröket hoz létre, fontos, hogy tudja az erőforrás-szolgáltatóktól származó összes lehetséges műveletet. Megtekintheti az erőforrás-szolgáltatói műveletek listáját, vagy a Get-AzProviderOperation paranccsal lekérte ezeket az információkat. Ha például a virtuális gépek összes elérhető műveletét szeretné ellenőrizni, használja a következő parancsot:

Get-AzProviderOperation <operation> | FT OperationName, Operation, Description -AutoSize
PS C:\> Get-AzProviderOperation "Microsoft.Compute/virtualMachines/*" | FT OperationName, Operation, Description -AutoSize

OperationName                                  Operation                                                      Description
-------------                                  ---------                                                      -----------
Get Virtual Machine                            Microsoft.Compute/virtualMachines/read                         Get the propertie...
Create or Update Virtual Machine               Microsoft.Compute/virtualMachines/write                        Creates a new vir...
Delete Virtual Machine                         Microsoft.Compute/virtualMachines/delete                       Deletes the virtu...
Start Virtual Machine                          Microsoft.Compute/virtualMachines/start/action                 Starts the virtua...
...

Egyéni szerepkör létrehozása a PSRoleDefinition objektummal

Ha a PowerShell használatával hoz létre egyéni szerepkört, használhatja az egyik beépített szerepkört kiindulási pontként, vagy kezdheti elölről. A szakasz első példája egy beépített szerepkörből indul ki, majd testreszabja azt további engedélyekkel. Szerkessze az attribútumokat a kívánt Actions NotActions , vagy AssignableScopes attribútumok hozzáadásához, majd mentse a módosításokat új szerepkörként.

Az alábbi példa a Virtuális gépek közreműködője beépített szerepkörével kezdődik, és létrehoz egy egyéni szerepkört Virtual Machine Operator (Virtuálisgép-operátor) névvel. Az új szerepkör hozzáférést biztosít a Microsoft.Compute, a Microsoft.Storage és a Microsoft.Network erőforrás-szolgáltatók összes olvasási művelete számára, valamint hozzáférést biztosít a virtuális gépek indításához, újraindításához és figyelése érdekében. Az egyéni szerepkör két előfizetésben használható.

$role = Get-AzRoleDefinition "Virtual Machine Contributor"
$role.Id = $null
$role.Name = "Virtual Machine Operator"
$role.Description = "Can monitor and restart virtual machines."
$role.Actions.Clear()
$role.Actions.Add("Microsoft.Storage/*/read")
$role.Actions.Add("Microsoft.Network/*/read")
$role.Actions.Add("Microsoft.Compute/*/read")
$role.Actions.Add("Microsoft.Compute/virtualMachines/start/action")
$role.Actions.Add("Microsoft.Compute/virtualMachines/restart/action")
$role.Actions.Add("Microsoft.Authorization/*/read")
$role.Actions.Add("Microsoft.ResourceHealth/availabilityStatuses/read")
$role.Actions.Add("Microsoft.Resources/subscriptions/resourceGroups/read")
$role.Actions.Add("Microsoft.Insights/alertRules/*")
$role.Actions.Add("Microsoft.Support/*")
$role.AssignableScopes.Clear()
$role.AssignableScopes.Add("/subscriptions/00000000-0000-0000-0000-000000000000")
$role.AssignableScopes.Add("/subscriptions/11111111-1111-1111-1111-111111111111")
New-AzRoleDefinition -Role $role

Az alábbi példa egy másik módszer a Virtuálisgép-kezelő egyéni szerepkör létrehozására. Egy új objektum létrehozásával PSRoleDefinition kezdődik. A műveletek a változóban vannak perms megadva, és a tulajdonságra vannak Actions beállítva. A tulajdonság a Virtuális gépek közreműködője beépített szerepkörből való NotActions NotActions beolvasása alapján van beállítva. Mivel a Virtuális gépek közreműködője nem rendelkezik ilyen vonalat, ez a sor nem kötelező, de azt mutatja, hogyan lehet információkat lekérni egy másik NotActions szerepkörből.

$role = [Microsoft.Azure.Commands.Resources.Models.Authorization.PSRoleDefinition]::new()
$role.Name = 'Virtual Machine Operator 2'
$role.Description = 'Can monitor and restart virtual machines.'
$role.IsCustom = $true
$perms = 'Microsoft.Storage/*/read','Microsoft.Network/*/read','Microsoft.Compute/*/read'
$perms += 'Microsoft.Compute/virtualMachines/start/action','Microsoft.Compute/virtualMachines/restart/action'
$perms += 'Microsoft.Authorization/*/read'
$perms += 'Microsoft.ResourceHealth/availabilityStatuses/read'
$perms += 'Microsoft.Resources/subscriptions/resourceGroups/read'
$perms += 'Microsoft.Insights/alertRules/*','Microsoft.Support/*'
$role.Actions = $perms
$role.NotActions = (Get-AzRoleDefinition -Name 'Virtual Machine Contributor').NotActions
$subs = '/subscriptions/00000000-0000-0000-0000-000000000000','/subscriptions/11111111-1111-1111-1111-111111111111'
$role.AssignableScopes = $subs
New-AzRoleDefinition -Role $role

Egyéni szerepkör létrehozása JSON-sablonnal

A JSON-sablon használható az egyéni szerepkör forrásdefiníciójaként. Az alábbi példa egy egyéni szerepkört hoz létre, amely olvasási hozzáférést biztosít a tárolási és számítási erőforrásokhoz, hozzáférést biztosít a támogatáshoz, és hozzáadja ezt a szerepkört két előfizetéshez. Hozzon létre egy új C:\CustomRoles\customrole1.json fájlt az alábbi példával. Az azonosítót a kezdeti szerepkör létrehozásakor kell beállítani, mivel a rendszer null automatikusan létrehoz egy új azonosítót.

{
  "Name": "Custom Role 1",
  "Id": null,
  "IsCustom": true,
  "Description": "Allows for read access to Azure storage and compute resources and access to support",
  "Actions": [
    "Microsoft.Compute/*/read",
    "Microsoft.Storage/*/read",
    "Microsoft.Support/*"
  ],
  "NotActions": [],
  "AssignableScopes": [
    "/subscriptions/00000000-0000-0000-0000-000000000000",
    "/subscriptions/11111111-1111-1111-1111-111111111111"
  ]
}

A szerepkör előfizetéshez való hozzáadásához futtassa a következő PowerShell-parancsot:

New-AzRoleDefinition -InputFile "C:\CustomRoles\customrole1.json"

Egyéni szerepkörök frissítése

Az egyéni szerepkör létrehozásához hasonlóan a meglévő egyéni szerepkört is módosíthatja a objektum vagy PSRoleDefinition egy JSON-sablon használatával.

Egyéni szerepkör frissítése a PSRoleDefinition objektummal

Egyéni szerepkör módosításához először használja a Get-AzRoleDefinition parancsot a szerepkör-definíció lekérése érdekében. Másodszor, a kívánt módosításokat a szerepkör-definíción kell eltenni. Végül a Set-AzRoleDefinition paranccsal mentse a módosított szerepkör-definíciót.

Az alábbi példa hozzáadja Microsoft.Insights/diagnosticSettings/* a műveletet a Virtuálisgép-kezelő egyéni szerepkörhöz.

$role = Get-AzRoleDefinition "Virtual Machine Operator"
$role.Actions.Add("Microsoft.Insights/diagnosticSettings/*")
Set-AzRoleDefinition -Role $role
PS C:\> $role = Get-AzRoleDefinition "Virtual Machine Operator"
PS C:\> $role.Actions.Add("Microsoft.Insights/diagnosticSettings/*")
PS C:\> Set-AzRoleDefinition -Role $role

Name             : Virtual Machine Operator
Id               : 88888888-8888-8888-8888-888888888888
IsCustom         : True
Description      : Can monitor and restart virtual machines.
Actions          : {Microsoft.Storage/*/read, Microsoft.Network/*/read, Microsoft.Compute/*/read,
                   Microsoft.Compute/virtualMachines/start/action...}
NotActions       : {}
AssignableScopes : {/subscriptions/00000000-0000-0000-0000-000000000000,
                   /subscriptions/11111111-1111-1111-1111-111111111111}

Az alábbi példa egy Azure-előfizetést ad hozzá a Virtuálisgép-kezelő egyéni szerepkör hozzárendelhető hatóköreihez.

Get-AzSubscription -SubscriptionName Production3

$role = Get-AzRoleDefinition "Virtual Machine Operator"
$role.AssignableScopes.Add("/subscriptions/22222222-2222-2222-2222-222222222222")
Set-AzRoleDefinition -Role $role
PS C:\> Get-AzSubscription -SubscriptionName Production3

Name     : Production3
Id       : 22222222-2222-2222-2222-222222222222
TenantId : 99999999-9999-9999-9999-999999999999
State    : Enabled

PS C:\> $role = Get-AzRoleDefinition "Virtual Machine Operator"
PS C:\> $role.AssignableScopes.Add("/subscriptions/22222222-2222-2222-2222-222222222222")
PS C:\> Set-AzRoleDefinition -Role $role

Name             : Virtual Machine Operator
Id               : 88888888-8888-8888-8888-888888888888
IsCustom         : True
Description      : Can monitor and restart virtual machines.
Actions          : {Microsoft.Storage/*/read, Microsoft.Network/*/read, Microsoft.Compute/*/read,
                   Microsoft.Compute/virtualMachines/start/action...}
NotActions       : {}
AssignableScopes : {/subscriptions/00000000-0000-0000-0000-000000000000,
                   /subscriptions/11111111-1111-1111-1111-111111111111,
                   /subscriptions/22222222-2222-2222-2222-222222222222}

Az alábbi példa egy felügyeleti csoportot ad hozzá a AssignableScopes Virtuálisgép-kezelő egyéni szerepkörhöz. A felügyeleti csoport hozzáadása jelenleg AssignableScopes előzetes verzióban érhető el.

Get-AzManagementGroup

$role = Get-AzRoleDefinition "Virtual Machine Operator"
$role.AssignableScopes.Add("/providers/Microsoft.Management/managementGroups/{groupId1}")
Set-AzRoleDefinition -Role $role
PS C:\> Get-AzManagementGroup

Id          : /providers/Microsoft.Management/managementGroups/marketing-group
Type        : /providers/Microsoft.Management/managementGroups
Name        : marketing-group
TenantId    : 99999999-9999-9999-9999-999999999999
DisplayName : Marketing group

PS C:\> $role = Get-AzRoleDefinition "Virtual Machine Operator"
PS C:\> $role.AssignableScopes.Add("/providers/Microsoft.Management/managementGroups/marketing-group")
PS C:\> Set-AzRoleDefinition -Role $role

Name             : Virtual Machine Operator
Id               : 88888888-8888-8888-8888-888888888888
IsCustom         : True
Description      : Can monitor and restart virtual machines.
Actions          : {Microsoft.Storage/*/read, Microsoft.Network/*/read, Microsoft.Compute/*/read,
                   Microsoft.Compute/virtualMachines/start/action...}
NotActions       : {}
AssignableScopes : {/subscriptions/00000000-0000-0000-0000-000000000000,
                   /subscriptions/11111111-1111-1111-1111-111111111111,
                   /subscriptions/22222222-2222-2222-2222-222222222222,
                   /providers/Microsoft.Management/managementGroups/marketing-group}

Egyéni szerepkör frissítése JSON-sablonnal

Az előző JSON-sablonnal egyszerűen módosíthatja a meglévő egyéni szerepkört műveletek hozzáadásához vagy eltávolításához. Frissítse a JSON-sablont, és adja hozzá a hálózatra vonatkozó olvasási műveletet az alábbi példában látható módon. A sablonban felsorolt definíciók nincsenek összesítve alkalmazva egy meglévő definícióra, ami azt jelenti, hogy a szerepkör pontosan úgy jelenik meg, ahogy azt a sablonban megadja. Az Id mezőt is frissítenie kell a szerepkör azonosítójával. Ha nem biztos benne, hogy mi ez az érték, ezt az információt a Get-AzRoleDefinition parancsmag használatával kaphatja meg.

{
  "Name": "Custom Role 1",
  "Id": "acce7ded-2559-449d-bcd5-e9604e50bad1",
  "IsCustom": true,
  "Description": "Allows for read access to Azure storage and compute resources and access to support",
  "Actions": [
    "Microsoft.Compute/*/read",
    "Microsoft.Storage/*/read",
    "Microsoft.Network/*/read",
    "Microsoft.Support/*"
  ],
  "NotActions": [],
  "AssignableScopes": [
    "/subscriptions/00000000-0000-0000-0000-000000000000",
    "/subscriptions/11111111-1111-1111-1111-111111111111"
  ]
}

A meglévő szerepkör frissítéséhez futtassa a következő PowerShell-parancsot:

Set-AzRoleDefinition -InputFile "C:\CustomRoles\customrole1.json"

Egyéni szerepkörök törlése

Egyéni szerepkör törléséhez használja a Remove-AzRoleDefinition parancsot.

Az alábbi példa eltávolítja a Virtuálisgép-kezelő egyéni szerepkört.

Get-AzRoleDefinition "Virtual Machine Operator"
Get-AzRoleDefinition "Virtual Machine Operator" | Remove-AzRoleDefinition
PS C:\> Get-AzRoleDefinition "Virtual Machine Operator"

Name             : Virtual Machine Operator
Id               : 88888888-8888-8888-8888-888888888888
IsCustom         : True
Description      : Can monitor and restart virtual machines.
Actions          : {Microsoft.Storage/*/read, Microsoft.Network/*/read, Microsoft.Compute/*/read,
                   Microsoft.Compute/virtualMachines/start/action...}
NotActions       : {}
AssignableScopes : {/subscriptions/00000000-0000-0000-0000-000000000000,
                   /subscriptions/11111111-1111-1111-1111-111111111111}

PS C:\> Get-AzRoleDefinition "Virtual Machine Operator" | Remove-AzRoleDefinition

Confirm
Are you sure you want to remove role definition with name 'Virtual Machine Operator'.
[Y] Yes  [N] No  [S] Suspend  [?] Help (default is "Y"): Y

Következő lépések