Compartir a través de


Creación o actualización de roles personalizados de Azure mediante Bicep

Si los roles integrados de Azure no cumplen las necesidades específicas de su organización, puede crear los suyos propios. En este artículo se describe cómo crear o actualizar un rol personalizado mediante Bicep.

Bicep es un lenguaje específico de dominio (DSL) que usa una sintaxis declarativa para implementar recursos de Azure. Brinda sintaxis concisa, seguridad de tipos confiable y compatibilidad con la reutilización de código. Bicep ofrece la mejor experiencia de creación para sus soluciones de infraestructura como código en Azure.

Para crear un rol personalizado, especifique un nombre de rol, sus permisos y dónde se puede usar el rol. En este artículo, se creará un rol denominado Rol personalizado: lector RG con permisos de recursos que se pueden asignar en un ámbito de suscripción o inferior.

Requisitos previos

Si desea crear un rol personalizado, debe tener permisos para crear roles personalizados, como administrador de acceso de usuario.

Debe contar con una suscripción de Azure activa. Si no tiene ninguna, puede crear una cuenta gratuita antes de empezar.

Revisión del archivo de Bicep

El archivo de Bicep usado en este artículo forma parte de las plantillas de inicio rápido de Azure. El archivo de Bicep tiene cuatro parámetros y una sección de recursos. Los cuatro parámetros son:

  • Matriz de acciones con un valor predeterminado de ["Microsoft.Resources/subscriptions/resourceGroups/read"].
  • Matriz de notActions con un valor predeterminado vacío.
  • Nombre del rol con un valor predeterminado de Custom Role - RG Reader.
  • Descripción del rol con un valor predeterminado de Subscription Level Deployment of a Role Definition.

El ámbito en el que se puede asignar este rol personalizado se establece en la suscripción actual.

Un rol personalizado requiere un identificador único. El identificador se puede generar con la función guid(). Dado que un rol personalizado también requiere un nombre para mostrar único para el inquilino, puede usar el nombre de rol como parámetro para la función guid() para crear un GUID determinista. Un GUID determinista es útil si más adelante necesita actualizar el rol personalizado mediante el mismo archivo de Bicep.

targetScope = 'subscription'

@description('Array of actions for the roleDefinition')
param actions array = [
  'Microsoft.Resources/subscriptions/resourceGroups/read'
]

@description('Array of notActions for the roleDefinition')
param notActions array = []

@description('Friendly name of the role definition')
param roleName string = 'Custom Role - RG Reader'

@description('Detailed description of the role definition')
param roleDescription string = 'Subscription Level Deployment of a Role Definition'

var roleDefName = guid(roleName)

resource roleDef 'Microsoft.Authorization/roleDefinitions@2022-04-01' = {
  name: roleDefName
  properties: {
    roleName: roleName
    description: roleDescription
    type: 'customRole'
    permissions: [
      {
        actions: actions
        notActions: notActions
      }
    ]
    assignableScopes: [
      subscription().id
    ]
  }
}

El recurso definido en el archivo de Bicep es el siguiente:

Implementación del archivo de Bicep

  1. Guarde el archivo de Bicep como main.bicep en el equipo local.

  2. Cree una variable denominada myActions con las acciones para roleDefinition.

    $myActions='["Microsoft.Resources/subscriptions/resourceGroups/read"]'
    
  3. Implemente el archivo de Bicep mediante la CLI de Azure o Azure PowerShell.

    az deployment sub create --location eastus --name customRole --template-file ./main.bicep --parameters actions=$myActions
    

Una vez finalizada la implementación, debería mostrarse un mensaje indicando que la implementación se realizó correctamente.

Revisión de los recursos implementados

Utilice Azure Portal, la CLI de Azure o Azure PowerShell para comprobar que se ha creado el rol personalizado.

az role definition list --name "Custom Role - RG Reader"

Actualización de un rol personalizado

De forma similar a la creación de un rol personalizado, puede actualizar un rol personalizado existente mediante Bicep. Para actualizar un rol personalizado, tiene que especificar el rol que quiere actualizar. Si creó previamente el rol personalizado en Bicep con un identificador de rol único que es determinista, puede usar el mismo archivo de Bicep y especificar el rol personalizado simplemente con el nombre para mostrar.

  1. Especifique las acciones actualizadas.

    $myActions='["Microsoft.Resources/resources/read","Microsoft.Resources/subscriptions/resourceGroups/read"]'
    
  2. Use la CLI de Azure o Azure PowerShell para actualizar el rol personalizado.

    az deployment sub create --location eastus --name customrole --template-file ./main.bicep --parameters actions=$myActions roleName="Custom Role - RG Reader"
    

    Nota:

    El rol personalizado actualizado puede tardar varios minutos en propagarse.

Limpieza de recursos

Cuando ya no lo necesite, use Azure Portal, la CLI de Azure o Azure PowerShell para quitar el rol personalizado.

az role definition delete --name "Custom Role - RG Reader"

Pasos siguientes