Ruoli, autorizzazioni e sicurezza in monitoraggio di Azure

Questo articolo illustra come applicare rapidamente un ruolo di monitoraggio predefinito a un utente in Azure o creare un ruolo personalizzato per un utente che necessita di autorizzazioni di monitoraggio limitate. L'articolo illustra quindi le considerazioni sulla sicurezza per le risorse correlate a Monitoraggio di Azure e come limitare l'accesso ai dati in tali risorse.

Ruoli di monitoraggio predefiniti

I ruoli predefiniti di Monitoraggio di Azure consentono di limitare l'accesso alle risorse in una sottoscrizione e allo stesso tempo consentire ai responsabili del monitoraggio dell'infrastruttura di ottenere e configurare i dati necessari. Monitoraggio di Azure offre due ruoli predefiniti: Lettore di monitoraggio e Collaboratore al monitoraggio. I log di Monitoraggio di Azure forniscono anche ruoli predefiniti per la gestione dell'accesso ai dati in un'area di lavoro Log Analytics, come descritto in Gestire l'accesso alle aree di lavoro Log Analytics.

Lettore di monitoraggio

Le persone a cui è assegnato il ruolo di lettore di monitoraggio possono visualizzare tutti i dati di monitoraggio in una sottoscrizione ma non possono modificare alcuna risorsa o impostazione relativa alle risorse di monitoraggio. Questo ruolo è appropriato per gli utenti di un'organizzazione, ad esempio il supporto o gli ingegneri operativi, che devono:

  • Visualizzare i dashboard di monitoraggio nella portale di Azure.
  • Visualizzare le regole di avviso definite negli avvisi di Azure.
  • Eseguire query sulle metriche di Monitoraggio di Azure usando l'API REST di Monitoraggio di Azure, i cmdlet di PowerShell o l'interfaccia della riga di comando multipiattaforma.
  • Eseguire query sul log attività usando il portale, l'API REST di Monitoraggio di Azure, i cmdlet di PowerShell o l'interfaccia della riga di comando multipiattaforma.
  • Visualizzare le impostazioni di diagnostica per una risorsa.
  • Visualizzare il profilo di registro per una sottoscrizione.
  • Visualizzare le impostazioni di scalabilità automatica.
  • Visualizzare impostazioni e attività di avviso.
  • Cercare i dati dell'area di lavoro Log Analytics, inclusi i dati di utilizzo per l'area di lavoro.
  • Recuperare gli schemi di tabella in un'area di lavoro Log Analytics.
  • Recuperare ed eseguire query di log in un'area di lavoro Log Analytics.
  • Accedere ai dati di Application Insights.

Nota

Questo ruolo non concede l'accesso in lettura ai dati di log trasmessi a un hub eventi o archiviati in un account di archiviazione. Per informazioni su come configurare l'accesso a queste risorse, vedere la sezione Considerazioni sulla sicurezza per il monitoraggio dei dati più avanti in questo articolo.

Collaboratore al monitoraggio

Le persone a cui è assegnato il ruolo di Collaboratore al monitoraggio possono visualizzare tutti i dati di monitoraggio in una sottoscrizione. Possono anche creare o modificare le impostazioni di monitoraggio, ma non possono modificare altre risorse.

Questo ruolo è un superset del ruolo Lettore di monitoraggio. È appropriato per i membri del team di monitoraggio o dei provider di servizi gestiti di un'organizzazione che, oltre alle autorizzazioni indicate in precedenza, devono:

  • Visualizzare i dashboard di monitoraggio nel portale e creare dashboard di monitoraggio privati.
  • Creare e modificare le impostazioni di diagnostica per una risorsa. 1
  • Impostare l'attività e le impostazioni delle regole di avviso usando gli avvisi di Azure.
  • Elencare le chiavi condivise per un'area di lavoro Log Analytics.
  • Creare, eliminare ed eseguire ricerche salvate in un'area di lavoro Log Analytics.
  • Creare ed eliminare la configurazione dell'archiviazione dell'area di lavoro per Log Analytics.
  • Creare test Web e componenti per Application Insights. Vedere Risorse, ruoli e controllo di accesso in Application Insights.

