Role, uprawnienia i zabezpieczenia w usłudze Azure Monitor
W tym artykule pokazano, jak zastosować role monitorowania kontroli dostępu opartej na rolach (RBAC) w celu udzielenia lub ograniczenia dostępu oraz omówiono zagadnienia dotyczące zabezpieczeń zasobów związanych z usługą Azure Monitor.
Wbudowane role monitorowania
Kontrola dostępu oparta na rolach platformy Azure (RBAC) platformy Azure udostępnia wbudowane role do monitorowania, które można przypisać do użytkowników, grup, jednostek usługi i tożsamości zarządzanych. Najczęściej używane role to odpowiednio uprawnienia Czytelnik monitorowania i Współautor monitorowania dla uprawnień do odczytu i zapisu.
Aby uzyskać bardziej szczegółowe informacje na temat ról monitorowania, zobacz Role monitorowania RBAC.
Czytelnik monitorowania
Osoby przypisane do roli Czytelnik monitorowania mogą wyświetlać wszystkie dane monitorowania w subskrypcji, ale nie mogą modyfikować zasobów ani edytować ustawień związanych z zasobami monitorowania. Ta rola jest odpowiednia dla użytkowników w organizacji, takich jak inżynierowie pomocy technicznej lub operacyjnej, którzy muszą:
- Wyświetlanie pulpitów nawigacyjnych monitorowania w witrynie Azure Portal.
- Wyświetlanie reguł alertów zdefiniowanych w alertach platformy Azure.
- Wykonywanie zapytań względem metryk usługi Azure Monitor przy użyciu interfejsu API REST usługi Azure Monitor, poleceń cmdlet programu PowerShell lub międzyplatformowego interfejsu wiersza polecenia.
- Wykonywanie zapytań w dzienniku aktywności przy użyciu portalu, interfejsu API REST usługi Azure Monitor, poleceń cmdlet programu PowerShell lub międzyplatformowego interfejsu wiersza polecenia.
- Wyświetl ustawienia diagnostyczne zasobu.
- Wyświetlanie profilu dziennika dla subskrypcji.
- Wyświetlanie ustawień automatycznego skalowania.
- Wyświetlanie działań i ustawień alertu.
- Przeszukaj dane obszaru roboczego usługi Log Analytics, w tym dane użycia dla obszaru roboczego.
- Pobierz schematy tabeli w obszarze roboczym usługi Log Analytics.
- Pobieranie i wykonywanie zapytań dziennika w obszarze roboczym usługi Log Analytics.
- Uzyskiwanie dostępu do danych usługi Application Insights.
Uwaga
Ta rola nie zapewnia dostępu do odczytu do danych dziennika przesyłanych strumieniowo do centrum zdarzeń ani przechowywanych na koncie magazynu. Aby uzyskać informacje na temat konfigurowania dostępu do tych zasobów, zobacz sekcję Zagadnienia dotyczące zabezpieczeń dotyczące monitorowania danych w dalszej części tego artykułu.
Współautor monitorowania
Osoby z przypisaną rolą Współautor monitorowania mogą wyświetlać wszystkie dane monitorowania w subskrypcji. Mogą też tworzyć i modyfikować ustawienia monitorowania, ale nie mogą modyfikować żadnych innych zasobów.
Ta rola jest nadzbiorem roli Czytelnik monitorowania. Jest to odpowiednie dla członków zespołu monitorowania organizacji lub zarządzanych dostawców usług, którzy oprócz wymienionych wcześniej uprawnień muszą:
- Wyświetlanie pulpitów nawigacyjnych monitorowania w portalu i tworzenie własnych prywatnych pulpitów nawigacyjnych monitorowania.
- Tworzenie i edytowanie ustawień diagnostycznych dla zasobu. 1
- Ustawianie działań i ustawień reguły alertu przy użyciu alertów platformy Azure.
- Wyświetlanie listy kluczy udostępnionych dla obszaru roboczego usługi Log Analytics.
- Tworzenie, usuwanie i wykonywanie zapisanych wyszukiwań w obszarze roboczym usługi Log Analytics.
- Utwórz i usuń konfigurację magazynu obszaru roboczego dla usługi Log Analytics.
- Tworzenie testów internetowych i składników dla usługi Application Insights.
1 Aby utworzyć lub edytować ustawienie diagnostyczne, użytkownicy muszą również przyznać uprawnienie ListKeys do zasobu docelowego (konto magazynu lub przestrzeń nazw centrum zdarzeń).
Uwaga
Ta rola nie zapewnia dostępu do odczytu do danych dziennika przesyłanych strumieniowo do centrum zdarzeń ani przechowywanych na koncie magazynu. Aby uzyskać informacje na temat konfigurowania dostępu do tych zasobów, zobacz sekcję Zagadnienia dotyczące zabezpieczeń dotyczące monitorowania danych w dalszej części tego artykułu.
Monitorowanie uprawnień i ról niestandardowych platformy Azure
Jeśli wbudowane role nie spełniają wymagań twojego zespołu, możesz utworzyć rolę niestandardową platformy Azure z szczegółowymi uprawnieniami.
Na przykład możesz użyć szczegółowych uprawnień do utworzenia roli niestandardowej platformy Azure dla czytelnika dziennika aktywności za pomocą następującego skryptu programu PowerShell.
$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
Uwaga
Dostęp do alertów, ustawień diagnostycznych i metryk dla zasobu wymaga, aby użytkownik miał dostęp do odczytu do typu zasobu i zakresu tego zasobu. Utworzenie ustawienia diagnostycznego, które wysyła dane do konta magazynu lub strumieni do centrów zdarzeń, wymaga, aby użytkownik miał również uprawnienie ListKeys do zasobu docelowego.
Przypisywanie roli
Uwaga
Do interakcji z platformą Azure zalecamy używanie modułu Azure Az w programie PowerShell. Zobacz Instalowanie programu Azure PowerShell, aby rozpocząć. Aby dowiedzieć się, jak przeprowadzić migrację do modułu Az PowerShell, zobacz Migracja programu Azure PowerShell z modułu AzureRM do modułu Az.
Aby przypisać rolę, zobacz Przypisywanie ról platformy Azure przy użyciu programu Azure PowerShell.
Na przykład następujący skrypt programu PowerShell przypisuje rolę określonemu użytkownikowi.
Zastąp element <RoleId>
identyfikatorem roli monitorowania RBAC, który chcesz przypisać.
Zastąp <SubscriptionID>
wartości , <ResourceGroupName>
i <UserPrincipalName>
odpowiednimi wartościami dla danego środowiska.
# 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
Role platformy Azure można również przypisywać przy użyciu witryny Azure Portal.
Ważne
- Upewnij się, że masz uprawnienia niezbędne do przypisywania ról w określonym zakresie. Musisz mieć prawa właściciela do subskrypcji lub grupy zasobów.
- Przypisz dostęp w grupie zasobów lub subskrypcji, do której należy zasób, a nie w samym zasobie.
Zapytanie programu PowerShell w celu określenia członkostwa w rolach
Przydatne może być generowanie list użytkowników należących do danej roli. Aby ułatwić generowanie tych typów list, następujące przykładowe zapytania można dostosować do konkretnych potrzeb.
Wykonywanie zapytań dotyczących całej subskrypcji dla ról administratorów i ról współautora
(Get-AzRoleAssignment -IncludeClassicAdministrators | Where-Object {$_.RoleDefinitionName -in @('ServiceAdministrator', 'CoAdministrator', 'Owner', 'Contributor') } | Select -ExpandProperty SignInName | Sort-Object -Unique) -Join ", "
Wykonywanie zapytań w kontekście określonego zasobu usługi Application Insights dla właścicieli i współautorów
$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 ", "
Wykonywanie zapytań w kontekście określonej grupy zasobów dla właścicieli i współautorów
$resourceGroup = "ResourceGroupName"
(Get-AzRoleAssignment -ResourceGroup $resourceGroup | Where-Object {$_.RoleDefinitionName -in @('Owner', 'Contributor') } | Select -ExpandProperty SignInName | Sort-Object -Unique) -Join ", "
Zagadnienia związane z zabezpieczeniami dotyczące monitorowania danych
Dane w usłudze Azure Monitor można wysyłać na koncie magazynu lub przesyłać strumieniowo do centrum zdarzeń, z których oba są zasobami platformy Azure ogólnego przeznaczenia. Bycie zasobami ogólnego przeznaczenia, tworzeniem, usuwaniem i uzyskiwaniem do nich dostępu jest operacja uprzywilejowana zarezerwowana dla administratora. Ponieważ te dane mogą zawierać poufne informacje, takie jak adresy IP lub nazwy użytkowników, należy użyć następujących rozwiązań dotyczących monitorowania zasobów, aby zapobiec niewłaściwemu używaniu:
- Użyj jednego dedykowanego konta magazynu do monitorowania danych. Jeśli musisz oddzielić dane monitorowania do wielu kont magazynu, zawsze używaj różnych kont magazynu do monitorowania danych i innych typów danych. Jeśli udostępniasz konta magazynu na potrzeby monitorowania i innych typów danych, możesz przypadkowo udzielić dostępu do innych danych organizacjom, które powinny uzyskiwać dostęp tylko do danych monitorowania. Na przykład organizacja spoza firmy Microsoft do zarządzania informacjami i zdarzeniami zabezpieczeń powinna potrzebować dostępu tylko do danych monitorowania.
- Użyj pojedynczej, dedykowanej przestrzeni nazw usługi Service Bus lub centrum zdarzeń we wszystkich ustawieniach diagnostycznych z tej samej przyczyny opisanej w poprzednim punkcie.
- Ogranicz dostęp do kont magazynu lub centrów zdarzeń związanych z monitorowaniem, utrzymując je w oddzielnej grupie zasobów. Użyj zakresu dla ról monitorowania, aby ograniczyć dostęp tylko do tej grupy zasobów.
- Nigdy nie należy udzielać uprawnień ListKeys dla kont magazynu lub centrów zdarzeń w zakresie subskrypcji, gdy użytkownik potrzebuje tylko dostępu do danych monitorowania. Zamiast tego nadaj użytkownikowi te uprawnienia w zakresie zasobu lub grupy zasobów (jeśli masz dedykowaną grupę zasobów monitorowania).
Ograniczanie dostępu do kont magazynu związanych z monitorowaniem
Gdy użytkownik lub aplikacja potrzebuje dostępu do danych monitorowania na koncie magazynu, wygeneruj sygnaturę dostępu współdzielonego na koncie magazynu zawierającym dane monitorowania z dostępem tylko do odczytu na poziomie usługi do magazynu obiektów blob. W programie PowerShell sygnatura dostępu współdzielonego konta może wyglądać podobnie do następującego kodu:
$context = New-AzStorageContext -ConnectionString "[connection string for your monitoring Storage Account]"
$token = New-AzStorageAccountSASToken -ResourceType Service -Service Blob -Permission "rl" -Context $context
Następnie możesz nadać token jednostce, która musi odczytywać dane z tego konta magazynu. Jednostka może wyświetlać i odczytywać ze wszystkich obiektów blob na tym koncie magazynu.
Alternatywnie, jeśli musisz kontrolować to uprawnienie za pomocą kontroli dostępu opartej na rolach platformy Azure, możesz przyznać Microsoft.Storage/storageAccounts/listkeys/action
tej jednostce uprawnienie do tego konkretnego konta magazynu. To uprawnienie jest niezbędne dla użytkowników, którzy muszą ustawić ustawienie diagnostyczne w celu wysyłania danych na konto magazynu. Możesz na przykład utworzyć następującą rolę niestandardową platformy Azure dla użytkownika lub aplikacji, która musi odczytywać dane tylko z jednego konta magazynu:
$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
Ostrzeżenie
Uprawnienie ListKeys umożliwia użytkownikowi wyświetlanie listy kluczy konta magazynu podstawowego i pomocniczego. Te klucze przyznają użytkownikowi wszystkie podpisane uprawnienia (takie jak odczyt, zapis, tworzenie obiektów blob i usuwanie obiektów blob) we wszystkich podpisanych usługach (blob, queue, table, file) na tym koncie magazynu. Zalecamy używanie sygnatury dostępu współdzielonego konta, jeśli jest to możliwe.
Ograniczanie dostępu do centrów zdarzeń związanych z monitorowaniem
Możesz postępować zgodnie z podobnym wzorcem za pomocą centrów zdarzeń, ale najpierw należy utworzyć dedykowaną regułę autoryzacji na potrzeby nasłuchiwania. Jeśli chcesz udzielić dostępu do aplikacji, która musi nasłuchiwać tylko centrów zdarzeń związanych z monitorowaniem, wykonaj następujące kroki:
W portalu utwórz zasady dostępu współdzielonego w centrach zdarzeń utworzonych na potrzeby przesyłania strumieniowego danych monitorowania tylko z oświadczeniami nasłuchiwania. Możesz na przykład nazwać ją "monitoringReadOnly". Jeśli to możliwe, przekaż ten klucz bezpośrednio użytkownikowi i pomiń następny krok.
Jeśli użytkownik musi uzyskać klucz na żądanie, przyznaj użytkownikowi akcję ListKeys dla tego centrum zdarzeń. Ten krok jest również niezbędny dla użytkowników, którzy muszą ustawić ustawienie diagnostyczne lub profil dziennika, aby przesyłać strumieniowo do centrów zdarzeń. Możesz na przykład utworzyć regułę RBAC platformy 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