Azure İzleyici'de roller, izinler ve güvenlik
Bu makalede, erişim vermek veya sınırlamak için rol tabanlı erişim denetimi (RBAC) izleme rollerinin nasıl uygulanacağı gösterilmektedir ve Azure İzleyici ile ilgili kaynaklarınız için güvenlikle ilgili önemli noktalar ele alınmaktadır.
Yerleşik izleme rolleri
Azure rol tabanlı erişim denetimi (Azure RBAC), kullanıcılara, gruplara, hizmet sorumlularına ve yönetilen kimliklere atayabileceğiniz izleme için yerleşik roller sağlar. En yaygın roller sırasıyla okuma ve yazma izinleri için İzleme Okuyucusu ve İzleme Katkıda Bulunanı'dır.
İzleme rolleri hakkında daha ayrıntılı bilgi için bkz . RBAC İzleme Rolleri.
İzleme Okuyucusu
İzleme Okuyucusu rolünün atandığı kişiler abonelikteki tüm izleme verilerini görüntüleyebilir ancak herhangi bir kaynağı değiştiremez veya izleme kaynaklarıyla ilgili ayarları düzenleyemez. Bu rol, bir kuruluştaki destek veya operasyon mühendisleri gibi aşağıdakilere ihtiyacı olan kullanıcılar için uygundur:
- azure portalında izleme panolarını görüntüleyin.
- Azure uyarılarında tanımlanan uyarı kurallarını görüntüleyin.
- Azure İzleyici REST API'sini, PowerShell cmdlet'lerini veya platformlar arası CLI'yı kullanarak Azure İzleyici Ölçümlerini sorgulama.
- Portalı, Azure İzleyici REST API'sini, PowerShell cmdlet'lerini veya platformlar arası CLI'yı kullanarak Etkinlik günlüğünü sorgular.
- Bir kaynağın tanılama ayarlarını görüntüleyin.
- Aboneliğin günlük profilini görüntüleyin.
- Otomatik ölçeklendirme ayarlarını görüntüleyin.
- Uyarı etkinliğini ve ayarlarını görüntüleyin.
- Çalışma alanının kullanım verileri de dahil olmak üzere Log Analytics çalışma alanı verilerini arayın.
- Log Analytics çalışma alanında tablo şemalarını alma.
- Log Analytics çalışma alanında günlük sorgularını alma ve yürütme.
- Application Insights verilerine erişme.
Not
Bu rol, bir olay hub'ına akışı yapılan veya depolama hesabında depolanan günlük verilerine okuma erişimi vermez. Bu kaynaklara erişimi yapılandırma hakkında bilgi için, bu makalenin devamında yer alan İzleme verileri için güvenlik konuları bölümüne bakın.
İzleme Katkıda Bulunanı
İzleme Katkıda Bulunanı rolünün atandığı kişiler abonelikteki tüm izleme verilerini görüntüleyebilir. Ayrıca izleme ayarlarını oluşturabilir veya değiştirebilirler ancak diğer kaynakları değiştiremezler.
Bu rol, İzleme Okuyucusu rolünün üst kümesidir. Bir kuruluşun izleme ekibinin veya yönetilen hizmet sağlayıcılarının üyeleri için uygundur ve daha önce belirtilen izinlere ek olarak şunları yapmanız gerekir:
- Portalda izleme panolarını görüntüleyin ve kendi özel izleme panolarını oluşturun.
- Bir kaynak için tanılama ayarlarını oluşturun ve düzenleyin. 1
- Azure uyarılarını kullanarak uyarı kuralı etkinliğini ve ayarlarını ayarlayın.
- Log Analytics çalışma alanı için paylaşılan anahtarları listeleme.
- Log Analytics çalışma alanında kayıtlı aramalar oluşturun, silin ve yürütebilirsiniz.
- Log Analytics için çalışma alanı depolama yapılandırmasını oluşturun ve silin.
- Application Insights için web testleri ve bileşenleri oluşturun.
1 Tanılama ayarı oluşturmak veya düzenlemek için, kullanıcılara hedef kaynakta (depolama hesabı veya olay hub'ı ad alanı) Ayrıca ListKeys izni de verilmelidir.
Not
Bu rol, bir olay hub'ına akışı yapılan veya depolama hesabında depolanan günlük verilerine okuma erişimi vermez. Bu kaynaklara erişimi yapılandırma hakkında bilgi için, bu makalenin devamında yer alan İzleme verileri için güvenlik konuları bölümüne bakın.
İzinleri ve Azure özel rollerini izleme
Yerleşik roller ekibinizin gereksinimlerini karşılamıyorsa ayrıntılı izinlere sahip bir Azure özel rolü oluşturabilirsiniz.
Örneğin, aşağıdaki PowerShell betiğiyle Etkinlik Günlüğü Okuyucusu için azure özel rolü oluşturmak için ayrıntılı izinleri kullanabilirsiniz.
$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
Not
Bir kaynağın uyarılarına, tanılama ayarlarına ve ölçümlerine erişim için kullanıcının kaynak türüne ve kapsamına okuma erişimi olması gerekir. Depolama hesabına veri gönderen veya olay hub'larına akış gönderen bir tanılama ayarı oluşturmak, kullanıcının hedef kaynak üzerinde ListKeys iznine de sahip olmasını gerektirir.
Rol atama
Not
Azure ile etkileşim kurmak için Azure Az PowerShell modülünü kullanmanızı öneririz. Başlamak için bkz . Azure PowerShell'i yükleme. Az PowerShell modülüne nasıl geçeceğinizi öğrenmek için bkz. Azure PowerShell’i AzureRM’den Az’ye geçirme.
Rol atamak için bkz . Azure PowerShell kullanarak Azure rolleri atama.
Örneğin, aşağıdaki PowerShell betiği belirtilen kullanıcıya bir rol atar.
değerini, atamak istediğiniz RBAC İzleme Rolü Kimliği ile değiştirin<RoleId>
.
, <ResourceGroupName>
ve <UserPrincipalName>
değerlerini ortamınız için uygun değerlerle değiştirin<SubscriptionID>
.
# 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
Ayrıca Azure portalını kullanarak Azure rolleri atayabilirsiniz.
Önemli
- Belirtilen kapsamda rol atamak için gerekli izinlere sahip olduğunuzdan emin olun. Abonelik veya kaynak grubu için Sahip haklarına sahip olmanız gerekir.
- Kaynağın kendisine değil, kaynağınızın ait olduğu kaynak grubuna veya aboneliğe erişim atayın.
Rol üyeliğini belirlemek için PowerShell sorgusu
Belirli bir role ait kullanıcıların listesini oluşturmak yararlı olabilir. Bu tür listelerin oluşturulmasına yardımcı olmak için, aşağıdaki örnek sorgular gereksinimlerinize uyacak şekilde ayarlanabilir.
Yönetici rolleri + Katkıda Bulunan rolleri için aboneliğin tamamını sorgulama
(Get-AzRoleAssignment -IncludeClassicAdministrators | Where-Object {$_.RoleDefinitionName -in @('ServiceAdministrator', 'CoAdministrator', 'Owner', 'Contributor') } | Select -ExpandProperty SignInName | Sort-Object -Unique) -Join ", "
Sahipler ve katkıda bulunanlar için belirli bir Application Insights kaynağı bağlamında sorgulama
$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 ", "
Sahipler ve katkıda bulunanlar için belirli bir kaynak grubu bağlamında sorgulama
$resourceGroup = "ResourceGroupName"
(Get-AzRoleAssignment -ResourceGroup $resourceGroup | Where-Object {$_.RoleDefinitionName -in @('Owner', 'Contributor') } | Select -ExpandProperty SignInName | Sort-Object -Unique) -Join ", "
İzleme verileri için güvenlik konuları
Azure İzleyici'deki veriler bir depolama hesabında gönderilebilir veya her ikisi de genel amaçlı Azure kaynakları olan bir olay hub'ına akışla aktarılabilir. Genel amaçlı kaynaklar olmak, bunları oluşturmak, silmek ve bunlara erişmek, yönetici için ayrılmış ayrıcalıklı bir işlemdir. Bu veriler IP adresleri veya kullanıcı adları gibi hassas bilgiler içerebileceğinden, kötüye kullanımı önlemek için izlemeyle ilgili kaynakları izlemek için aşağıdaki uygulamaları kullanın:
- Verileri izlemek için tek bir ayrılmış depolama hesabı kullanın. İzleme verilerini birden çok depolama hesabına ayırmanız gerekiyorsa, verileri ve diğer veri türlerini izlemek için her zaman farklı depolama hesapları kullanın. İzleme için depolama hesaplarını ve diğer veri türlerini paylaşıyorsanız, yanlışlıkla yalnızca izleme verilerine erişmesi gereken kuruluşlara diğer verilere erişim verirseniz. Örneğin, güvenlik bilgileri ve olay yönetimi için Microsoft dışı bir kuruluşun yalnızca izleme verilerine erişmesi gerekir.
- Önceki noktada açıklanan nedenle tüm tanılama ayarlarında tek, ayrılmış bir hizmet veri yolu veya olay hub'ı ad alanı kullanın.
- İzlemeyle ilgili depolama hesaplarına veya olay hub'larına erişimi ayrı bir kaynak grubunda tutarak sınırlayın. Erişimi yalnızca bu kaynak grubuyla sınırlandırmak için izleme rollerinizin kapsamını kullanın.
- Bir kullanıcının yalnızca izleme verilerine erişmesi gerektiğinde abonelik kapsamında depolama hesapları veya olay hub'ları için ListKeys izni vermemelisiniz. Bunun yerine, kullanıcıya bir kaynak veya kaynak grubu kapsamında (ayrılmış bir izleme kaynak grubunuz varsa) bu izinleri verin.
İzlemeyle ilgili depolama hesaplarına erişimi sınırlama
Bir kullanıcı veya uygulamanın depolama hesabındaki izleme verilerine erişmesi gerektiğinde, blob depolamaya hizmet düzeyinde salt okunur erişime sahip izleme verilerini içeren depolama hesabında paylaşılan erişim imzası (SAS) oluşturun. PowerShell'de hesap SAS'i aşağıdaki kod gibi görünebilir:
$context = New-AzStorageContext -ConnectionString "[connection string for your monitoring Storage Account]"
$token = New-AzStorageAccountSASToken -ResourceType Service -Service Blob -Permission "rl" -Context $context
Ardından belirteci bu depolama hesabından okuması gereken varlığa verebilirsiniz. Varlık, bu depolama hesabındaki tüm blobları listeleyebilir ve okuyabilir.
Alternatif olarak, bu izni Azure RBAC ile denetlemeniz gerekiyorsa söz konusu varlığa Microsoft.Storage/storageAccounts/listkeys/action
söz konusu depolama hesabı üzerinde izin vekleyebilirsiniz. Bu izin, bir depolama hesabına veri göndermek için tanılama ayarı ayarlaması gereken kullanıcılar için gereklidir. Örneğin, yalnızca bir depolama hesabından okuması gereken bir kullanıcı veya uygulama için aşağıdaki Azure özel rolünü oluşturabilirsiniz:
$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
Uyarı
ListKeys izni, kullanıcının birincil ve ikincil depolama hesabı anahtarlarını listelemesini sağlar. Bu anahtarlar kullanıcıya söz konusu depolama hesabındaki tüm imzalı hizmetler (blob, kuyruk, tablo, dosya) genelinde tüm imzalı izinleri (okuma, yazma, blob oluşturma ve blobları silme gibi) verir. Mümkün olduğunda bir hesap SAS'i kullanmanızı öneririz.
İzlemeyle ilgili olay hub'larına erişimi sınırlama
Olay hub'larıyla benzer bir desen izleyebilirsiniz, ancak önce dinlemek için ayrılmış bir yetkilendirme kuralı oluşturmanız gerekir. Yalnızca izlemeyle ilgili olay hub'larını dinlemesi gereken bir uygulamaya erişim vermek istiyorsanız şu adımları izleyin:
Portalda, yalnızca dinleme talepleri içeren akış izleme verileri için oluşturulan olay hub'larında bir paylaşılan erişim ilkesi oluşturun. Örneğin, buna "monitoringReadOnly" diyebilirsiniz. Mümkünse, bu anahtarı doğrudan tüketiciye verin ve sonraki adımı atlayın.
Tüketicinin anahtarı isteğe bağlı olarak alması gerekiyorsa, kullanıcıya bu olay hub'ı için ListKeys eylemini verin. Bu adım, olay hub'larına akış yapmak için tanılama ayarı veya günlük profili ayarlaması gereken kullanıcılar için de gereklidir. Örneğin, bir Azure RBAC kuralı oluşturabilirsiniz:
$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