Megosztás a következőn keresztül:


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

Ha az Azure beépített szerepkörei nem felelnek meg a szervezet adott igényeinek, létrehozhat saját egyéni szerepköröket. Ez a cikk bemutatja, hogyan listázhatja, hozhat létre, frissíthet vagy törölhet egyéni szerepköröket az Azure PowerShell használatával.

Az egyéni szerepkörök létrehozásáról részletes oktatóanyagot a következő oktatóanyagban talál : Egyéni Azure-szerepkör létrehozása az Azure PowerShell használatával.

Feljegyzés

Javasoljuk, hogy az Azure Az PowerShell modult használja az Azure-ral való interakcióhoz. Első lépésként tekintse meg az Azure PowerShell telepítését ismertető témakört. 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őkre van szükség:

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

A hatókörön belüli hozzárendeléshez elérhető szerepkörök listájához használja a Get-AzRoleDefinition parancsot. Az alábbi példa felsorolja a kijelölt előfizetésben hozzárendelhető összes szerepkört.

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 a kijelölt előfizetésben hozzárendelhető egyéni szerepköröket sorolja fel.

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

Ha a kijelölt előfizetés nem szerepel a AssignableScopes szerepkörben, az egyéni szerepkör nem lesz felsorolva.

Egyéni szerepkördefiníció listázása

Egyéni szerepkördefiníciók listázásához használja a Get-AzRoleDefinition parancsot. Ez ugyanaz a parancs, mint egy beépített szerepkörhöz.

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ör műveleteit 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álásának két módja van: objektum vagy JSON-sablon használatával PSRoleDefinition .

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

Egyéni szerepkörök létrehozásakor fontos ismerni 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érheti ezeket az információkat. Ha például ellenőrizni szeretné a virtuális gépek összes elérhető műveletét, használja ezt a 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, kiindulási pontként használhatja az egyik beépített szerepkört , vagy az alapoktól kezdve. Ebben a szakaszban az első példa egy beépített szerepkörrel kezdődik, majd további engedélyekkel szabja testre. Szerkessze az attribútumokat a Actionskívánt vagy kívánt attribútumok NotActionsAssignableScopes hozzáadásához, majd mentse a módosításokat új szerepkörként.

Az alábbi példa a virtuálisgép-közreműködő beépített szerepkörével kezdődik egy virtuálisgép-üzemeltető nevű egyéni szerepkör létrehozásához. 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űveletéhez, és hozzáférést biztosít a virtuális gépek indításához, újraindításához és figyeléséhez. 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ódszert mutat be a Virtual Machine Operator egyéni szerepkörének létrehozására. Ez egy új PSRoleDefinition objektum létrehozásával kezdődik. A műveletek a perms változóban vannak megadva, és a Actions tulajdonságra vannak állítva. A NotActions tulajdonság úgy van beállítva, hogy beolvassa a NotActionsvirtuálisgép-közreműködő beépített szerepköréből. Mivel a virtuálisgép-közreműködő nem rendelkezik ilyen NotActionsbeállítással, ez a sor nem kötelező, de bemutatja, hogyan kérhetők le információk egy másik 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

Az egyéni szerepkör forrásdefiníciójaként JSON-sablon használható. 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 fájlt C:\CustomRoles\customrole1.json az alábbi példával. Az azonosítót a kezdeti szerepkörlétrehozáskor null kell beállítani, mivel az új azonosító automatikusan létrejön.

{
  "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ésekhez 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 módosíthatja a meglévő egyéni szerepköröket az objektum vagy egy PSRoleDefinition 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 a Get-AzRoleDefinition paranccsal kérje le a szerepkördefiníciót. Másodszor végezze el a kívánt módosításokat a szerepkör-definíción. Végül a Set-AzRoleDefinition paranccsal mentse a módosított szerepkördefiníciót.

Az alábbi példa hozzáadja a műveletet a Microsoft.Insights/diagnosticSettings/*Virtual Machine Operator egyéni szerepköréhez.

$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 AssignableScopes ad hozzá a virtuálisgép-kezelő egyéni szerepköréhez.

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öröket a műveletek hozzáadásához vagy eltávolításához. Frissítse a JSON-sablont, és adja hozzá az olvasási műveletet a hálózatkezeléshez az alábbi példában látható módon. A sablonban felsorolt definíciók nem lesznek kumulatívan alkalmazva egy meglévő definícióra, ami azt jelenti, hogy a szerepkör pontosan a sablonban megadott módon jelenik meg. Az Azonosító mezőt a szerepkör azonosítójával is frissítenie kell. Ha nem biztos abban, hogy mi ez az érték, a Get-AzRoleDefinition parancsmaggal lekérheti ezeket az információkat.

{
  "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

  1. Távolítsa el az egyéni szerepkört használó szerepkör-hozzárendeléseket. További információ: Szerepkör-hozzárendelések keresése egyéni szerepkör törléséhez.

  2. Az 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örét.

    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