Funções, permissões e segurança no Azure Monitor

Este artigo mostra como aplicar rapidamente uma função de monitoramento interna a um usuário no Azure ou criar sua própria função personalizada para um usuário que precisa de permissões de monitoramento limitadas. Em seguida, o artigo discute considerações de segurança para seus recursos relacionados ao Azure Monitor e como você pode limitar o acesso aos dados nesses recursos.

Funções de monitorização incorporadas

As funções incorporadas no Azure Monitor ajudam a limitar o acesso aos recursos numa subscrição, o que permite à equipa que monitoriza as infraestruturas obter e configurar os dados de que necessitam. O Azure Monitor disponibiliza duas funções prontas a utilizar: Leitor de Monitorização e Contribuidor de Monitorização. Os Logs do Azure Monitor também fornecem funções internas para gerenciar o acesso a dados em um espaço de trabalho do Log Analytics, conforme descrito em Gerenciar acesso aos espaços de trabalho do Log Analytics.

Leitor de Monitorização

As pessoas atribuídas à função Leitor de Monitorização podem ver todos os dados de monitorização numa subscrição, mas não podem modificar nenhum recurso nem editar as definições relacionadas com os recursos de monitorização. Essa função é apropriada para usuários em uma organização, como engenheiros de suporte ou de operações, que precisam:

  • Exiba painéis de monitoramento no portal do Azure.
  • Exiba as regras de alerta definidas nos alertas do Azure.
  • Consulte as métricas do Azure Monitor usando a API REST do Azure Monitor, cmdlets do PowerShell ou CLI de plataforma cruzada.
  • Consulte o log de atividades usando o portal, a API REST do Azure Monitor, cmdlets do PowerShell ou CLI de plataforma cruzada.
  • Exiba as configurações de diagnóstico de um recurso.
  • Exiba o perfil de log de uma assinatura.
  • Veja as configurações de dimensionamento automático.
  • Visualize a atividade e as configurações de alerta.
  • Pesquisar dados do espaço de trabalho do Log Analytics, incluindo dados de uso do espaço de trabalho.
  • Recupere os esquemas de tabela em um espaço de trabalho do Log Analytics.
  • Recupere e execute consultas de log em um espaço de trabalho do Log Analytics.
  • Acesse os dados do Application Insights.

Nota

Essa função não dá acesso de leitura aos dados de log que foram transmitidos para um hub de eventos ou armazenados em uma conta de armazenamento. Para obter informações sobre como configurar o acesso a esses recursos, consulte a seção Considerações de segurança para monitoramento de dados mais adiante neste artigo.

Contribuidor de Monitorização

As pessoas atribuídas à função de Contribuidor de Monitorização podem ver todos os dados de monitorização numa subscrição. Também podem criar ou modificar as definições de monitorização, mas não podem modificar outros recursos.

Essa função é um superconjunto da função Leitor de monitoramento. É apropriado para membros da equipe de monitoramento de uma organização ou provedores de serviços gerenciados que, além das permissões mencionadas anteriormente, precisam:

  • Visualize painéis de monitoramento no portal e crie seus próprios painéis de monitoramento privados.
  • Crie e edite configurações de diagnóstico para um recurso. 1
  • Defina a atividade e as configurações da regra de alerta usando alertas do Azure.
  • Liste chaves compartilhadas para um espaço de trabalho do Log Analytics.
  • Crie, exclua e execute pesquisas salvas em um espaço de trabalho do Log Analytics.
  • Crie e exclua a configuração de armazenamento do espaço de trabalho para o Log Analytics.
  • Crie testes da Web e componentes para o Application Insights. Consulte Recursos, funções e controle de acesso no Application Insights.

1 Para criar ou editar uma configuração de diagnóstico, os usuários também devem receber separadamente a permissão ListKeys no recurso de destino (conta de armazenamento ou namespace do hub de eventos).

Nota

Essa função não dá acesso de leitura aos dados de log que foram transmitidos para um hub de eventos ou armazenados em uma conta de armazenamento. Para obter informações sobre como configurar o acesso a esses recursos, consulte a seção Considerações de segurança para monitoramento de dados mais adiante neste artigo.

Monitorar permissões e funções personalizadas do Azure

Se as funções internas anteriores não atenderem às necessidades exatas da sua equipe, você poderá criar uma função personalizada do Azure com permissões mais granulares. As operações comuns de controle de acesso baseado em função (RBAC) do Azure para o Azure Monitor estão listadas aqui.

