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, például a Felhasználói hozzáférés Rendszergazda istrator létrehozásához szükséges engedélyek
- Azure Cloud Shell vagy Azure PowerShell
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 Actions
kívánt vagy kívánt attribútumok NotActions
AssignableScopes
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 NotActions
virtuá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 NotActions
beá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
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.
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
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: