Função de diretório e RBAC
Ao usar o Azure AD, muitas pessoas ficam confusas porque não entendem a diferença entre funções de diretório e RBAC (Controle de Acesso Baseado em Recursos), falo por mim e minha dificuldades de forma generalista (beneficios de escrever esse post :p).
As funções de diretório são configurações de privilégios para recursos do Azure AD (usuários, grupos, acesso condicional etc. nas entradas do Azure Active Directory no portal do Azure), enquanto o RBAC está além do escopo do Azure AD, como a Rede do Azure.) É a configuração de permissão usar.
Não vou entrar em detalhes aqui, mas os seguintes blogs da Microsoft são muito fáceis de entender. https://docs.microsoft.com/pt-br/azure/role-based-access-control/overview
Eu quero usar o RBAC de forma mais flexível
RBAC tem funções padrão como co-administrador, proprietário, etc. (atribuições de funções adicionais na tela abaixo)
No entanto, em alguns casos, a função padrão é muito poderosa ou isso seria perfeito se eu pudesse fazer isso com um teste. Acho que existem algumas situações como essa. E ai que entra as funções personalizadas.
Bora no passo a paso por que e complicadinho ><
Etapa 1. Entenda como é a função personalizada
Antes de configurar uma função personalizada, vamos primeiro entender como o RBAC é configurado.
Vamos verificar as funções padrão das configurações de co-administrador e colaborador de rede no Powershell.
Get-AzRoleDefinition | where Name -eq "Contributor"
Name : Contributor
Id : b24988ac-6180-42a0-ab88-20f7382dd24c
IsCustom : False
Description : Lets you manage everything except access to resources.
Actions : {*}
NotActions : {Microsoft.Authorization/*/Delete, Microsoft.Authorization/*/Write, Microsoft.Authorization/elevateAccess/Action, Microsoft.Blueprint/blueprintAssignments/write...}
DataActions : {}
NotDataActions : {}
AssignableScopes : {/}
Get-AzRoleDefinition | where Name -eq "Network Contributor"
Name : Network Contributor
Id : 4d97b98b-1d4f-4787-a291-c67834d212e7
IsCustom : False
Description : Lets you manage networks, but not access to them.
Actions : {Microsoft.Authorization/*/read, Microsoft.Insights/alertRules/*, Microsoft.Network/*, Microsoft.ResourceHealth/availabilityStatuses/read...}
NotActions : {}
DataActions : {}
NotDataActions : {}
AssignableScopes : {/}
Como você pode ver, o escopo definido em Actions/NotActions é a entidade do RBAC.
Para co-administradores, Actions define todos os escopos com [*] e NotActions define escopos que não podem ser manipulados, pois este é um privilégio bastante forte .
Os coautores da rede, por outro lado, são apenas funções configuráveis relacionadas à rede, portanto, Actions define apenas um escopo que pode ser aplicado.
As funções personalizadas, portanto, fornecem configurações de permissão flexíveis, definindo as ações que você deseja (ou não) executar no escopo de Ações (NotActions).
Etapa 2. Definido de fato
Vamos definir uma função personalizada.
Desta vez, criaremos uma função personalizada que atenda aos requisitos a seguir.
- Desejo evitar a visualização de informações relacionadas à assinatura, incluindo informações de faturamento.
- Quero ver/alterar permissão (quero evitar a exclusão).
- Eu quero conceder o acima em unidades de grupos de recursos especificados em vez de recursos individuais.
Aplicar as condições acima para Actions/NotActions dá:
// Adicionado para habilitar operações básicas
Ações: Criação e gerenciamento de todos os tipos de recursos
*
// Adicionado para evitar a visualização de informações de faturamento
Não ações: ler informações de faturamento
Microsoft.Billing / / ler
Microsoft.Commerce / / ler
Microsoft.Consumption / * / ler
// Adicionado para tornar a exclusão impossível
Não ações: Excluir tudo
- / excluir
É uma configuração para impedir a exibição de informações de faturamento, mas aqui me referi ao documento público da Microsoft.
Há uma regra padrão chamada Leitor de cobrança, mas esta função adiciona a seguinte configuração a Ações para ler informações de cobrança, portanto, adicione esta configuração a NotActions. Se você fizer isso, não poderá ver suas informações de cobrança.
Funções integradas para recursos do Azure
https://docs.microsoft.com/en-us/azure/role-based-access-control/built-in-roles
Leitura de informações de faturamento
Billing Reader
Microsoft.Billing / / read
Microsoft.Commerce / / read
Microsoft.Consumption / * / read
Em seguida, crie um arquivo JSON no Bloco de notas.
{
"Name": "Test Custom Role",
"Id": null,
"IsCustom": true,
"Description": "Test Custom Role",
"Actions": [
"*"
],
"NotActions": [
"*/delete",
"Microsoft.Billing/*/read",
"Microsoft.Commerce/*/read",
"Microsoft.Consumption/*/read",
],
"AssignableScopes": [
"/subscriptions/e55e4aa8-889c-4424-a88d-7f5XXXXXXX20/resourceGroups/test"
]
}
Insira qualquer descrição para Nome e Descrição.Defina IsCustome como true e Actions / NotActions de acordo com seus requisitos.
A configuração de assinaturas especifica o ID de assinatura que você está usando. Normalmente, está OK se você definir da seguinte maneira.
"/subscriptions/e55e4aa8-889c-4424-a88d-7f5XXXXXXX20"
Desta vez, há um requisito [desejo conceder na unidade de grupo de recursos especificada, não em recursos individuais], então especifique como segue. É definido como uma função customizada que está disponível apenas no grupo de recursos denominado "teste".
Se desejar disponibilizá-lo para outros grupos de recursos, separe-os com vírgulas para aumentar a definição.
"/subscriptions/e55e4aa8-889c-4424-a88d-7f5XXXXXXX20/resourceGroups/test"
Especifique o arquivo JSON preparado com o Powershell e execute-o.
New-AzRoleDefinition -InputFile "C:\Users\admin\Desktop\customrole.json"
Name : Test Custom Role
Id : e6fabc8a-891a-4ae9-9ffd-21cb7b5798a7
IsCustom : True
Description : Test Custom Role
Actions : {*}
NotActions : {*/delete, Microsoft.Billing/*/read, Microsoft.Commerce/*/read, Microsoft.Consumption/*/read...}
DataActions : {}
NotDataActions : {}
AssignableScopes : {/subscriptions/e55e4aa8-889c-4424-a88d-7f5XXXXXXXX20/resourceGroups/test}
Como atualizar uma função personalizada
Atualizar uma função personalizada é o mesmo que criá-la.
Está tudo bem se você executar o comando Set-azureAzRoleDefinition conforme mostrado abaixo
Set-azureAzRoleDefinition -InputFile "C:\Users\nasekigu\Desktop\test.json"
O conteúdo do JSON é quase o mesmo de quando foi criado.
A única diferença é que você precisa especificar o Id da função personalizada que você criou para "Id".
Em Actions/NotActions, descreva todos os escopos a serem usados após a atualização.
Observe que se você inserir apenas um novo escopo, o escopo anterior à configuração será excluído
{
"Name": "Test",
"Id": "40a919ec-0571-439d-aaec-XXXX510357",
"IsCustom": true,
Vlw flw
Top comments (0)