Tutorial: Creación de un rol personalizado de Azure mediante Azure PowerShell
Si los roles integrados de Azure no cumplen las necesidades específicas de su organización, puede crear los suyos propios. En este tutorial, creará un rol personalizado llamado Reader Support Tickets (Lector de incidencias de soporte) con Azure PowerShell. El rol personalizado permite al usuario ver todo lo relativo al plano de control de una suscripción y también abrir incidencias de soporte técnico.
En este tutorial, aprenderá a:
- Crear un rol personalizado
- Lista de roles personalizados
- Actualización de un rol personalizado
- Eliminación de un rol personalizado
Si no tiene una suscripción a Azure, cree una cuenta gratuita antes de empezar.
Nota
Se recomienda usar el módulo Azure Az de PowerShell para interactuar con Azure. Para empezar, consulte Instalación de Azure PowerShell. Para más información sobre cómo migrar al módulo Az de PowerShell, consulte Migración de Azure PowerShell de AzureRM a Az.
Prerrequisitos
Para realizar este tutorial, necesita:
- Permisos para crear roles personalizados, como Administrador de acceso de usuario
- Azure Cloud Shell o Azure PowerShell
Inicio de sesión en Azure PowerShell
Inicie sesión en Azure PowerShell.
Crear un rol personalizado
El modo más sencillo de crear un rol personalizado es tomar como partida un rol integrado, editarlo y, a continuación, crear un nuevo rol.
En PowerShell, use el comando Get-AzProviderOperation para obtener la lista de operaciones del proveedor de recursos Microsoft.Support. Resulta útil conocer las operaciones que están disponibles para crear los permisos. También puede ver una lista de todas las operaciones en Operaciones del proveedor de recursos de Azure.
Get-AzProviderOperation "Microsoft.Support/*" | FT Operation, Description -AutoSize
Operation Description --------- ----------- Microsoft.Support/register/action Registers to Support Resource Provider Microsoft.Support/supportTickets/read Gets Support Ticket details (including status, severity, contact ... Microsoft.Support/supportTickets/write Creates or Updates a Support Ticket. You can create a Support Tic...
Use el comando Get-AzRoleDefinition para obtener la salida del rol Lector en formato JSON.
Get-AzRoleDefinition -Name "Reader" | ConvertTo-Json | Out-File C:\CustomRoles\ReaderSupportRole.json
Abra el archivo ReaderSupportRole.json en un editor.
A continuación, se muestra la salida JSON. Para información sobre las distintas propiedades, consulte Roles personalizados de Azure.
{ "Name": "Reader", "Id": "acdd72a7-3385-48ef-bd42-f606fba81ae7", "IsCustom": false, "Description": "Lets you view everything, but not make any changes.", "Actions": [ "*/read" ], "NotActions": [], "DataActions": [], "NotDataActions": [], "AssignableScopes": [ "/" ] }
Edite el archivo JSON para agregar la acción
"Microsoft.Support/*"
a la propiedadActions
. Asegúrese de incluir una coma después de la acción de lectura. Esta acción permitirá al usuario crear incidencias de soporte técnico.Obtenga el identificador de la suscripción mediante el comando Get AzSubscription.
Get-AzSubscription
En
AssignableScopes
, agregue el identificador de suscripción con el formato siguiente:"/subscriptions/00000000-0000-0000-0000-000000000000"
Debe agregar identificadores de suscripción explícitos; en caso contrario, no podrá importar el rol en su suscripción.
Elimine la línea de la propiedad
Id
y cambie la propiedadIsCustom
atrue
.Cambie el valor de las propiedades
Name
yDescription
por "Reader Support Tickets" (Lector de incidencias de soporte) y "Ver todo el contenido de la suscripción y también abrir incidencias de soporte técnico".El archivo JSON debe ser similar al siguiente:
{ "Name": "Reader Support Tickets", "IsCustom": true, "Description": "View everything in the subscription and also open support tickets.", "Actions": [ "*/read", "Microsoft.Support/*" ], "NotActions": [], "DataActions": [], "NotDataActions": [], "AssignableScopes": [ "/subscriptions/00000000-0000-0000-0000-000000000000" ] }
Para crear el rol personalizado, use el comando New-AzRoleDefinition y especifique el archivo de definición de rol JSON.
New-AzRoleDefinition -InputFile "C:\CustomRoles\ReaderSupportRole.json"
Name : Reader Support Tickets Id : 22222222-2222-2222-2222-222222222222 IsCustom : True Description : View everything in the subscription and also open support tickets. Actions : {*/read, Microsoft.Support/*} NotActions : {} DataActions : {} NotDataActions : {} AssignableScopes : {/subscriptions/00000000-0000-0000-0000-000000000000}
El nuevo rol personalizado ya está disponible en Azure Portal y se puede asignar a los usuarios, los grupos y las entidades de servicio igual que los roles integrados.
Lista de roles personalizados
Para enumerar todos los roles personalizados, use el comando Get-AzRoleDefinition.
Get-AzRoleDefinition | ? {$_.IsCustom -eq $true} | FT Name, IsCustom
Name IsCustom ---- -------- Reader Support Tickets True
También puede ver el rol personalizado en Azure Portal.
Actualización de un rol personalizado
Para actualizar el rol personalizado, puede actualizar el archivo JSON o usar el objeto PSRoleDefinition
.
Para actualizar el archivo JSON, use el comando Get-AzRoleDefinition para obtener la salida del rol personalizado en formato JSON.
Get-AzRoleDefinition -Name "Reader Support Tickets" | ConvertTo-Json | Out-File C:\CustomRoles\ReaderSupportRole2.json
Abra el archivo en un editor.
En
Actions
, agregue la acción para crear y administrar implementaciones de grupos de recursos"Microsoft.Resources/deployments/*"
.El archivo JSON actualizado debe ser similar al siguiente:
{ "Name": "Reader Support Tickets", "Id": "22222222-2222-2222-2222-222222222222", "IsCustom": true, "Description": "View everything in the subscription and also open support tickets.", "Actions": [ "*/read", "Microsoft.Support/*", "Microsoft.Resources/deployments/*" ], "NotActions": [], "DataActions": [], "NotDataActions": [], "AssignableScopes": [ "/subscriptions/00000000-0000-0000-0000-000000000000" ] }
Para actualizar el rol personalizado, use el comando Set-AzRoleDefinition y especifique el archivo JSON actualizado.
Set-AzRoleDefinition -InputFile "C:\CustomRoles\ReaderSupportRole2.json"
Name : Reader Support Tickets Id : 22222222-2222-2222-2222-222222222222 IsCustom : True Description : View everything in the subscription and also open support tickets. Actions : {*/read, Microsoft.Support/*, Microsoft.Resources/deployments/*} NotActions : {} DataActions : {} NotDataActions : {} AssignableScopes : {/subscriptions/00000000-0000-0000-0000-000000000000}
Para usar el objeto
PSRoleDefintion
para actualizar el rol personalizado, use primero el comando Get-AzRoleDefinition para obtener el rol.$role = Get-AzRoleDefinition "Reader Support Tickets"
Llame al método
Add
para agregar la acción de lectura de la configuración de diagnóstico.$role.Actions.Add("Microsoft.Insights/diagnosticSettings/*/read")
Use el comando Set-AzRoleDefinition para actualizar el rol.
Set-AzRoleDefinition -Role $role
Name : Reader Support Tickets Id : 22222222-2222-2222-2222-222222222222 IsCustom : True Description : View everything in the subscription and also open support tickets. Actions : {*/read, Microsoft.Support/*, Microsoft.Resources/deployments/*, Microsoft.Insights/diagnosticSettings/*/read} NotActions : {} DataActions : {} NotDataActions : {} AssignableScopes : {/subscriptions/00000000-0000-0000-0000-000000000000}
Eliminación de un rol personalizado
Use el comando Get-AzRoleDefinition para obtener el identificador del rol personalizado.
Get-AzRoleDefinition "Reader Support Tickets"
Use el comando Remove-AzRoleDefinition y especifique el identificador del rol para eliminar el rol personalizado.
Remove-AzRoleDefinition -Id "22222222-2222-2222-2222-222222222222"
Confirm Are you sure you want to remove role definition with id '22222222-2222-2222-2222-222222222222'. [Y] Yes [N] No [S] Suspend [?] Help (default is "Y"):
Cuando se le pida confirmación, escriba Y.