Peran, izin, dan keamanan di Azure Monitor

Artikel ini memperlihatkan cara menerapkan peran pemantauan kontrol akses berbasis peran (RBAC) untuk memberikan atau membatasi akses, dan membahas pertimbangan keamanan untuk sumber daya terkait Azure Monitor Anda.

Peran pemantauan bawaan

Kontrol akses berbasis peran Azure (Azure RBAC) menyediakan peran bawaan untuk pemantauan yang dapat Anda tetapkan kepada pengguna, grup, perwakilan layanan, dan identitas terkelola. Peran yang paling umum adalah Memantau Pembaca dan Kontributor Pemantauan untuk izin baca dan tulis.

Untuk informasi selengkapnya tentang peran pemantauan, lihat Peran Pemantauan RBAC.

Pembaca Pemantauan

Orang yang diberi peran Pembaca Pemantauan dapat melihat semua data pemantauan dalam langganan tetapi tidak dapat mengubah sumber daya apa pun atau mengedit pengaturan apa pun yang terkait dengan sumber daya pemantauan. Peran ini sesuai untuk pengguna dalam organisasi, seperti teknisi pendukung atau operasi, yang memerlukan:

  • Lihat dasbor pemantauan di portal Microsoft Azure.
  • Lihat aturan pemberitahuan yang ditentukan dalam pemberitahuan Azure.
  • Kueri Metrik Azure Monitor dengan menggunakan REST API Azure Monitor, cmdlet PowerShell, atau CLI lintas platform.
  • Kueri log Aktivitas dengan menggunakan portal, REST API Azure Monitor, cmdlet PowerShell, atau CLI lintas platform.
  • Tampilkan pengaturan diagnostik untuk sumber daya.
  • Tampilkan profil log untuk langganan.
  • Tampilkan pengaturan skala otomatis.
  • Tampilkan aktivitas dan pengaturan pemberitahuan.
  • Cari data ruang kerja Analisis Log, termasuk data penggunaan untuk ruang kerja.
  • Ambil skema tabel di ruang kerja Analitik Log.
  • Mengambil dan menjalankan kueri log di ruang kerja Analitik Log.
  • Mengakses data Application Insights.

Catatan

Peran ini tidak memberikan akses baca ke data log yang telah di streaming ke hub peristiwa atau disimpan di akun penyimpanan. Untuk informasi tentang cara mengonfigurasi akses ke sumber daya ini, lihat bagian Pertimbangan keamanan untuk memantau data nanti di artikel ini.

Kontributor Pemantauan

Orang yang diberi peran Kontributor Pemantauan dapat melihat semua data pemantauan dalam langganan. Mereka juga dapat membuat atau mengubah pengaturan pemantauan, tetapi mereka tidak dapat mengubah sumber daya lainnya.

Peran ini adalah superset dari peran Pembaca Pemantauan. Hal ini sesuai untuk anggota tim pemantau organisasi atau penyedia layanan terkelola yang, selain izin yang disebutkan sebelumnya, perlu untuk:

  • Lihat dasbor pemantauan di portal dan buat dasbor pemantauan pribadi mereka sendiri.
  • Membuat dan mengedit pengaturan diagnostik untuk sumber daya. 1
  • Atur aktivitas dan pengaturan aturan pemberitahuan menggunakan pemberitahuan Azure.
  • Mencantumkan kunci bersama untuk ruang kerja Analitik Log.
  • Buat, hapus, dan jalankan pencarian tersimpan di ruang kerja Analitik Log.
  • Buat dan hapus konfigurasi penyimpanan ruang kerja untuk Analitik Log.
  • Buat pengujian web dan komponen untuk Application Insights.

1 Untuk membuat atau mengedit pengaturan diagnostik, pengguna juga harus secara terpisah diberikan izin ListKeys pada sumber daya target (akun penyimpanan atau namespace pusat aktivitas).

Catatan

Peran ini tidak memberikan akses baca ke data log yang telah di streaming ke hub peristiwa atau disimpan di akun penyimpanan. Untuk informasi tentang cara mengonfigurasi akses ke sumber daya ini, lihat bagian Pertimbangan keamanan untuk memantau data nanti di artikel ini.

