Share via


Ruoli, autorizzazioni e sicurezza in monitoraggio di Azure

Questo articolo illustra come applicare i ruoli di monitoraggio del controllo degli accessi in base al ruolo per concedere o limitare l'accesso e illustra le considerazioni sulla sicurezza per le risorse correlate a Monitoraggio di Azure.

Ruoli di monitoraggio predefiniti

Il controllo degli accessi in base al ruolo di Azure offre ruoli predefiniti per il monitoraggio che è possibile assegnare a utenti, gruppi, entità servizio e identità gestite. I ruoli più comuni sono Il lettore di monitoraggio e collaboratore al monitoraggio rispettivamente per le autorizzazioni di lettura e scrittura.

Per informazioni più dettagliate sui ruoli di monitoraggio, vedere Ruoli di monitoraggio del controllo degli accessi in base al ruolo.

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.

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 non soddisfano le esigenze del team, è possibile creare un ruolo personalizzato di Azure con autorizzazioni granulari.

Ad esempio, è possibile usare autorizzazioni granulari per creare un ruolo personalizzato di Azure per un lettore di log attività con lo script di PowerShell seguente.

$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 

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.

Assegnare un ruolo

Nota

È consigliabile usare il modulo Azure Az PowerShell per interagire con Azure. Per iniziare, vedere Installare Azure PowerShell. Per informazioni su come eseguire la migrazione al modulo AZ PowerShell, vedere Eseguire la migrazione di Azure PowerShell da AzureRM ad Az.

Per assegnare un ruolo, vedere Assegnare ruoli di Azure con Azure PowerShell.

Ad esempio, lo script di PowerShell seguente assegna un ruolo a un utente specificato.

Sostituire <RoleId> con l'ID ruolo di monitoraggio degli accessi in base al ruolo da assegnare.

Sostituire <SubscriptionID>, <ResourceGroupName>e <UserPrincipalName> con i valori appropriati per l'ambiente.

# Define variables
$SubscriptionId = "<SubscriptionID>"
$ResourceGroupName = "<ResourceGroupName>"
$UserPrincipalName = "<UserPrincipalName>"  # The UPN of the user to whom you want to assign the role
$RoleId = "<RoleId>"  # The ID of the role

# Get the user object
$User = Get-AzADUser -UserPrincipalName $UserPrincipalName

# Define the scope (e.g., subscription or resource group level)
$Scope = "/subscriptions/$SubscriptionId/resourceGroups/$ResourceGroupName"

# Assign the role
New-AzRoleAssignment -ObjectId $User.Id -RoleDefinitionId $RoleId -Scope $Scope

È anche possibile assegnare ruoli di Azure usando il portale di Azure.

Importante

  • Assicurarsi di disporre delle autorizzazioni necessarie per assegnare i ruoli nell'ambito specificato. È necessario disporre dei diritti di proprietario per la sottoscrizione o il gruppo di risorse.
  • Assegnare l'accesso nel gruppo di risorse o nella sottoscrizione a cui appartiene la risorsa, non nella risorsa stessa.

Query di PowerShell per determinare l'appartenenza al ruolo

Può essere utile generare elenchi di utenti che appartengono a un determinato ruolo. Per facilitare la generazione di questi tipi di elenchi, è possibile modificare le query di esempio seguenti in base alle esigenze specifiche.

Query dell'intera sottoscrizione per i ruoli di Amministratore e Collaboratore

(Get-AzRoleAssignment -IncludeClassicAdministrators | Where-Object {$_.RoleDefinitionName -in @('ServiceAdministrator', 'CoAdministrator', 'Owner', 'Contributor') } | Select -ExpandProperty SignInName | Sort-Object -Unique) -Join ", "

Query all'interno del contesto di una risorsa specifica di Application Insights per proprietari e collaboratori

$resourceGroup = "ResourceGroupName"
$resourceName = "AppInsightsName"
$resourceType = "microsoft.insights/components"
(Get-AzRoleAssignment -ResourceGroup $resourceGroup -ResourceType $resourceType -ResourceName $resourceName | Where-Object {$_.RoleDefinitionName -in @('Owner', 'Contributor') } | Select -ExpandProperty SignInName | Sort-Object -Unique) -Join ", "

Query all'interno del contesto di un gruppo di risorse specifico per proprietari e collaboratori

$resourceGroup = "ResourceGroupName"
(Get-AzRoleAssignment -ResourceGroup $resourceGroup | Where-Object {$_.RoleDefinitionName -in @('Owner', 'Contributor') } | Select -ExpandProperty SignInName | Sort-Object -Unique) -Join ", "

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. Essendo risorse per utilizzo generico, creazione, eliminazione e accesso è un'operazione con privilegi riservata a un amministratore. 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, usare sempre account di archiviazione diversi per il monitoraggio dei dati e altri tipi di dati. Se si condividono gli account di archiviazione per il monitoraggio e altri tipi di dati, è possibile concedere inavvertitamente l'accesso ad altri dati alle organizzazioni che devono accedere solo ai dati di monitoraggio. Ad esempio, un'organizzazione non Microsoft 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.
  • È consigliabile 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 su richiesta, 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