Roller, behörigheter och säkerhet i Azure Monitor
Den här artikeln visar hur du tillämpar rollbaserad åtkomstkontroll (RBAC) övervakningsroller för att bevilja eller begränsa åtkomst och diskuterar säkerhetsöverväganden för dina Azure Monitor-relaterade resurser.
Inbyggda övervakningsroller
Rollbaserad åtkomstkontroll i Azure (Azure RBAC) innehåller inbyggda roller för övervakning som du kan tilldela till användare, grupper, tjänstens huvudnamn och hanterade identiteter. De vanligaste rollerna är Övervakningsläsare respektive Övervakningsdeltagare för läs- respektive skrivbehörigheter.
Mer detaljerad information om övervakningsrollerna finns i RBAC-övervakningsroller.
Övervakningsläsare
Personer som har tilldelats övervakningsläsarrollen kan visa alla övervakningsdata i en prenumeration men kan inte ändra någon resurs eller redigera inställningar som rör övervakningsresurser. Den här rollen är lämplig för användare i en organisation, till exempel support- eller drifttekniker, som behöver:
- Visa övervakningsinstrumentpaneler i Azure Portal.
- Visa aviseringsregler som definierats i Azure-aviseringar.
- Fråga Azure Monitor-mått med hjälp av Azure Monitor REST API, PowerShell-cmdletar eller plattformsoberoende CLI.
- Fråga aktivitetsloggen med hjälp av portalen, Azure Monitor REST API, PowerShell-cmdletar eller plattformsoberoende CLI.
- Visa diagnostikinställningarna för en resurs.
- Visa loggprofilen för en prenumeration.
- Visa inställningar för autoskalning.
- Visa aviseringsaktivitet och inställningar.
- Sök efter Log Analytics-arbetsytedata, inklusive användningsdata för arbetsytan.
- Hämta tabellscheman på en Log Analytics-arbetsyta.
- Hämta och köra loggfrågor på en Log Analytics-arbetsyta.
- Få åtkomst till Application Insights-data.
Kommentar
Den här rollen ger inte läsåtkomst till loggdata som har strömmats till en händelsehubb eller lagrats i ett lagringskonto. Information om hur du konfigurerar åtkomst till dessa resurser finns i avsnittet Säkerhetsöverväganden för övervakning av data senare i den här artikeln.
Övervakningsdeltagare
Personer som har tilldelats övervakningsdeltagarrollen kan visa alla övervakningsdata i en prenumeration. De kan också skapa eller ändra övervakningsinställningar, men de kan inte ändra några andra resurser.
Den här rollen är en superuppsättning av rollen Övervakningsläsare. Det är lämpligt för medlemmar i en organisations övervakningsteam eller leverantörer av hanterade tjänster som utöver de behörigheter som nämnts tidigare behöver:
- Visa övervakningsinstrumentpaneler i portalen och skapa egna privata övervakningsinstrumentpaneler.
- Skapa och redigera diagnostikinställningar för en resurs. 1
- Ange aktivitet och inställningar för aviseringsregeln med hjälp av Azure-aviseringar.
- Visa en lista över delade nycklar för en Log Analytics-arbetsyta.
- Skapa, ta bort och köra sparade sökningar på en Log Analytics-arbetsyta.
- Skapa och ta bort lagringskonfigurationen för arbetsytan för Log Analytics.
- Skapa webbtester och komponenter för Application Insights.
1 Om du vill skapa eller redigera en diagnostikinställning måste användarna också beviljas ListKeys-behörighet separat för målresursen (lagringskontot eller händelsehubbens namnområde).
Kommentar
Den här rollen ger inte läsåtkomst till loggdata som har strömmats till en händelsehubb eller lagrats i ett lagringskonto. Information om hur du konfigurerar åtkomst till dessa resurser finns i avsnittet Säkerhetsöverväganden för övervakning av data senare i den här artikeln.
Övervaka behörigheter och anpassade Azure-roller
Om de inbyggda rollerna inte uppfyller teamets behov kan du skapa en anpassad Azure-roll med detaljerade behörigheter.
Du kan till exempel använda detaljerade behörigheter för att skapa en anpassad Azure-roll för en aktivitetsloggläsare med följande PowerShell-skript.
$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
Kommentar
Åtkomst till aviseringar, diagnostikinställningar och mått för en resurs kräver att användaren har läsbehörighet till resurstypen och resursomfånget. Om du skapar en diagnostikinställning som skickar data till ett lagringskonto eller strömmar till händelsehubbar måste användaren också ha ListKeys-behörighet för målresursen.
Tilldela en roll
Kommentar
Vi rekommenderar att du använder Azure Az PowerShell-modulen för att interagera med Azure. Se Installera Azure PowerShell för att komma igång. Information om hur du migrerar till Az PowerShell-modulen finns i artikeln om att migrera Azure PowerShell från AzureRM till Az.
Information om hur du tilldelar en roll finns i Tilldela Azure-roller med Hjälp av Azure PowerShell.
Följande PowerShell-skript tilldelar till exempel en roll till en angiven användare.
Ersätt <RoleId>
med det ROLL-ID för RBAC-övervakning som du vill tilldela.
Ersätt <SubscriptionID>
, <ResourceGroupName>
och <UserPrincipalName>
med lämpliga värden för din miljö.
# 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
Du kan också tilldela Azure-roller med hjälp av Azure Portal.
Viktigt!
- Se till att du har de behörigheter som krävs för att tilldela roller i det angivna omfånget. Du måste ha ägarrättigheter till prenumerationen eller resursgruppen.
- Tilldela åtkomst i resursgruppen eller prenumerationen som resursen tillhör, inte i själva resursen.
PowerShell-fråga för att fastställa rollmedlemskap
Det kan vara bra att generera listor över användare som tillhör en viss roll. För att hjälpa till med att generera dessa typer av listor kan följande exempelfrågor justeras så att de passar dina specifika behov.
Fråga hela prenumerationen om administratörsroller + deltagarroller
(Get-AzRoleAssignment -IncludeClassicAdministrators | Where-Object {$_.RoleDefinitionName -in @('ServiceAdministrator', 'CoAdministrator', 'Owner', 'Contributor') } | Select -ExpandProperty SignInName | Sort-Object -Unique) -Join ", "
Fråga i kontexten för en specifik Application Insights-resurs för ägare och deltagare
$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 ", "
Fråga i kontexten för en specifik resursgrupp för ägare och deltagare
$resourceGroup = "ResourceGroupName"
(Get-AzRoleAssignment -ResourceGroup $resourceGroup | Where-Object {$_.RoleDefinitionName -in @('Owner', 'Contributor') } | Select -ExpandProperty SignInName | Sort-Object -Unique) -Join ", "
Säkerhetsöverväganden vid övervakning av data
Data i Azure Monitor kan skickas i ett lagringskonto eller strömmas till en händelsehubb, som båda är allmänna Azure-resurser. Att vara allmänna resurser, skapa, ta bort och komma åt dem är en privilegierad åtgärd som är reserverad för en administratör. Eftersom dessa data kan innehålla känslig information, till exempel IP-adresser eller användarnamn, använder du följande metoder för övervakningsrelaterade resurser för att förhindra missbruk:
- Använd ett enda, dedikerat lagringskonto för övervakning av data. Om du behöver dela upp övervakningsdata i flera lagringskonton använder du alltid olika lagringskonton för att övervaka data och andra typer av data. Om du delar lagringskonton för övervakning och andra typer av data kan du oavsiktligt ge åtkomst till andra data till organisationer som endast ska ha åtkomst till övervakningsdata. En icke-Microsoft-organisation för säkerhetsinformation och händelsehantering bör till exempel bara behöva åtkomst till övervakningsdata.
- Använd en enda dedikerad servicebuss eller händelsehubbnamnrymd i alla diagnostikinställningar av samma anledning som beskrevs i föregående punkt.
- Begränsa åtkomsten till övervakningsrelaterade lagringskonton eller händelsehubbar genom att behålla dem i en separat resursgrupp. Använd omfånget för dina övervakningsroller för att begränsa åtkomsten till endast den resursgruppen.
- Du bör aldrig ge ListKeys behörighet för lagringskonton eller händelsehubbar i prenumerationsomfånget när en användare bara behöver åtkomst till övervakningsdata. Ge i stället dessa behörigheter till användaren i ett resurs- eller resursgruppsomfång (om du har en dedikerad övervakningsresursgrupp).
Begränsa åtkomsten till övervakningsrelaterade lagringskonton
När en användare eller ett program behöver åtkomst till övervakningsdata i ett lagringskonto genererar du en signatur för delad åtkomst (SAS) på lagringskontot som innehåller övervakningsdata med skrivskyddad åtkomst på tjänstnivå till bloblagring. I PowerShell kan kontots SAS se ut som följande kod:
$context = New-AzStorageContext -ConnectionString "[connection string for your monitoring Storage Account]"
$token = New-AzStorageAccountSASToken -ResourceType Service -Service Blob -Permission "rl" -Context $context
Du kan sedan ge token till den entitet som behöver läsas från lagringskontot. Entiteten kan lista och läsa från alla blobar i lagringskontot.
Om du behöver styra den här behörigheten med Azure RBAC kan du också ge den entiteten behörigheten Microsoft.Storage/storageAccounts/listkeys/action
för det specifika lagringskontot. Den här behörigheten är nödvändig för användare som behöver ange en diagnostikinställning för att skicka data till ett lagringskonto. Du kan till exempel skapa följande anpassade Azure-roll för en användare eller ett program som bara behöver läsa från ett lagringskonto:
$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
Varning
Med behörigheten ListKeys kan användaren lista de primära och sekundära lagringskontonycklarna. Dessa nycklar ger användaren alla signerade behörigheter (till exempel läsa, skriva, skapa blobar och ta bort blobar) för alla signerade tjänster (blob, kö, tabell, fil) i lagringskontot. Vi rekommenderar att du använder ett konto-SAS när det är möjligt.
Begränsa åtkomsten till övervakningsrelaterade händelsehubbar
Du kan följa ett liknande mönster med händelsehubbar, men först måste du skapa en dedikerad auktoriseringsregel för att lyssna. Om du vill bevilja åtkomst till ett program som bara behöver lyssna på övervakningsrelaterade händelsehubbar följer du dessa steg:
I portalen skapar du en princip för delad åtkomst på de händelsehubbar som skapades för strömmande övervakningsdata med endast lyssnande anspråk. Du kan till exempel kalla det "monitoringReadOnly". Ge om möjligt nyckeln direkt till konsumenten och hoppa över nästa steg.
Om konsumenten behöver hämta nyckeln på begäran beviljar du användaren åtgärden ListKeys för händelsehubben. Det här steget är också nödvändigt för användare som behöver ange en diagnostikinställning eller en loggprofil för att strömma till händelsehubbar. Du kan till exempel skapa en Azure RBAC-regel:
$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