Rollen, Berechtigungen und Sicherheit in Azure Monitor
In diesem Artikel wird gezeigt, wie Sie rollenbasierte Zugriffssteuerungsrollen (RBAC) anwenden, um Zugriff zu gewähren oder einzuschränken, und erläutert Sicherheitsaspekte für Ihre Azure Monitor-bezogenen Ressourcen.
Integrierte Überwachungsrollen
Azure rollenbasierte Zugriffskontrolle (Azure RBAC) bietet integrierte Rollen für die Überwachung, die Sie Benutzern, Gruppen, Dienstprinzipalen und verwalteten Identitäten zuweisen können. Die gängigsten Rollen sind Monitoring Reader und Monitoring Contributor für Lese- und Schreibberechtigungen.
Ausführlichere Informationen zu den Überwachungsrollen finden Sie unter RBAC-Überwachungsrollen.
Überwachungsleser
Personen, denen die Überwachungsleserrolle zugewiesen wird, können alle Überwachungsdaten in einem Abonnement anzeigen, aber keine Ressourcen ändern oder Einstellungen im Zusammenhang mit der Ressourcenüberwachung bearbeiten. Diese Rolle eignet sich für Benutzer in einer Organisation, beispielsweise Support- oder Betriebstechniker, die folgende Aufgaben erfüllen müssen:
- Anzeigen von Überwachungsdashboards im Azure-Portal
- Anzeigen von in Azure-Warnungen definierten Warnungsregeln
- Abfragen von Azure Monitor-Metriken über die Azure Monitor-REST-API, PowerShell-Cmdlets oder die plattformübergreifende Befehlszeilenschnittstelle
- Abfragen des Aktivitätsprotokolls über das Portal, die Azure Monitor-REST-API, PowerShell-cmdlets oder die plattformübergreifende CLI.
- Anzeigen der Diagnoseeinstellungen für eine Ressource.
- Anzeigen des Protokollprofils für ein Abonnement.
- Anzeigen von Einstellungen für die automatische Skalierung.
- Anzeigen von Warnaktivitäten und -einstellungen.
- Durchsuchen von Arbeitsbereichsdaten von Log Analytics, einschließlich Nutzungsdaten für den Arbeitsbereich
- Abrufen der Tabellenschemas in einem Log Analytics-Arbeitsbereich
- Abrufen und Ausführen von Protokollabfragen in einem Log Analytics-Arbeitsbereich
- Zugreifen auf Application Insights-Daten
Hinweis
Diese Rolle erteilt keinen Lesezugriff für Protokolldaten, die an einen Event Hub gestreamt oder in einem Speicherkonto gespeichert wurden. Informationen zum Konfigurieren des Zugriffs auf diese Ressourcen finden Sie im Abschnitt Sicherheitsaspekte für Überwachungsdaten weiter unten in diesem Artikel.
Überwachungsmitwirkender
Personen, denen die Rolle „Überwachungsmitwirkender“ zugewiesen wurde, können alle Überwachungsdaten in einem Abonnement anzeigen. Sie können auch Überwachungseinstellungen erstellen oder ändern, aber keine anderen Ressourcen ändern.
Diese Rolle ist der Rolle „Überwachungsleser“ übergeordnet. Sie ist für Mitglieder des Überwachungsteams einer Organisation oder für verwaltete Dienstanbieter geeignet, die zusätzlich zu den oben genannten Berechtigungen zu Folgendem in der Lage sein müssen:
- Anzeigen von Überwachungsdashboards im Portal und Erstellen ihrer eigenen privaten Überwachungsdashboards.
- Erstellen und Bearbeiten von Diagnoseeinstellungen für eine Ressource 1
- Festlegen der Aktivität und der Einstellungen für Warnungsregeln über Azure-Warnungen;
- Auflisten der freigegebenen Schlüssel für einen Log Analytics-Arbeitsbereich.
- Erstellen, Löschen und Ausführen gespeicherter Suchvorgänge in einem Log Analytics-Arbeitsbereich.
- Erstellen und Löschen der Speicherkonfiguration des Arbeitsbereichs für Log Analytics.
- Erstellen von Webtests und Komponenten für Application Insights.
1 Benutzer*innen muss außerdem gesondert die Berechtigung „ListKeys“ in der Zielressource (Speicherkonto oder Event Hub-Namespace) erteilt werden, damit sie eine Diagnoseeinstellung erstellen oder bearbeiten können.
Hinweis
Diese Rolle erteilt keinen Lesezugriff für Protokolldaten, die an einen Event Hub gestreamt oder in einem Speicherkonto gespeichert wurden. Informationen zum Konfigurieren des Zugriffs auf diese Ressourcen finden Sie im Abschnitt Sicherheitsaspekte für Überwachungsdaten weiter unten in diesem Artikel.
Überwachen von Berechtigungen und benutzerdefinierte Azure-Rollen
Wenn die integrierten Rollen den Anforderungen Ihres Teams nicht genügen, können Sie eine benutzerdefinierte Azure-Rolle mit detaillierten Berechtigungen erstellen.
Sie können z. B. granulare Berechtigungen verwenden, um eine benutzerdefinierte Azure-Rolle für einen Aktivitätsprotokollleser mit dem folgenden PowerShell-Skript zu erstellen.
$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
Hinweis
Für den Zugriff auf Warnungen, Diagnoseeinstellungen und Metriken für eine Ressource ist es erforderlich, dass der Benutzer für den Ressourcentyp und den Bereich der jeweiligen Ressource über Lesezugriff verfügt. Um eine Diagnoseeinstellung erstellen zu können, die Daten an ein Speicherkonto sendet oder an Event Hubs streamt, müssen Benutzer*innen auch über die Berechtigung „ListKeys“ in der Zielressource verfügen
Zuweisen einer Rolle
Hinweis
Es wird empfohlen, das Azure Az PowerShell-Modul für die Interaktion mit Azure zu verwenden. Informationen zu den ersten Schritten finden Sie unter Installieren von Azure PowerShell. Informationen zum Migrieren zum Az PowerShell-Modul finden Sie unter Migrieren von Azure PowerShell von AzureRM zum Az-Modul.
Informationen zum Zuweisen einer Rolle finden Sie unter Zuweisen von Azure-Rollen mithilfe von Azure PowerShell.
Beispielsweise weist das folgende PowerShell-Skript einem angegebenen Benutzer eine Rolle zu.
Ersetzen Sie die <RoleId>
Rollen-ID der RBAC-Überwachung , die Sie zuweisen möchten.
Ersetzen Sie <SubscriptionID>
, <ResourceGroupName>
und <UserPrincipalName>
durch die entsprechenden Werte für Ihre Umgebung.
# 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
Sie können Azure-Rollen auch über das Azure-Portal zuweisen.
Wichtig
- Stellen Sie sicher, dass Sie über die erforderlichen Berechtigungen zum Zuweisen von Rollen im angegebenen Bereich verfügen. Sie benötigen Eigentümerrechte für das Abonnement oder die Ressourcengruppe.
- Weisen Sie den Zugriff in der Ressourcengruppe oder dem Abonnement zu, zu dem Ihre Ressource gehört, nicht in der Ressource selbst.
PowerShell-Abfrage zum Bestimmen der Rollenmitgliedschaft
Es kann hilfreich sein, Listen von Benutzern zu generieren, die zu einer bestimmten Rolle gehören. Zur Unterstützung beim Generieren dieser Listen können die folgenden Beispielabfragen an Ihre speziellen Anforderungen angepasst werden.
Abfrage des gesamten Abonnements nach den Rollen „Administrator“ und „Mitwirkender“
(Get-AzRoleAssignment -IncludeClassicAdministrators | Where-Object {$_.RoleDefinitionName -in @('ServiceAdministrator', 'CoAdministrator', 'Owner', 'Contributor') } | Select -ExpandProperty SignInName | Sort-Object -Unique) -Join ", "
Abfrage innerhalb des Kontexts einer bestimmten Application Insights-Ressource für Besitzer und Mitwirkende
$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 ", "
Abfrage innerhalb des Kontexts einer bestimmten Ressourcengruppe für Besitzer und Mitwirkende
$resourceGroup = "ResourceGroupName"
(Get-AzRoleAssignment -ResourceGroup $resourceGroup | Where-Object {$_.RoleDefinitionName -in @('Owner', 'Contributor') } | Select -ExpandProperty SignInName | Sort-Object -Unique) -Join ", "
Sicherheitsaspekte für Überwachungsdaten
Daten in Azure Monitor können an ein Speicherkonto gesendet oder an einen Event Hub gestreamt werden – dies sind beides Azure-Ressourcen für allgemeine Zwecke. Da es sich um Allzweckressourcen handelt, ist das Erstellen, Löschen und Zugreifen auf sie eine privilegierte Operation, die einem Administrator vorbehalten ist. Da diese Daten vertrauliche Informationen wie IP-Adressen oder Benutzernamen enthalten können, halten Sie sich an die folgenden Best Practices bei überwachungsbezogenen Ressourcen, um Missbrauch zu verhindern:
- Verwenden Sie ein einzelnes dediziertes Speicherkonto für die Überwachung von Daten. Wenn Sie Überwachungsdaten in mehrere Speicherkonten trennen müssen, verwenden Sie immer unterschiedliche Speicherkonten für die Überwachung von Daten und anderen Datentypen. Wenn Sie Speicherkonten für die Überwachung und andere Arten von Daten freigeben, können Sie versehentlich Zugriff auf andere Daten für Organisationen gewähren, die nur auf Überwachungsdaten zugreifen sollten. Beispielsweise sollte eine Organisation, die nicht zu Microsoft gehört, für die Verwaltung von Sicherheitsinformationen und Ereignissen nur Zugriff auf Überwachungsdaten benötigen.
- Verwenden Sie aus demselben Grund, der unter dem vorherigen Punkt beschrieben wurde, einen einzelnen dedizierten Service Bus- oder Event Hub-Namespace über alle Diagnoseeinstellungen hinweg.
- Beschränken Sie den Zugriff auf überwachungsbezogene Speicherkonten oder Event Hubs, indem Sie sie in einer separaten Ressourcengruppe aufbewahren. Verwenden Sie den Gültigkeitsbereich für Ihre Überwachungsrollen, um den Zugriff ausschließlich auf diese Ressourcengruppe zu beschränken.
- Sie sollten die Berechtigung ListKeys weder für Speicherkonten noch für Event Hubs im Abonnementumfang gewähren, wenn ein Benutzer nur Zugriff auf Überwachungsdaten benötigt. Erteilen Sie dem Benutzer diese Berechtigungen stattdessen im Ressourcen- oder Ressourcengruppenbereich (wenn Sie eine dedizierte Überwachungsressourcengruppe verwenden).
Einschränken des Zugriffs auf überwachungsbezogene Speicherkonten
Wenn ein Benutzer oder eine Anwendung Zugriff auf Überwachungsdaten in einem Speicherkonto benötigt, sollten Sie für das Speicherkonto, das Überwachungsdaten enthält, mit schreibgeschütztem Zugriff auf Dienstebene für Blobspeicher eine Shared Access Signature (SAS) generieren. In PowerShell könnte die Konto-SAS wie der folgende Code aussehen:
$context = New-AzStorageContext -ConnectionString "[connection string for your monitoring Storage Account]"
$token = New-AzStorageAccountSASToken -ResourceType Service -Service Blob -Permission "rl" -Context $context
Sie können dann das Token an die Entität weitergeben, die aus diesem Speicherkonto lesen muss. Die Entität kann alle Blobs in diesem Speicherkonto auflisten und aus diesen lesen.
Wenn Sie diese Berechtigung mit Azure RBAC steuern müssen, können Sie dieser Entität alternativ die Berechtigung Microsoft.Storage/storageAccounts/listkeys/action
für das jeweilige Speicherkonto erteilen. Diese Berechtigung ist für Benutzer*innen erforderlich, die eine Diagnoseeinstellung festlegen und Daten an ein Speicherkonto senden müssen. Beispielsweise können Sie die folgende benutzerdefinierte Azure-Rolle für Benutzer oder Anwendungen erstellen, die nur aus einem einzigen Speicherkonto lesen müssen:
$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
Warnung
Die ListKeys-Berechtigung ermöglicht dem Benutzer das Auflisten des primären und des sekundären Speicherkontoschlüssels. Diese Schlüssel gewähren dem Benutzer alle signierten Berechtigungen (z. B. Lesen, Schreiben, Erstellen von Blobs und Löschen von Blobs) für alle signierten Dienste (Blob, Warteschlange, Tabelle, Datei) in diesem Speicherkonto. Wir empfehlen, wenn möglich eine Konto-SAS zu verwenden.
Einschränken des Zugriffs auf überwachungsbezogene Event Hubs
Sie können ein ähnliches Muster mit Event Hubs befolgen, aber zuerst müssen Sie eine dedizierte Autorisierungsregel für das Lauschen erstellen. Wenn Sie einer Anwendung Zugriff gewähren möchten, die nur auf überwachungsbezogene Event Hubs lauschen muss, folgen Sie den folgenden Schritten:
Erstellen Sie im Portal eine SAS-Richtlinie für die Event Hubs, die für das Streamen von Überwachungsdaten mit ausschließlich Lauschansprüchen erstellt haben. Sie können es beispielsweise "monitoringReadOnly" nennen. Geben Sie diesen Schlüssel nach Möglichkeit direkt an den Verbraucher und überspringen Sie den nächsten Schritt.
Wenn der Verbraucher den Schlüssel bei Bedarf abrufen muss, gewähren Sie dem Benutzer die Aktion ListKeys für diesen Ereignis-Hub. Dieser Schritt ist auch für Benutzer notwendig, die eine Diagnoseeinstellung oder ein Protokollprofil für das Streamen in Event Hubs einstellen müssen. Beispielsweise können Sie eine Azure RBAC-Regel erstellen:
$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