Role, oprávnění a zabezpečení ve službě Azure Monitor
Tento článek ukazuje, jak použít role monitorování řízení přístupu na základě role (RBAC) k udělení nebo omezení přístupu a popisuje aspekty zabezpečení pro prostředky související se službou Azure Monitor.
Předdefinované role monitorování
Řízení přístupu na základě role v Azure (Azure RBAC) poskytuje integrované role pro monitorování, které můžete přiřadit uživatelům, skupinám, instančním objektům a spravovaným identitám. Nejběžnějšími rolemi jsou Čtenář monitorování a Přispěvatel monitorování pro oprávnění ke čtení a zápisu.
Čtenář monitorování
Uživatelé s přiřazenou rolí Čtenář monitorování můžou zobrazit všechna data monitorování v předplatném, ale nemůžou upravovat žádné prostředky ani nastavení související s monitorováním prostředků. Tato role je vhodná pro uživatele v organizaci, jako je podpora nebo provozní technici, kteří potřebují:
- Zobrazení řídicích panelů monitorování na webu Azure Portal
- Zobrazení pravidel upozornění definovaných v upozorněních Azure
- Dotazování metrik Azure Monitoru pomocí rozhraní REST API služby Azure Monitor, rutin PowerShellu nebo rozhraní příkazového řádku pro různé platformy
- Dotazování protokolu aktivit pomocí portálu, rozhraní REST API služby Azure Monitor, rutin PowerShellu nebo rozhraní příkazového řádku pro různé platformy
- Zobrazení nastavení diagnostiky pro prostředek
- Zobrazte profil protokolu pro předplatné.
- Zobrazení nastavení automatického škálování
- Umožňuje zobrazit aktivitu a nastavení upozornění.
- Prohledávat data pracovního prostoru služby Log Analytics, včetně dat o využití pro tento pracovní prostor.
- Načtěte schémata tabulek v pracovním prostoru služby Log Analytics.
- Načtěte a spusťte dotazy protokolu v pracovním prostoru služby Log Analytics.
- Přístup k datům Application Insights
Poznámka:
Tato role neuděluje přístup pro čtení k datům protokolu streamovaným do centra událostí nebo uloženým v účtu úložiště. Informace o tom, jak nakonfigurovat přístup k těmto prostředkům, najdete v části Aspekty zabezpečení pro monitorování dat dále v tomto článku.
Přispěvatel monitorování
Uživatelé s přiřazenou rolí Přispěvatel monitorování můžou zobrazit všechna data monitorování v předplatném. Můžou také vytvářet nebo upravovat nastavení monitorování, ale nemůžou upravovat žádné jiné prostředky.
Tato role je nadmnožinou role Čtenář monitorování. Je vhodné pro členy monitorovacího týmu organizace nebo poskytovatelů spravovaných služeb, kteří kromě výše uvedených oprávnění potřebují:
- Zobrazte řídicí panely monitorování na portálu a vytvořte vlastní privátní řídicí panely monitorování.
- Vytvořte a upravte nastavení diagnostiky pro prostředek. 1
- Nastavte aktivitu a nastavení pravidla upozornění pomocí upozornění Azure.
- Výpis sdílených klíčů pro pracovní prostor služby Log Analytics
- Vytváření, odstraňování a spouštění uložených hledání v pracovním prostoru služby Log Analytics
- Vytvořte a odstraňte konfiguraci úložiště pracovního prostoru pro Log Analytics.
- Vytváření webových testů a komponent pro Application Insights
1 Chcete-li vytvořit nebo upravit nastavení diagnostiky, musí být uživatelům také uděleno oprávnění ListKeys k cílovému prostředku (účet úložiště nebo obor názvů centra událostí).
Poznámka:
Tato role neuděluje přístup pro čtení k datům protokolu streamovaným do centra událostí nebo uloženým v účtu úložiště. Informace o tom, jak nakonfigurovat přístup k těmto prostředkům, najdete v části Aspekty zabezpečení pro monitorování dat dále v tomto článku.
Monitorování oprávnění a vlastních rolí Azure
Pokud předdefinované role nevyhovují potřebám vašeho týmu, můžete vytvořit vlastní roli Azure s podrobnými oprávněními.
Pomocí podrobných oprávnění můžete například vytvořit vlastní roli Azure pro čtenář protokolu aktivit pomocí následujícího skriptu PowerShellu.
$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
Poznámka:
Přístup k upozorněním, nastavením diagnostiky a metrikám prostředku vyžaduje, aby uživatel získal přístup pro čtení k typu prostředku a rozsahu daného prostředku. Vytvoření nastavení diagnostiky, které odesílá data do účtu úložiště nebo datových proudů do center událostí, vyžaduje, aby měl uživatel také oprávnění ListKeys k cílovému prostředku.
Přiřaďte roli
Poznámka:
Při práci s Azure doporučujeme používat modul Azure Az PowerShellu. Začněte tím, že si projdete téma Instalace Azure PowerShellu. Informace o tom, jak migrovat na modul Az PowerShell, najdete v tématu Migrace Azure PowerShellu z AzureRM na Az.
Pokud chcete přiřadit roli, přečtěte si téma Přiřazení rolí Azure pomocí Azure PowerShellu.
Například následující skript PowerShellu přiřadí zadanému uživateli roli.
Nahraďte <RoleId>
ID role monitorování RBAC, které chcete přiřadit.
Nahraďte a <ResourceGroupName>
<UserPrincipalName>
nahraďte <SubscriptionID>
odpovídajícími hodnotami pro vaše prostředí.
# 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 Azure můžete také přiřadit pomocí webu Azure Portal.
Důležité
- Ujistěte se, že máte potřebná oprávnění k přiřazování rolí v zadaném oboru. Musíte mít práva vlastníka k předplatnému nebo skupině prostředků.
- Přiřaďte přístup ve skupině prostředků nebo předplatném, ke kterému prostředek patří, ne v samotném prostředku.
Dotaz PowerShellu pro určení členství v rolích
Může být užitečné generovat seznamy uživatelů, kteří patří do dané role. Pokud chcete pomoct s generováním těchto typů seznamů, můžete upravit následující ukázkové dotazy tak, aby vyhovovaly vašim konkrétním potřebám.
Dotazování celého předplatného pro role správce + role přispěvatele
(Get-AzRoleAssignment -IncludeClassicAdministrators | Where-Object {$_.RoleDefinitionName -in @('ServiceAdministrator', 'CoAdministrator', 'Owner', 'Contributor') } | Select -ExpandProperty SignInName | Sort-Object -Unique) -Join ", "
Dotazování v kontextu konkrétního prostředku Application Insights pro vlastníky a přispěvatele
$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 ", "
Dotaz v kontextu konkrétní skupiny prostředků pro vlastníky a přispěvatele
$resourceGroup = "ResourceGroupName"
(Get-AzRoleAssignment -ResourceGroup $resourceGroup | Where-Object {$_.RoleDefinitionName -in @('Owner', 'Contributor') } | Select -ExpandProperty SignInName | Sort-Object -Unique) -Join ", "
Důležité informace o zabezpečení dat monitorování
Data ve službě Azure Monitor je možné odesílat v účtu úložiště nebo streamovat do centra událostí, z nichž obě jsou prostředky Azure pro obecné účely. Vytváření, odstraňování a přístup k prostředkům pro obecné účely je privilegovaná operace vyhrazená pro správce. Vzhledem k tomu, že tato data mohou obsahovat citlivé informace, jako jsou IP adresy nebo uživatelská jména, použijte následující postupy pro monitorování prostředků souvisejících s monitorováním, aby se zabránilo zneužití:
- Pro monitorování dat použijte jeden vyhrazený účet úložiště. Pokud potřebujete data monitorování oddělit do více účtů úložiště, vždy pro monitorování dat a dalších typů dat používejte různé účty úložiště. Pokud sdílíte účty úložiště pro monitorování a další typy dat, můžete neúmyslně udělit přístup k jiným datům organizacím, které by měly přistupovat pouze k datům monitorování. Například organizace jiné společnosti než Microsoft pro informace o zabezpečení a správu událostí by měla potřebovat přístup pouze k datům monitorování.
- Pro všechna nastavení diagnostiky použijte jeden vyhrazený obor názvů služby Service Bus nebo centra událostí z stejného důvodu, který je popsaný v předchozím bodu.
- Omezte přístup k účtům úložiště nebo centrem událostí souvisejícím s monitorováním tím, že je necháte v samostatné skupině prostředků. Pomocí oboru u rolí monitorování omezte přístup jenom na tuto skupinu prostředků.
- Nikdy byste neměli udělit oprávnění ListKeys pro účty úložiště nebo centra událostí v oboru předplatného, pokud uživatel potřebuje přístup pouze k datům monitorování. Místo toho uživateli udělte tato oprávnění v oboru prostředku nebo skupiny prostředků (pokud máte vyhrazenou skupinu prostředků monitorování).
Omezení přístupu k účtům úložiště souvisejícím s monitorováním
Když uživatel nebo aplikace potřebuje přístup k datům monitorování v účtu úložiště, vygenerujte sdílený přístupový podpis (SAS) v účtu úložiště, který obsahuje data monitorování s přístupem jen pro čtení na úrovni služby k úložišti objektů blob. V PowerShellu může SAS účtu vypadat jako následující kód:
$context = New-AzStorageContext -ConnectionString "[connection string for your monitoring Storage Account]"
$token = New-AzStorageAccountSASToken -ResourceType Service -Service Blob -Permission "rl" -Context $context
Token pak můžete dát entitě, která potřebuje číst z daného účtu úložiště. Entita může vypsat a číst ze všech objektů blob v daném účtu úložiště.
Pokud potřebujete toto oprávnění řídit pomocí Azure RBAC, můžete této entitě Microsoft.Storage/storageAccounts/listkeys/action
udělit oprávnění k tomuto konkrétnímu účtu úložiště. Toto oprávnění je nezbytné pro uživatele, kteří potřebují nastavit nastavení diagnostiky pro odesílání dat do účtu úložiště. Můžete například vytvořit následující vlastní roli Azure pro uživatele nebo aplikaci, která potřebuje číst jenom z jednoho účtu úložiště:
$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
Upozorňující
Oprávnění ListKeys umožňuje uživateli vypsat primární a sekundární klíče účtu úložiště. Tyto klíče uživateli udělují všechna podepsaná oprávnění (například čtení, zápis, vytváření objektů blob a odstraňování objektů blob) ve všech podepsaných službách (blob, fronta, tabulka, soubor) v tomto účtu úložiště. Pokud je to možné, doporučujeme použít SAS účtu.
Omezení přístupu k centrem událostí souvisejících s monitorováním
U center událostí můžete postupovat podle podobného vzoru, ale nejprve musíte vytvořit vyhrazené autorizační pravidlo pro naslouchání. Pokud chcete udělit přístup k aplikaci, která potřebuje jenom naslouchat centrem událostí souvisejícím s monitorováním, postupujte takto:
Na portálu vytvořte zásadu sdíleného přístupu v centrech událostí, která byla vytvořena pro streamování dat monitorování, pouze s nasloucháním deklarací identity. Můžete ho například volat "monitoringReadOnly". Pokud je to možné, dejte ho přímo příjemci a přeskočte další krok.
Pokud uživatel potřebuje získat klíč na vyžádání, udělte uživateli akci ListKeys pro toto centrum událostí. Tento krok je také nezbytný pro uživatele, kteří potřebují nastavit nastavení diagnostiky nebo profil protokolu pro streamování do center událostí. Můžete například vytvořit pravidlo Azure RBAC:
$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