Partilhar via


Exibir logs de atividades para alterações do RBAC do Azure

Às vezes, você precisa de informações sobre alterações de controle de acesso baseado em função do Azure (Azure RBAC), como para fins de auditoria ou solução de problemas. Sempre que alguém faz alterações em atribuições de função ou definições de função em suas assinaturas, as alterações são registradas no Log de Atividades do Azure. Você pode exibir os logs de atividade para ver todas as alterações do RBAC do Azure nos últimos 90 dias.

Operações que são registradas

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 a definição de função personalizada
  • Eliminar definição de função personalizada

Portal do Azure

A forma mais fácil de dar início a este processo é ver os registos de atividades com recurso ao portal do Azure. A captura de tela a seguir mostra um exemplo de operações de atribuição de função no log de atividades. Ele também inclui uma opção para baixar os logs como um arquivo CSV.

Registros de atividades usando o portal - captura de tela

Para obter mais informações, clique em uma entrada para abrir o painel de resumo. Clique na guia JSON para obter um log detalhado.

Logs de atividades usando o portal com o painel de resumo aberto - captura de tela

O registo de atividades no portal tem vários filtros. Aqui estão os filtros relacionados ao RBAC do Azure:

Filtro Value
Categoria do evento
  • Administrativo
Operação
  • Criar atribuição de função
  • Excluir atribuição de função
  • Criar ou atualizar a definição de função personalizada
  • Eliminar definição de função personalizada

Para obter mais informações sobre logs de atividades, consulte Log de atividades do Azure.

Interpretar uma entrada de log

A saída de log da guia JSON, Azure PowerShell ou CLI do Azure pode incluir muitas informações. Aqui estão algumas das principais propriedades a serem procuradas ao tentar interpretar uma entrada de log. Para obter maneiras de filtrar a saída de log usando o Azure PowerShell ou a CLI do Azure, consulte as seções a seguir.

Property Valores de exemplo Description
autorização:ação 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 a definição de função
Microsoft.Authorization/roleDefinitions/delete Excluir definição de função
autorização:âmbito /subscriptions/{subscriptionId}
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Authorization/roleAssignments/{roleAssignmentId}
Âmbito de ação
chamador admin@example.com
{objectId}
Quem iniciou a ação
eventTimestamp 2021-03-01T22:07:41.126243Z Hora em que a ação ocorreu
status:valor Iniciado
Efetuado com êxito
Falha
Estatuto da ação

Azure PowerShell

Para exibir logs de atividades com o Azure PowerShell, use o comando Get-AzLog .

Este comando lista todas as alterações de atribuição de função em uma assinatura nos últimos sete dias:

Get-AzLog -StartTime (Get-Date).AddDays(-7) | Where-Object {$_.Authorization.Action -like 'Microsoft.Authorization/roleAssignments/*'}

Este comando lista todas as alterações de definição de função em um grupo de recursos nos ú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 do log pode incluir muitas informações. Este comando lista todas as alterações de atribuição e definição de função em uma assinatura nos últimos sete dias e filtra a saída:

Get-AzLog -StartTime (Get-Date).AddDays(-7) | Where-Object {$_.Authorization.Action -like 'Microsoft.Authorization/role*'} | Format-List Caller,EventTimestamp,{$_.Authorization.Action},Properties

A seguir mostra um 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 Caller será uma ID de objeto principal 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 atividades com a CLI do Azure, use o comando az monitor activity-log list .

Este comando lista os logs de atividade em um grupo de recursos a partir de 1º de março, aguardando sete dias:

az monitor activity-log list --resource-group example-group --start-time 2021-03-01 --offset 7d

Este comando lista os logs de atividade para o provedor de recursos de Autorização a partir de 1º de março, aguardando sete dias:

az monitor activity-log list --namespace "Microsoft.Authorization" --start-time 2021-03-01 --offset 7d

Filtrar saída de log

A saída do log pode incluir muitas informações. Este comando lista todas as alterações de atribuição e definição de função em uma assinatura que aguarda sete dias e filtra a saída:

az monitor activity-log list --namespace "Microsoft.Authorization" --start-time 2021-03-01 --offset 7d --query '[].{authorization:authorization, caller:caller, eventTimestamp:eventTimestamp, properties:properties}'

A seguir mostra um 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\"}}"
    }
  }
]

Registos 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 do Azure para todos os seus recursos do Azure. Os logs do Azure Monitor têm os seguintes benefícios:

  • Escrever consultas complexas e lógica
  • Integre com alertas, Power BI e outras ferramentas
  • Guarde dados por períodos de retenção mais longos
  • Referência cruzada com outros logs, como segurança, máquina virtual e personalizado

Aqui estão as etapas básicas para começar:

  1. Crie um espaço de trabalho do Log Analytics.

  2. Configure a atividade para seu espaço de trabalho.

  3. Veja os registos de atividade Insights. Uma maneira rápida de navegar até a página Visão geral do log de atividades é clicar na opção Logs .

    Opção de logs do Azure Monitor no portal

  4. Opcionalmente, use o Azure Monitor Log Analytics para consultar e exibir os logs. 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 pelo 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

Registros de atividades usando o portal do Advanced Analytics - captura de tela

Próximos passos