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

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

Funções internas de monitoramento

As funções internas do Azure Monitor ajudam a limitar o acesso aos recursos em uma assinatura, ao mesmo tempo permitem que a equipe de monitoramento de infraestrutura obtenha e configure os dados necessários. O Azure Monitor fornece duas funções integradas: um Leitor de monitoramento e um Colaborador de monitoramento. Os Logs do Azure Monitor também fornecem funções internas para gerenciar o acesso a dados em um workspace do Log Analytics, conforme descrito em Gerenciar o acesso a workspaces do Log Analytics.

Leitor de monitoramento

Pessoas atribuídas à função de Leitor de monitoramento podem exibir todos os dados de monitoramento em uma assinatura, mas não podem modificar nenhum recurso nem editar nenhuma configuração relacionados ao monitoramento de recursos. Essa função é apropriada para os usuários em uma organização, como engenheiros de suporte ou de operações, que necessitam de:

  • Ver os painéis de monitoramento no portal do Azure.
  • Exibir regras de alerta definidas nos Alertas do Azure.
  • Consultar métricas do Azure Monitor usando a API REST do Azure Monitor, os cmdlets do PowerShell ou a CLI de plataforma cruzada.
  • Consultar o log de Atividades usando o portal, a API REST do Azure Monitor, os cmdlets do PowerShell ou a CLI de plataforma cruzada.
  • Exibir as configurações de diagnóstico para um recurso.
  • Exibir o perfil de log para uma assinatura.
  • Exibir as configurações de autoescala.
  • Exibir as configurações e a atividade do alerta.
  • Pesquisar dados do espaço de trabalho do Log Analytics, incluindo dados de uso do espaço de trabalho.
  • Recuperar os esquemas de tabela em um workspace do Log Analytics.
  • Recuperar e executar consultas de log em um workspace do Log Analytics.
  • Acessar dados do Application Insights.

Observação

Essa função não concede 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 monitorar dados mais adiante neste artigo.

Colaborador de monitoramento

As pessoas designadas à função de Colaborador de Monitoramento podem exibir todos os dados de monitoramento em uma subscrição. Elas também podem criar ou modificar configurações de monitoramento, mas não podem modificar nenhum outro recurso.

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 de:

  • Exibir painéis de monitoramentos no portal e criar seus próprios painéis de monitoramentos privados.
  • Criar e editar as configurações de diagnóstico para um recurso. 1
  • Defina a atividade das regras de alerta e as configurações por meio dos alertas do Azure.
  • Listar chaves compartilhadas para um espaço de trabalho do Log Analytics.
  • Criar, excluir e executar pesquisas salvas em um workspace do Log Analytics.
  • Criar e excluir a configuração de armazenamento do workspace do Log Analytics.
  • Criar testes Web e componentes do Application Insights. Confira 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, uma permissão de ListKeys no recurso de destino (namespace do hub de eventos ou conta de armazenamento).

Observação

Essa função não concede 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 monitorar dados mais adiante neste artigo.

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

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

Operação Descrição
Microsoft.Insights/ActionGroups/[Read, Write, Delete] Grupos de ações de leitura, gravação ou exclusão.
Microsoft.Insights/ActivityLogAlerts/[Read, Write, Delete] Alertas de log de Atividades de leitura, gravação ou exclusão.
Microsoft.Insights/AlertRules/[Read, Write, Delete] Regras de alerta de leitura, gravação ou exclusão (de alertas clássicos).
Microsoft.Insights/AlertRules/Incidents/Read Listar incidentes (histórico da regra de alerta disparado) para regras de alerta. Isso se aplica somente ao portal.
Microsoft.Insights/AutoscaleSettings/[Read, Write, Delete] Configurações de dimensionamento automático de leitura, gravação ou exclusão.
Microsoft.Insights/DiagnosticSettings/[Read, Write, Delete] Configurações de diagnóstico de leitura, gravação ou exclusão.
Microsoft.Insights/EventCategories/Read Enumere todas as categorias possíveis no log de Atividades. Usado pelo portal do Azure.
Microsoft.Insights/eventtypes/digestevents/Read Essa permissão é necessária para usuários que precisam de acesso ao log de Atividade por meio do portal.
Microsoft.Insights/eventtypes/values/Read Listar eventos do log de Atividades (eventos de gerenciamento) em um assinatura. Essa permissão se aplica ao acesso programático e ao portal para o log de Atividades.
Microsoft.Insights/ExtendedDiagnosticSettings/[Read, Write, Delete] Configurações de diagnóstico de leitura, gravação ou exclusão para logs de fluxo de rede.
Microsoft.Insights/LogDefinitions/Read Essa permissão é necessária para usuários que precisam de acesso ao log de Atividade por meio do portal.
Microsoft.Insights/LogProfiles/[Read, Write, Delete] Perfis de log de leitura, gravação ou exclusão (log de Atividades de streaming para hub de eventos ou conta de armazenamento).
Microsoft.Insights/MetricAlerts/[Read, Write, Delete] Ler, gravar ou excluir regras de alerta de métrica.
Microsoft.Insights/MetricDefinitions/Read Ler definições de métricas (lista de tipos de métrica disponíveis para um recurso).
Microsoft.Insights/Metrics/Read Ler as métricas para um recurso.
Microsoft.Insights/Register/Action Registrar o provedor de recursos do Azure Monitor.
Microsoft.Insights/ScheduledQueryRules/[Read, Write, Delete] Ler, gravar ou excluir alertas de pesquisa de log no Azure Monitor.

