Создание или обновление пользовательских ролей Azure с помощью Bicep

Если встроенные роли Azure не соответствуют потребностям вашей организации, вы можете создать собственные пользовательские роли. В этой статье описывается, как создать или обновить пользовательскую роль с помощью Bicep.

Bicep — это предметно-ориентированный язык (DSL), который использует декларативный синтаксис для развертывания ресурсов Azure. Он обеспечивает краткий синтаксис, надежную безопасность типов и поддержку повторного использования кода. Bicep предлагает лучшие возможности для разработки решений Azure типа "инфраструктура как код".

Чтобы создать пользовательскую роль, укажите имя роли, разрешения роли и место, где можно использовать эту роль. В этой статье вы создадите роль с именем Custom Role - RG Reader и разрешениями ресурсов, которые могут быть назначены в области подписки или на более низких уровнях.

Необходимые компоненты

Чтобы создать пользовательскую роль, необходимо иметь разрешения на создание пользовательских ролей, таких как администратор доступа пользователей.

Кроме того, у вас должна быть активная подписка Azure. Если у вас нет учетной записи, вы можете создать бесплатную учетную запись перед началом работы.

Проверка BICEP-файла

Файл Bicep, используемый в этой статье, состоит из шаблонов быстрого запуска Azure. Файл Bicep имеет четыре параметра и раздел ресурсов. Вот эти четыре параметра:

  • Массив действий со значением по умолчанию ["Microsoft.Resources/subscriptions/resourceGroups/read"].
  • Массив notActions с пустым значением по умолчанию.
  • Имя роли со значением по умолчанию Custom Role - RG Reader.
  • Описание роли со значением по умолчанию Subscription Level Deployment of a Role Definition.

Область, в которой можно назначить эту пользовательскую роль, назначается текущей подписке.

Для настраиваемой роли требуется уникальный идентификатор. Идентификатор можно создать с помощью функции GUID( ). Так как для пользовательской роли также требуется уникальное отображаемое имя клиента, можно использовать имя роли в качестве параметра для функции для guid() создания детерминированного GUID. Детерминированный GUID полезен, если позже необходимо обновить пользовательскую роль с помощью того же файла 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
    ]
  }
}

В файле Bicep определен следующий ресурс:

Развертывание BICEP-файла

  1. Сохраните файл Bicep с именем main.bicep на локальном компьютере.

  2. Создайте переменную myActions с действиями для roleDefinition.

    $myActions='["Microsoft.Resources/subscriptions/resourceGroups/read"]'
    
  3. Разверните файл Bicep с помощью Azure CLI или Azure PowerShell.

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

После завершения развертывания должно отобразиться сообщение о том, что развертывание успешно выполнено.

Просмотр развернутых ресурсов

Используйте портал Azure, Azure CLI или Azure PowerShell, чтобы убедиться, что созданная пользовательская роль.

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

Обновление пользовательской роли

Аналогично созданию настраиваемой роли, можно обновить существующую пользовательскую роль с помощью Bicep. Чтобы обновить пользовательскую роль, необходимо указать роль, которую требуется обновить. Если вы ранее создали пользовательскую роль в Bicep с уникальным идентификатором роли, детерминированным, можно использовать тот же файл Bicep и указать пользовательскую роль, просто используя отображаемое имя.

  1. Укажите обновленные действия.

    $myActions='["Microsoft.Resources/resources/read","Microsoft.Resources/subscriptions/resourceGroups/read"]'
    
  2. Чтобы обновить пользовательскую роль, используйте Azure CLI или Azure PowerShell.

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

    Примечание.

    Для распространения обновленной настраиваемой роли может потребоваться несколько минут.

Очистка ресурсов

Если вы больше не хотите, используйте портал Azure, Azure CLI или Azure PowerShell, чтобы удалить пользовательскую роль.

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

Следующие шаги