1 Per creare o modificare un'impostazione di diagnostica, agli utenti deve essere concessa separatamente anche l'autorizzazione ListKeys per la risorsa di destinazione (account di archiviazione o spazio dei nomi dell'hub eventi).

Nota

Questo ruolo non concede l'accesso in lettura ai dati di log trasmessi a un hub eventi o archiviati in un account di archiviazione. Per informazioni su come configurare l'accesso a queste risorse, vedere la sezione Considerazioni sulla sicurezza per il monitoraggio dei dati più avanti in questo articolo.

Monitorare le autorizzazioni e i ruoli personalizzati di Azure

Se i ruoli predefiniti precedenti non soddisfano le esigenze esatte del team, è possibile creare un ruolo personalizzato di Azure con autorizzazioni più granulari. Le comuni operazioni di controllo degli accessi in base al ruolo di Azure per Monitoraggio di Azure sono elencate qui.

Operazione Descrizione
Microsoft.Insights/ActionGroups/[Read, Write, Delete] Lettura, scrittura o eliminazione di gruppi di azioni.
Microsoft.Insights/ActivityLogAlerts/[Read, Write, Delete] Leggere, scrivere o eliminare avvisi del log attività.
Microsoft.Insights/AlertRules/[Read, Write, Delete] Leggere, scrivere o eliminare regole di avviso (dagli avvisi classici).
Microsoft.Insights/AlertRules/Incidents/Read Elenco degli eventi imprevisti (cronologia della regola di avviso attivata) per le regole di avviso. Questo vale solo per il portale.
Microsoft.Insights/AutoscaleSettings/[Read, Write, Delete] Leggere, scrivere o eliminare le impostazioni di scalabilità automatica.
Microsoft.Insights/DiagnosticSettings/[Read, Write, Delete] Leggere, scrivere o eliminare le impostazioni di diagnostica.
Microsoft.Insights/EventCategories/Read Enumerare tutte le categorie possibili nel log attività. Operazione usata dal portale di Azure.
Microsoft.Insights/eventtypes/digestevents/Read Questa autorizzazione è necessaria per gli utenti che devono accedere al log attività tramite il portale.
Microsoft.Insights/eventtypes/values/Read Elencare gli eventi del log attività (eventi di gestione) in una sottoscrizione. Questa autorizzazione si applica sia all'accesso a livello di codice che al portale al log attività.
Microsoft.Insights/ExtendedDiagnosticSettings/[Read, Write, Delete] Leggere, scrivere o eliminare le impostazioni di diagnostica per i log dei flussi di rete.
Microsoft.Insights/LogDefinitions/Read Questa autorizzazione è necessaria per gli utenti che devono accedere al log attività tramite il portale.
Microsoft.Insights/LogProfiles/[Read, Write, Delete] Leggere, scrivere o eliminare profili di log (streaming del log attività a un hub eventi o a un account di archiviazione).
Microsoft.Insights/MetricAlerts/[Read, Write, Delete] Regole di avviso per le metriche di lettura, scrittura o eliminazione.
Microsoft.Insights/MetricDefinitions/Read Definizioni delle metriche (elenco dei tipi di metriche disponibili per una risorsa).
Microsoft.Insights/Metrics/Read Metriche per una risorsa.
Microsoft.Insights/Register/Action Registrazione del provider di risorse di Monitoraggio di Azure.
Microsoft.Insights/ScheduledQueryRules/[Read, Write, Delete] Leggere, scrivere o eliminare avvisi di ricerca log in Monitoraggio di Azure.

Nota

L'accesso agli avvisi, alle impostazioni di diagnostica e alle metriche per una risorsa richiede che l'utente abbia accesso in lettura al tipo di risorsa e all'ambito della risorsa. Per creare un'impostazione di diagnostica che invia dati a un account di archiviazione o a flussi agli hub eventi, è necessario che l'utente disponga anche dell'autorizzazione ListKeys per la risorsa di destinazione.

Ad esempio, è possibile usare la tabella precedente per creare un ruolo personalizzato di Azure per un lettore di log attività con quanto segue:

$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 

Considerazioni sulla sicurezza per i dati sul monitoraggio

I dati in Monitoraggio di Azure possono essere inviati in un account di archiviazione o trasmessi a un hub eventi, entrambe risorse di Azure per utilizzo generico. Poiché si tratta di risorse di scopo generico, la creazione, l'eliminazione e l'accesso sono operazioni privilegiate e riservate agli amministratori. Poiché questi dati possono contenere informazioni riservate, ad esempio indirizzi IP o nomi utente, usare le procedure seguenti per il monitoraggio delle risorse correlate al monitoraggio per evitare un uso improprio:

  • Usare un account di archiviazione singolo e dedicato per il monitoraggio dei dati. Se è necessario separare i dati di monitoraggio in più account di archiviazione, non condividere mai l'utilizzo di un account di archiviazione tra i dati di monitoraggio e non di monitoraggio. La condivisione dell'utilizzo in questo modo potrebbe inavvertitamente concedere l'accesso ai dati non di monitoraggio alle organizzazioni che devono accedere solo ai dati di monitoraggio. Ad esempio, un'organizzazione di terze parti per le informazioni di sicurezza e la gestione degli eventi devono avere bisogno solo dell'accesso ai dati di monitoraggio.
  • Usare un singolo bus di servizio dedicato o uno spazio dei nomi dell'hub eventi in tutte le impostazioni di diagnostica per lo stesso motivo descritto nel punto precedente.
  • Limitare l'accesso agli account di archiviazione correlati al monitoraggio o agli hub eventi mantenendoli in un gruppo di risorse separato. Usare l'ambito nei ruoli di monitoraggio per limitare l'accesso solo a tale gruppo di risorse.
  • Non concedere mai l'autorizzazione ListKeys per gli account di archiviazione o gli hub eventi nell'ambito della sottoscrizione quando un utente deve accedere solo ai dati di monitoraggio. Assegnare invece queste autorizzazioni all'utente nell'ambito di una risorsa o di un gruppo di risorse (se si dispone di un gruppo di risorse di monitoraggio dedicato).

Quando un utente o un'applicazione deve accedere ai dati di monitoraggio in un account di archiviazione, generare una firma di accesso condiviso nell'account di archiviazione che contiene dati di monitoraggio con accesso in sola lettura a livello di servizio all'archiviazione BLOB. In PowerShell la firma di accesso condiviso dell'account potrebbe essere simile al codice seguente:

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

È quindi possibile assegnare il token all'entità che deve leggere da tale account di archiviazione. L'entità può elencare e leggere da tutti i BLOB in tale account di archiviazione.

In alternativa, se è necessario controllare questa autorizzazione con il controllo degli accessi in base al ruolo di Azure, è possibile concedere a tale entità l'autorizzazione Microsoft.Storage/storageAccounts/listkeys/action per tale account di archiviazione specifico. Questa autorizzazione è necessaria per gli utenti che devono impostare un'impostazione di diagnostica per inviare dati a un account di archiviazione. Ad esempio, è possibile creare il ruolo personalizzato di Azure seguente per un utente o un'applicazione che deve leggere da un solo account di archiviazione:

$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 

Avviso

L'autorizzazione ListKeys consente all'utente di elencare le chiavi dell'account di archiviazione primario e secondario. Queste chiavi concedono all'utente tutte le autorizzazioni firmate , ad esempio lettura, scrittura, creazione di BLOB ed eliminazione di BLOB, in tutti i servizi firmati (BLOB, coda, tabella, file) in tale account di archiviazione. Quando possibile, è consigliabile usare una firma di accesso condiviso dell'account.

È possibile seguire un modello simile con hub eventi, ma prima è necessario creare una regola di autorizzazione dedicata per l'ascolto. Se si vuole concedere l'accesso a un'applicazione che deve solo rimanere in ascolto degli hub eventi correlati al monitoraggio, seguire questa procedura:

  1. Nel portale creare criteri di accesso condiviso negli hub eventi creati per lo streaming dei dati di monitoraggio con solo attestazioni di ascolto. Ad esempio, è possibile chiamarlo "monitoringReadOnly". Se possibile, assegnare la chiave direttamente al consumer e ignorare il passaggio successivo.

  2. Se il consumer deve ottenere la chiave ad hoc, concedere all'utente l'azione ListKeys per l'hub eventi. Questo passaggio è necessario anche per gli utenti che devono impostare un'impostazione di diagnostica o un profilo di log per lo streaming agli hub eventi. Ad esempio, è possibile creare una regola di controllo degli accessi in base al ruolo di 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 
    

Passaggi successivi