Partilhar via


Criar ou atualizar funções personalizadas do Azure usando o Bicep

Se as funções internas do Azure não atenderem às necessidades específicas da sua organização, você poderá criar suas próprias funções personalizadas. Este artigo descreve como criar ou atualizar uma função personalizada usando o Bicep.

O Bicep é uma linguagem específica do domínio que utiliza sintaxe declarativa para implementar recursos do Azure. Fornece sintaxe concisa, segurança de tipos fiável e suporte para reutilização de código. O Bicep oferece a melhor experiência de criação para suas soluções de infraestrutura como código no Azure.

Para criar uma função personalizada, especifique um nome de função, permissões de função e onde a função pode ser usada. Neste artigo, você cria uma função chamada Função Personalizada - Leitor RG com permissões de recursos que podem ser atribuídas em um escopo de assinatura ou inferior.

Pré-requisitos

Para criar uma função personalizada, você deve ter permissões para criar funções personalizadas, como Administrador de Acesso de Usuário.

Você também deve ter uma assinatura ativa do Azure. Se não tiver uma, pode criar uma conta gratuita antes de começar.

Revise o arquivo Bicep

O arquivo Bicep usado neste artigo é de Modelos de Início Rápido do Azure. O arquivo Bicep tem quatro parâmetros e uma seção de recursos. Os quatro parâmetros são:

  • Matriz de ações com um valor padrão de ["Microsoft.Resources/subscriptions/resourceGroups/read"].
  • Matriz de notActions com um valor padrão vazio.
  • Nome da função com um valor padrão de Custom Role - RG Reader.
  • Descrição da função com um valor padrão de Subscription Level Deployment of a Role Definition.

O escopo no qual essa função personalizada pode ser atribuída é definido para a assinatura atual.

Uma função personalizada requer uma ID exclusiva. O ID pode ser gerado com a função guid(). Como uma função personalizada também requer um nome de exibição exclusivo para o locatário, você pode usar o nome da função como um parâmetro para a guid() função para criar um GUID determinístico. Um GUID determinístico é útil se você precisar atualizar a função personalizada usando o mesmo arquivo 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
    ]
  }
}

O recurso definido no arquivo Bicep é:

Implantar o arquivo Bicep

  1. Salve o arquivo Bicep como main.bicep em seu computador local.

  2. Crie uma variável chamada myActions com as ações para o roleDefinition.

    $myActions='["Microsoft.Resources/subscriptions/resourceGroups/read"]'
    
  3. Implante o arquivo Bicep usando a CLI do Azure ou o Azure PowerShell.

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

Quando a implantação terminar, você verá uma mensagem indicando que a implantação foi bem-sucedida.

Rever os recursos implementados

Use o portal do Azure, a CLI do Azure ou o Azure PowerShell para verificar se a função personalizada foi criada.

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

Atualizar uma função personalizada

Semelhante à criação de uma função personalizada, você pode atualizar uma função personalizada existente usando o Bicep. Para atualizar uma função personalizada, você precisa especificar a função que deseja atualizar. Se você criou anteriormente a função personalizada no Bicep com uma ID de função exclusiva que é determinística, você pode usar o mesmo arquivo Bicep e especificar a função personalizada usando apenas o nome para exibição.

  1. Especifique as ações atualizadas.

    $myActions='["Microsoft.Resources/resources/read","Microsoft.Resources/subscriptions/resourceGroups/read"]'
    
  2. Use a CLI do Azure ou o Azure PowerShell para atualizar a função personalizada.

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

    Nota

    Pode levar vários minutos para que a função personalizada atualizada seja propagada.

Clean up resources (Limpar recursos)

Quando não for mais necessário, use o portal do Azure, a CLI do Azure ou o Azure PowerShell para remover a função personalizada.

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

Próximos passos