Operation Description
Microsoft.Insights/ActionGroups/[Ler, Gravar, Excluir] Leia, escreva ou elimine grupos de ações.
Microsoft.Insights/ActivityLogAlerts/[Ler, Gravar, Excluir] Leia, escreva ou elimine alertas do registo de atividades.
Microsoft.Insights/AlertRules/[Ler, Escrever, Excluir] Leia, escreva ou elimine regras de alerta (de alertas clássicos).
Microsoft.Insights/AlertRules/Incidentes/Leitura Listar incidentes (histórico da regra de alerta que está sendo acionada) para regras de alerta. Isto aplica-se apenas ao portal.
Microsoft.Insights/AutoscaleSettings/[Ler, Gravar, Excluir] Leia, escreva ou elimine definições de dimensionamento automático.
Microsoft.Insights/DiagnosticSettings/[Ler, Gravar, Excluir] Leia, escreva ou elimine definições de diagnóstico.
Microsoft.Insights/EventCategories/Read Enumere todas as categorias possíveis no log de atividades. Usado pelo portal do Azure.
Microsoft.Insights/eventtypes/digestevents/Read Esta permissão é necessária para os utilizadores que necessitam de aceder ao registo de atividades através do portal.
Microsoft.Insights/eventtypes/values/Read Listar eventos do log de atividades (eventos de gerenciamento) em uma assinatura. Essa permissão se aplica ao acesso programático e ao portal ao registro de atividades.
Microsoft.Insights/ExtendedDiagnosticSettings/[Ler, Gravar, Excluir] Leia, escreva ou elimine definições de diagnóstico para registos de fluxo de rede.
Microsoft.Insights/LogDefinitions/Leitura Esta permissão é necessária para os utilizadores que necessitam de aceder ao registo de atividades através do portal.
Microsoft.Insights/LogProfiles/[Ler, Gravar, Excluir] Leia, escreva ou elimine perfis de registo (streaming do registo de atividades para um hub de eventos ou conta de armazenamento).
Microsoft.Insights/MetricAlerts/[Ler, gravar, excluir] Leia, escreva ou elimine regras de alerta de métricas.
Microsoft.Insights/MetricDefinitions/Read Ler definições de métricas (lista de tipos de métricas disponíveis para um recurso).
Microsoft.Insights/Métricas/Leitura Ler as métricas de um recurso.
Microsoft.Insights/Register/Action Registre o provedor de recursos do Azure Monitor.
Microsoft.Insights/ScheduledQueryRules/[Ler, Gravar, Excluir] Leia, escreva ou elimine alertas de pesquisa de registo no Azure Monitor.

Nota

O acesso a alertas, configurações de diagnóstico e métricas para um recurso requer que o usuário tenha acesso de leitura ao tipo de recurso e ao escopo desse recurso. Criar uma configuração de diagnóstico que envia dados para uma conta de armazenamento ou fluxos para hubs de eventos requer que o usuário também tenha permissão ListKeys no recurso de destino.

Por exemplo, você pode usar a tabela anterior para criar uma função personalizada do Azure para um Leitor de Log de Atividades com o seguinte:

$role = Get-AzRoleDefinition "Reader"
$role.Id = $null
$role.Name = "Activity Log Reader"
$role.Description = "Can view activity logs."
$role.Actions.Clear()
$role.Actions.Add("Microsoft.Insights/eventtypes/*")
$role.AssignableScopes.Clear()
$role.AssignableScopes.Add("/subscriptions/mySubscription")
New-AzRoleDefinition -Role $role 

Considerações de segurança para monitorização de dados

Os dados no Azure Monitor podem ser enviados em uma conta de armazenamento ou transmitidos para um hub de eventos, ambos recursos de uso geral do Azure. Como esses são recursos de uso geral, criá-los, excluí-los e acessá-los é uma operação privilegiada reservada a um administrador. Como esses dados podem conter informações confidenciais, como endereços IP ou nomes de usuário, use as seguintes práticas para monitorar recursos relacionados a evitar uso indevido:

  • Use uma única conta de armazenamento dedicada para monitorar dados. Se você precisar separar os dados de monitoramento em várias contas de armazenamento, nunca compartilhe o uso de uma conta de armazenamento entre dados de monitoramento e não monitoramento. Compartilhar o uso dessa maneira pode, inadvertidamente, dar acesso a dados não monitorados para organizações que precisam acessar apenas dados de monitoramento. Por exemplo, uma organização terceirizada para gerenciamento de informações de segurança e eventos deve precisar apenas de acesso aos dados de monitoramento.
  • Use um único barramento de serviço dedicado ou namespace de hub de eventos em todas as configurações de diagnóstico pelo mesmo motivo descrito no ponto anterior.
  • Limite o acesso a contas de armazenamento relacionadas ao monitoramento ou hubs de eventos mantendo-os em um grupo de recursos separado. Use o escopo em suas funções de monitoramento para limitar o acesso apenas a esse grupo de recursos.
  • Nunca conceda a permissão ListKeys para contas de armazenamento ou hubs de eventos no escopo da assinatura quando um usuário precisar apenas de acesso aos dados de monitoramento. Em vez disso, conceda essas permissões ao usuário em um escopo de recurso ou grupo de recursos (se você tiver um grupo de recursos de monitoramento dedicado).