Izin pemantauan dan peran kustom Azure

Jika peran bawaan tidak memenuhi kebutuhan tim Anda, Anda dapat membuat peran kustom Azure dengan izin terperinci.

Misalnya, Anda dapat menggunakan izin terperinci untuk membuat peran kustom Azure untuk Pembaca Log Aktivitas dengan skrip PowerShell berikut.

$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 

Catatan

Akses ke pemberitahuan, pengaturan diagnostik, dan metrik untuk sumber daya mengharuskan pengguna memiliki akses baca ke jenis sumber daya dan cakupan sumber daya tersebut. Membuat pengaturan diagnostik yang mengirim data ke akun penyimpanan atau streaming ke hub peristiwa mengharuskan pengguna juga memiliki izin ListKeys pada sumber daya target.

Menetapkan peran

Catatan

Sebaiknya Anda menggunakan modul Azure Az PowerShell untuk berinteraksi dengan Azure. Lihat Menginstal Azure PowerShell untuk memulai. Untuk mempelajari cara bermigrasi ke modul Az PowerShell, lihat Memigrasikan Azure PowerShell dari AzureRM ke Az.

Untuk menetapkan peran, lihat Menetapkan peran Azure menggunakan Azure PowerShell.

Misalnya, skrip PowerShell berikut menetapkan peran ke pengguna tertentu.

Ganti <RoleId> dengan ID Peran Pemantauan RBAC yang ingin Anda tetapkan.

Ganti <SubscriptionID>, <ResourceGroupName>, dan <UserPrincipalName> dengan nilai yang sesuai untuk lingkungan Anda.

# 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

Anda juga dapat Menetapkan peran Azure dengan menggunakan portal Azure.

Penting

  • Pastikan Anda memiliki izin yang diperlukan untuk menetapkan peran dalam cakupan yang ditentukan. Anda harus memiliki hak Pemilik atas langganan atau grup sumber daya.
  • Tetapkan akses di grup sumber daya atau langganan tempat sumber daya Anda berada, bukan di sumber daya itu sendiri.

Kueri PowerShell untuk menentukan keanggotaan peran

Hal ini dapat membantu untuk menghasilkan daftar pengguna yang termasuk dalam peran tertentu. Untuk membantu menghasilkan jenis daftar ini, kueri sampel berikut dapat disesuaikan agar sesuai dengan kebutuhan spesifik Anda.

Kueri seluruh langganan untuk peran Admin + peran Kontributor

(Get-AzRoleAssignment -IncludeClassicAdministrators | Where-Object {$_.RoleDefinitionName -in @('ServiceAdministrator', 'CoAdministrator', 'Owner', 'Contributor') } | Select -ExpandProperty SignInName | Sort-Object -Unique) -Join ", "

Kueri dalam konteks sumber daya Application Insights tertentu untuk pemilik dan kontributor

$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 ", "

Kueri dalam konteks grup sumber daya tertentu untuk pemilik dan kontributor

$resourceGroup = "ResourceGroupName"
(Get-AzRoleAssignment -ResourceGroup $resourceGroup | Where-Object {$_.RoleDefinitionName -in @('Owner', 'Contributor') } | Select -ExpandProperty SignInName | Sort-Object -Unique) -Join ", "

Pertimbangan keamanan untuk data pemantauan