Observação

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 do recurso. Criar uma configuração de diagnóstico que envia dados para uma conta de armazenamento ou transmissão para hubs de eventos requer que o usuário também tenha uma 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 dados de monitoramento

Dados no Azure Monitor podem ser enviados em uma conta de armazenamento ou transmitidos ao hub de eventos, que são recursos do Azure para fins gerais. Como esses são recursos de finalidade geral, criar, excluir e acessá-los são operações privilegiadas, reservadas para o 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 para evitar uso indevido:

  • Use uma conta de armazenamento única e dedicada para os dados de monitoramento. Se você precisar separar 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 de monitoramento. O compartilhamento de uso dessa forma pode inadvertidamente dar acesso a dados que não são de monitoramento para organizações que precisam de acesso apenas a dados de monitoramento. Por exemplo, uma organização de terceiros para o gerenciamento de eventos e informações de segurança deve precisar apenas de acesso aos dados de monitoramento.
  • Use um namespace único e dedicado de Barramento de Serviço ou 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 ou hubs de eventos relacionados a monitoramento mantendo-os em um grupo de recursos separado. Use o escopo em suas funções de monitoramento para limitar o acesso somente a esse grupo de recursos.
  • Não conceda a permissão de ListKeys para contas de armazenamento ou hubs de eventos no escopo de assinatura quando um usuário precisa de acesso apenas aos dados de monitoramento. Em vez disso, conceda essas permissões ao usuário a um escopo de recurso ou grupo de recursos (se você tiver um grupo de recursos de monitoramento dedicado).

Quando um usuário ou aplicativo precisa de acesso aos dados de monitoramento em uma conta de armazenamento, gere uma SAS (assinatura de acesso compartilhado) na conta de armazenamento que contém os dados de monitoramento com acesso somente leitura no nível de serviço para armazenamento de blobs. No PowerShell, a SAS da conta 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 dar o token à entidade que precisa ler a partir da conta de armazenamento. A entidade pode listar e ler de todos os blobs nessa conta de armazenamento.

Como alternativa, se você precisar controlar essa permissão com o Azure RBAC, poderá conceder a essa entidade a permissão Microsoft.Storage/storageAccounts/listkeys/action nessa conta de armazenamento específica. Essa permissão é necessária para os usuários que precisam definir uma configuração de diagnóstico para enviar dados a uma conta de armazenamento. Por exemplo, você pode criar a seguinte função personalizada do Azure para um usuário ou aplicativo que precisa da leitura 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 de ListKeys permite que o usuário liste as chaves primárias e secundárias da conta de armazenamento. 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) na conta de armazenamento. Recomendamos usar uma SAS da conta, quando possível.

Você pode seguir um padrão semelhante com hubs de eventos, mas primeiro você precisa criar uma regra de autorização dedicada para escuta. Se você deseja conceder acesso a um aplicativo que precisa apenas ouvir os 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 com somente declarações de escuta. Por exemplo, você pode chamá-lo de "monitoringReadOnly". Se possível, forneça 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 o hub de eventos. Essa etapa é necessária também para os usuários que precisam definir uma configuração de diagnóstico ou um perfil de log para transmitir aos hubs de eventos. Por exemplo, você pode criar uma regra do Azure RBAC:

    $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óximas etapas