Quando um usuário ou aplicativo precisar acessar dados de monitoramento em uma conta de armazenamento, gere uma assinatura de acesso compartilhado (SAS) na conta de armazenamento que contenha dados de monitoramento com acesso somente leitura de nível de serviço ao armazenamento de blobs. No PowerShell, a conta SAS pode se parecer com o seguinte código:

$context = New-AzStorageContext -ConnectionString "[connection string for your monitoring Storage Account]"
$token = New-AzStorageAccountSASToken -ResourceType Service -Service Blob -Permission "rl" -Context $context

Em seguida, você pode fornecer o token para a entidade que precisa ler a partir dessa conta de armazenamento. A entidade pode listar e ler todos os blobs nessa conta de armazenamento.

Como alternativa, se você precisar controlar essa permissão com o RBAC do Azure, poderá conceder a essa entidade a Microsoft.Storage/storageAccounts/listkeys/action permissão nessa conta de armazenamento específica. Essa permissão é necessária para usuários que precisam definir uma configuração de diagnóstico para enviar dados para uma conta de armazenamento. Por exemplo, você pode criar a seguinte função personalizada do Azure para um usuário ou aplicativo que precisa ler de apenas uma conta de armazenamento:

$role = Get-AzRoleDefinition "Reader"
$role.Id = $null
$role.Name = "Monitoring Storage Account Reader"
$role.Description = "Can get the storage account keys for a monitoring storage account."
$role.Actions.Clear()
$role.Actions.Add("Microsoft.Storage/storageAccounts/listkeys/action")
$role.Actions.Add("Microsoft.Storage/storageAccounts/Read")
$role.AssignableScopes.Clear()
$role.AssignableScopes.Add("/subscriptions/mySubscription/resourceGroups/myResourceGroup/providers/Microsoft.Storage/storageAccounts/myMonitoringStorageAccount")
New-AzRoleDefinition -Role $role 

Aviso

A permissão ListKeys permite que o usuário liste as chaves de conta de armazenamento primária e secundária. Essas chaves concedem ao usuário todas as permissões assinadas (como ler, gravar, criar blobs e excluir blobs) em todos os serviços assinados (blob, fila, tabela, arquivo) nessa conta de armazenamento. Recomendamos o uso de uma conta SAS sempre que possível.

Você pode seguir um padrão semelhante com hubs de eventos, mas primeiro precisa criar uma regra de autorização dedicada para ouvir. Se você quiser conceder acesso a um aplicativo que só precisa ouvir hubs de eventos relacionados ao monitoramento, siga estas etapas:

  1. No portal, crie uma política de acesso compartilhado nos hubs de eventos que foram criados para transmitir dados de monitoramento apenas com declarações de escuta. Por exemplo, você pode chamá-lo de "monitoringReadOnly". Se possível, dê essa chave diretamente ao consumidor e pule a próxima etapa.

  2. Se o consumidor precisar obter a chave ad hoc, conceda ao usuário a ação ListKeys para esse hub de eventos. Esta etapa também é necessária para usuários que precisam definir uma configuração de diagnóstico ou um perfil de log para transmitir para hubs de eventos. Por exemplo, você pode criar uma regra do RBAC do Azure:

    $role = Get-AzRoleDefinition "Reader"
    $role.Id = $null
    $role.Name = "Monitoring Event Hub Listener"
    $role.Description = "Can get the key to listen to an event hub streaming monitoring data."
    $role.Actions.Clear()
    $role.Actions.Add("Microsoft.EventHub/namespaces/authorizationrules/listkeys/action")
    $role.Actions.Add("Microsoft.EventHub/namespaces/Read")
    $role.AssignableScopes.Clear()
    $role.AssignableScopes.Add("/subscriptions/mySubscription/resourceGroups/myResourceGroup/providers/Microsoft.ServiceBus/namespaces/mySBNameSpace")
    New-AzRoleDefinition -Role $role 
    

Próximos passos