Data di Azure Monitor dapat dikirim di akun penyimpanan atau dialirkan ke pusat aktivitas, yang keduanya merupakan sumber daya Azure tujuan umum. Menjadi sumber daya tujuan umum, membuat, menghapus, dan mengaksesnya adalah operasi istimewa yang disediakan untuk administrator. Karena data ini dapat berisi informasi sensitif seperti alamat IP atau nama pengguna, gunakan praktik berikut untuk memantau sumber daya terkait untuk mencegah penyalahgunaan:

  • Gunakan satu akun penyimpanan khusus untuk data pemantauan. Jika Anda perlu memisahkan data pemantauan ke dalam beberapa akun penyimpanan, selalu gunakan akun penyimpanan yang berbeda untuk memantau data dan jenis data lainnya. Jika Anda berbagi akun penyimpanan untuk pemantauan dan jenis data lainnya, Anda mungkin secara tidak sengaja memberikan akses ke data lain ke organisasi yang seharusnya hanya mengakses data pemantauan. Misalnya, organisasi non-Microsoft untuk informasi keamanan dan manajemen peristiwa seharusnya hanya memerlukan akses ke data pemantauan.
  • Gunakan bus layanan khusus atau namespace layanan hub peristiwa di semua pengaturan diagnostik untuk alasan yang sama seperti yang dijelaskan di poin sebelumnya.
  • Batasi akses ke akun penyimpanan terkait pemantauan atau hub peristiwa dengan menyimpannya dalam grup sumber daya terpisah. Gunakan cakupan pada peran pemantauan Anda untuk membatasi akses hanya ke grup sumber daya tersebut.
  • Anda tidak boleh memberikan izin ListKeys untuk akun penyimpanan atau hub peristiwa pada cakupan langganan saat pengguna hanya memerlukan akses ke data pemantauan. Sebagai gantinya, berikan izin ini kepada pengguna di sumber daya atau cakupan grup sumber daya (jika Anda memiliki grup sumber daya pemantauan khusus).

Saat pengguna atau aplikasi memerlukan akses ke data pemantauan di akun penyimpanan, buat tanda tangan akses bersama (SAS) pada akun penyimpanan yang berisi data pemantauan dengan akses hanya-baca tingkat layanan ke penyimpanan blob. Di PowerShell, akun tanda tangan akses bersama mungkin terlihat seperti kode berikut:

$context = New-AzStorageContext -ConnectionString "[connection string for your monitoring Storage Account]"
$token = New-AzStorageAccountSASToken -ResourceType Service -Service Blob -Permission "rl" -Context $context

Anda kemudian dapat memberikan token ke entitas yang perlu membaca dari akun penyimpanan tersebut. Entitas dapat membuat daftar dan membaca dari semua blob di akun penyimpanan itu.

Atau, jika Anda perlu mengontrol izin ini dengan Azure RBAC, Anda dapat memberikan entitas tersebut izin Microsoft.Storage/storageAccounts/listkeys/action pada akun penyimpanan tertentu tersebut. Izin ini diperlukan bagi pengguna yang perlu mengatur pengaturan diagnostik untuk mengirim data ke akun penyimpanan. Misalnya, Anda dapat membuat peran kustom Azure berikut untuk pengguna atau aplikasi yang perlu membaca hanya dari satu akun penyimpanan:

$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 

Peringatan

Izin ListKeys memungkinkan pengguna mencantumkan kunci akun penyimpanan utama dan sekunder. Kunci ini memberi pengguna semua izin yang ditandatangani (seperti membaca, menulis, membuat blob, dan menghapus blob) di semua layanan yang ditandatangani (blob, antrean, tabel, file) di akun penyimpanan tersebut. Sebaiknya gunakan akun tanda tangan akses bersama jika memungkinkan.

Anda dapat mengikuti pola serupa dengan hub peristiwa, tetapi pertama-tama Anda harus membuat aturan otorisasi khusus untuk mendengarkan. Jika Anda ingin memberikan akses ke aplikasi yang hanya perlu mendengarkan hub peristiwa terkait pemantauan, ikuti langkah-langkah berikut:

  1. Di portal, buat kebijakan akses bersama di hub peristiwa yang dibuat untuk streaming data pemantauan dengan hanya klaim mendengarkan. Misalnya, Anda mungkin menyebutnya "monitoringReadOnly." Jika memungkinkan, berikan kunci itu langsung ke konsumen dan lewati langkah selanjutnya.

  2. Jika konsumen perlu mendapatkan kunci sesuai permintaan, beri pengguna tindakan ListKeys untuk hub peristiwa tersebut. Langkah ini juga diperlukan bagi pengguna yang perlu mengatur pengaturan diagnostik atau profil log untuk melakukan streaming ke hub peristiwa. Misalnya, Anda dapat membuat aturan 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 
    

Langkah berikutnya