Exibir as alterações do RBAC do Azure nos logs de atividades
Às vezes, você precisa de informações sobre alterações do RBAC (controle de acesso baseado em função) do Azure para, por exemplo, fins de auditoria ou solução de problemas. Sempre que alguém altera as atribuições ou definições de função das suas assinaturas, tudo é registrado no Log de Atividades do Azure. Você pode exibir os logs de atividade para ver todas as alterações feitas nos últimos 90 dias no RBAC.
Operações registradas em log
Aqui estão as operações relacionadas ao RBAC do Azure que são registradas no Log de Atividades:
- Criar atribuição de função
- Excluir atribuição de função
- Criar ou atualizar definição de função personalizada
- Excluir definição de função personalizada
Portal do Azure
A maneira mais fácil para começar é exibir os logs de atividades com o portal do Azure. A captura de tela abaixo mostra um exemplo de operações de atribuição de função no Log de Atividades. Também há uma opção para baixar os logs como um arquivo CSV.
Para obter mais informações, clique em uma entrada para abrir o painel Resumo. Clique na guia JSON para acessar um log detalhado.
O log de atividades no portal tem vários filtros. Os do RBAC são os seguintes:
Filter | Valor |
---|---|
Categoria de evento |
|
Operação |
|
Para saber mais sobre os logs de atividade, veja Log de atividade do Azure.
Interpretada uma entrada de log
A saída de log da guia JSON,do Azure PowerShell ou da CLI do Azure pode incluir muitas informações. Abaixo estão algumas das principais propriedades que você deve procurar ao interpretar uma entrada de log. Para descobrir maneiras de filtrar a saída de log com o Azure PowerShell ou a CLI do Azure, confira as seções mais abaixo.
Propriedade | Valores de exemplo | Descrição |
---|---|---|
authorization:action | Microsoft.Authorization/roleAssignments/write | Criar atribuição de função |
Microsoft.Authorization/roleAssignments/delete | Excluir atribuição de função | |
Microsoft.Authorization/roleDefinitions/write | Criar ou atualizar definição de função | |
Microsoft.Authorization/roleDefinitions/delete | Excluir definição de função | |
authorization:scope | /subscriptions/{subscriptionId} /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Authorization/roleAssignments/{roleAssignmentId} |
Escopo da ação |
chamador | admin@example.com {objectId} |
Quem iniciou a operação |
eventTimestamp | 2021-03-01T22:07:41.126243Z | Hora em que a ação ocorreu |
status:value | Iniciado Com sucesso Com falha |
Status da ação |
PowerShell do Azure
Para exibir logs de atividade com o Azure PowerShell, use o comando Get-AzLog.
Esse comando abaixo lista todas as alterações de atribuição de função em uma assinatura nos os últimos sete dias:
Get-AzLog -StartTime (Get-Date).AddDays(-7) | Where-Object {$_.Authorization.Action -like 'Microsoft.Authorization/roleAssignments/*'}
Esse comando abaixo lista todas as definição de atribuição de função em um grupo de recursos nos os últimos sete dias:
Get-AzLog -ResourceGroupName pharma-sales -StartTime (Get-Date).AddDays(-7) | Where-Object {$_.Authorization.Action -like 'Microsoft.Authorization/roleDefinitions/*'}
Filtrar saída de log
A saída de log pode incluir muitas informações. Este comando, além de filtra a saída, lista todas as alterações de atribuição e definição de função feitas nos últimos sete dias em uma assinatura:
Get-AzLog -StartTime (Get-Date).AddDays(-7) | Where-Object {$_.Authorization.Action -like 'Microsoft.Authorization/role*'} | Format-List Caller,EventTimestamp,{$_.Authorization.Action},Properties
Veja o seguinte exemplo da saída de log filtrada ao criar uma atribuição de função:
Caller : admin@example.com
EventTimestamp : 3/1/2021 10:07:42 PM
$_.Authorization.Action : Microsoft.Authorization/roleAssignments/write
Properties :
statusCode : Created
serviceRequestId: {serviceRequestId}
eventCategory : Administrative
entity : /subscriptions/{subscriptionId}/resourceGroups/example-group/providers/Microsoft.Authorization/roleAssignments/{roleAssignmentId}
message : Microsoft.Authorization/roleAssignments/write
hierarchy : {tenantId}/{subscriptionId}
Caller : admin@example.com
EventTimestamp : 3/1/2021 10:07:41 PM
$_.Authorization.Action : Microsoft.Authorization/roleAssignments/write
Properties :
requestbody : {"Id":"{roleAssignmentId}","Properties":{"PrincipalId":"{principalId}","PrincipalType":"User","RoleDefinitionId":"/providers/Microsoft.Authorization/roleDefinitions/fa23ad8b-c56e-40d8-ac0c-ce449e1d2c64","Scope":"/subscriptions/
{subscriptionId}/resourceGroups/example-group"}}
eventCategory : Administrative
entity : /subscriptions/{subscriptionId}/resourceGroups/example-group/providers/Microsoft.Authorization/roleAssignments/{roleAssignmentId}
message : Microsoft.Authorization/roleAssignments/write
hierarchy : {tenantId}/{subscriptionId}
Se você estiver usando uma entidade de serviço para criar atribuições de função, a propriedade do chamador será uma ID de objeto da entidade de serviço. Você pode usar Get-AzADServicePrincipal para obter informações sobre a entidade de serviço.
Caller : {objectId}
EventTimestamp : 3/1/2021 9:43:08 PM
$_.Authorization.Action : Microsoft.Authorization/roleAssignments/write
Properties :
statusCode : Created
serviceRequestId: {serviceRequestId}
eventCategory : Administrative
CLI do Azure
Para exibir logs de atividade com a CLI do Azure, use o comando lista de log de atividades do monitor az.
Este comando lista os logs de atividades em um grupo de recursos desde o dia primeiro até o dia oito de março:
az monitor activity-log list --resource-group example-group --start-time 2021-03-01 --offset 7d
Este comando lista os logs de atividades no provedor de recursos de autorização desde o dia primeiro até o dia oito de março:
az monitor activity-log list --namespace "Microsoft.Authorization" --start-time 2021-03-01 --offset 7d
Filtrar saída de log
A saída de log pode incluir muitas informações. Este comando, além de filtra a saída, lista todas as alterações de atribuição e definição de função feitas nos próximos sete dias em uma assinatura:
az monitor activity-log list --namespace "Microsoft.Authorization" --start-time 2021-03-01 --offset 7d --query '[].{authorization:authorization, caller:caller, eventTimestamp:eventTimestamp, properties:properties}'
Veja o seguinte exemplo da saída de log filtrada ao criar uma atribuição de função:
[
{
"authorization": {
"action": "Microsoft.Authorization/roleAssignments/write",
"role": null,
"scope": "/subscriptions/{subscriptionId}/resourceGroups/example-group/providers/Microsoft.Authorization/roleAssignments/{roleAssignmentId}"
},
"caller": "admin@example.com",
"eventTimestamp": "2021-03-01T22:07:42.456241+00:00",
"properties": {
"entity": "/subscriptions/{subscriptionId}/resourceGroups/example-group/providers/Microsoft.Authorization/roleAssignments/{roleAssignmentId}",
"eventCategory": "Administrative",
"hierarchy": "{tenantId}/{subscriptionId}",
"message": "Microsoft.Authorization/roleAssignments/write",
"serviceRequestId": "{serviceRequestId}",
"statusCode": "Created"
}
},
{
"authorization": {
"action": "Microsoft.Authorization/roleAssignments/write",
"role": null,
"scope": "/subscriptions/{subscriptionId}/resourceGroups/example-group/providers/Microsoft.Authorization/roleAssignments/{roleAssignmentId}"
},
"caller": "admin@example.com",
"eventTimestamp": "2021-03-01T22:07:41.126243+00:00",
"properties": {
"entity": "/subscriptions/{subscriptionId}/resourceGroups/example-group/providers/Microsoft.Authorization/roleAssignments/{roleAssignmentId}",
"eventCategory": "Administrative",
"hierarchy": "{tenantId}/{subscriptionId}",
"message": "Microsoft.Authorization/roleAssignments/write",
"requestbody": "{\"Id\":\"{roleAssignmentId}\",\"Properties\":{\"PrincipalId\":\"{principalId}\",\"PrincipalType\":\"User\",\"RoleDefinitionId\":\"/providers/Microsoft.Authorization/roleDefinitions/fa23ad8b-c56e-40d8-ac0c-ce449e1d2c64\",\"Scope\":\"/subscriptions/{subscriptionId}/resourceGroups/example-group\"}}"
}
}
]
Logs do Azure Monitor
Os logs do Azure Monitor são outra ferramenta que você pode usar para coletar e analisar as alterações do RBAC em todos os recursos do Azure. Os logs do Azure Monitor apresentam os seguintes benefícios:
- Escrever consultas complexas e lógica
- Integrar com alertas, Power BI e outras ferramentas
- Salvar dados por períodos de retenção mais longos
- Referência cruzada com outros logs, como segurança, máquina virtual e personalizados
Aqui estão as etapas básicas para começar:
Configure a Atividade para o workspace.
Veja os Insights dos logs de atividades. Uma maneira rápida de acessar a página de visão geral do Log de Atividades é clicar na opção Logs.
Use a Análise de logs do Azure Monitor para consultar e exibir os logs, se quiser. Para obter mais informações, consulte Introdução às consultas de log no Azure Monitor.
Aqui está uma consulta que retorna novas atribuições de função organizadas por provedor de recursos de destino:
AzureActivity
| where TimeGenerated > ago(60d) and Authorization contains "Microsoft.Authorization/roleAssignments/write" and ActivityStatus == "Succeeded"
| parse ResourceId with * "/providers/" TargetResourceAuthProvider "/" *
| summarize count(), makeset(Caller) by TargetResourceAuthProvider
Aqui está uma consulta que retorna as alterações de atribuição de função exibidas em um gráfico:
AzureActivity
| where TimeGenerated > ago(60d) and Authorization contains "Microsoft.Authorization/roleAssignments"
| summarize count() by bin(TimeGenerated, 1d), OperationName
| render timechart