Cara mengaudit operasi sarana kontrol Microsoft Azure Cosmos DB
BERLAKU UNTUK: NoSQL
MongoDB
Cassandra
Gremlin
Meja
Sarana Kontrol di Azure Cosmos DB adalah layanan RESTful yang memungkinkan Anda melakukan serangkaian operasi yang beragam di akun Azure Cosmos DB. Ini memaparkan model sumber daya publik (misalnya: database, akun) dan berbagai operasi kepada pengguna akhir untuk melakukan tindakan pada model sumber daya. Operasi sarana kontrol mencakup perubahan pada akun atau kontainer Azure Cosmos DB. Misalnya, operasi seperti membuat akun Azure Cosmos DB, menambahkan wilayah, memperbarui throughput, failover wilayah, menambahkan VNet, dll. adalah beberapa operasi sarana kontrol. Artikel ini menjelaskan cara mengaudit operasi sarana kontrol di Microsoft Azure Cosmos DB. Anda dapat menjalankan operasi sarana kontrol di akun Azure Cosmos DB dengan menggunakan Azure CLI, PowerShell, atau portal Azure, sedangkan untuk kontainer, menggunakan Azure CLI atau PowerShell.
Berikut ini adalah beberapa contoh skenario di mana operasi audit sarana kontrol sangat membantu:
Anda ingin mendapatkan pemberitahuan saat aturan firewall untuk akun Azure Cosmos DB Anda dimodifikasi. Pemberitahuan diperlukan untuk menemukan modifikasi yang tidak sah pada aturan yang mengatur keamanan jaringan akun Azure Cosmos DB Anda dan mengambil tindakan cepat.
Anda ingin mendapatkan pemberitahuan jika wilayah baru ditambahkan atau dihapus dari akun Azure Cosmos DB Anda. Penambahan atau penghapusan wilayah memiliki implikasi pada persyaratan tagihan dan kedaulatan data. Pemberitahuan ini akan membantu Anda mendeteksi penambahan atau penghapusan wilayah yang tidak disengaja di akun Anda.
Anda ingin mendapatkan detail lebih lanjut dari log diagnostik tentang hal-hal yang telah berubah. Misalnya, VNet diubah.
Menonaktifkan akses penulisan metadata berbasis kunci
Sebelum mengaudit operasi sarana kontrol di Microsoft Azure Cosmos DB, nonaktifkan akses penulisan metadata berbasis kunci pada akun Anda. Ketika akses tulis metadata berbasis kunci dinonaktifkan, klien yang terhubung ke akun Azure Cosmos DB melalui kunci akun dicegah mengakses akun. Anda dapat menonaktifkan akses penulisan dengan mengatur properti disableKeyBasedMetadataWriteAccess
ke true. Setelah Anda mengatur properti ini, perubahan pada sumber daya apa pun dapat terjadi dari pengguna dengan peran dan kredensial Microsoft Azure yang tepat.
Setelah disableKeyBasedMetadataWriteAccess
diaktifkan, jika klien berbasis SDK menjalankan operasi pembuatan atau pembaruan, kesalahan "Operasi 'POST' pada sumber daya 'ContainerNameorDatabaseName' tidak diizinkan melalui titik akhir Microsoft Azure Cosmos DB akan ditampilkan. Anda harus mengaktifkan akses ke operasi tersebut untuk akun Anda, atau melakukan operasi pembuatan/pembaruan melalui Microsoft Azure Resource Manager, Microsoft Azure CLI, atau Microsoft Azure PowerShell. Untuk beralih kembali, atur disableKeyBasedMetadataWriteAccess ke false dengan menggunakan Azure CLI. Pastikan untuk mengubah nilai disableKeyBasedMetadataWriteAccess
menjadi salah, bukan benar.
Pertimbangkan poin berikut saat menonaktifkan akses penulisan metadata:
Evaluasi dan pastikan bahwa aplikasi Anda tidak melakukan panggilan metadata yang mengubah sumber daya di atas (Misalnya, pembuatan koleksi, pembaruan throughput, ...) menggunakan SDK atau kunci akun.
Jika
disableKeyBasedMetadataWriteAccess
diatur ke true, operasi metadata yang dikeluarkan oleh SDK akan diblokir. Atau, Anda dapat menggunakan portal Microsoft Azure, Azure CLI, Azure PowerShell, atau penerapan templat Azure Resource Manager untuk melakukan operasi ini.
Aktifkan log diagnostik untuk operasi sarana kontrol
Anda dapat mengaktifkan log diagnostik untuk operasi sarana kontrol menggunakan portal Microsoft Azure. Setelah pengaktifan, log diagnostik akan merekam operasi tersebut sebagai pasangan peristiwa awal dan selesai dengan detail yang relevan. Misalnya, RegionFailoverStart dan RegionFailoverComplete akan menyelesaikan peristiwa kegagalan wilayah.
Gunakan langkah-langkah berikut untuk mengaktifkan pembuatan log pada operasi sarana kontrol:
Masuk ke portal Azure dan navigasi ke akun Azure Cosmos DB Anda.
Buka panel Pengaturan diagnostik, masukkan Nama log agar dibuat.
Pilih ControlPlaneRequests untuk jenis log lalu pilih opsi Kirim ke Analitik Log.
Secara opsional, kirim log diagnostik ke Azure Storage, Azure Event Hubs, Azure Monitor, atau pihak ketiga.
Anda juga dapat menyimpan log di akun penyimpanan atau melakukan streaming ke hub peristiwa. Artikel ini menunjukkan cara mengirim log ke analitik log lalu mengkuerinya. Setelah Anda mengaktifkan, dibutuhkan beberapa menit agar log diagnostik berlaku. Semua operasi sarana kontrol yang dilakukan setelah titik itu dapat dilacak. Cuplikan layar berikut menunjukkan cara mengaktifkan log sarana kontrol:
Menampilkan operasi sarana kontrol
Setelah Anda mengaktifkan pembuatan log, gunakan langkah-langkah berikut untuk melacak operasi untuk akun tertentu:
Masuk ke portal Azure.
Buka tab Monitor dari navigasi sebelah kiri lalu pilih panel Log. Tindakan ini akan membuka UI di mana Anda dapat dengan mudah menjalankan kueri dengan akun tertentu dalam cakupan. Jalankan kueri berikut untuk menampilkan log sarana kontrol:
AzureDiagnostics | where ResourceProvider=="MICROSOFT.DOCUMENTDB" and Category=="ControlPlaneRequests" | where TimeGenerated >= ago(1h)
Cuplikan layar berikut mengambil log saat tingkat konsistensi diubah untuk akun Azure Cosmos DB.
activityId_g
Nilai dari hasil berbeda dari ID aktivitas operasi:Cuplikan layar berikut ini menangkap log saat keyspace atau tabel akun Cassandra dibuat dan saat throughput diperbarui. Log sarana kontrol untuk operasi pembuatan dan pembaruan pada database dan kontainer dicatat secara terpisah seperti yang ditunjukkan pada cuplikan layar berikut:
Mengidentifikasi identitas yang berkaitan dengan operasi tertentu
Jika Anda ingin men-debug lebih lanjut, Anda dapat mengidentifikasi operasi tertentu di Log aktivitas menggunakan activityId_g
atau dengan tanda waktu operasi. Tanda waktu digunakan untuk beberapa klien Resource Manager di mana ID aktivitas tidak diloloskan secara eksplisit. Log aktivitas memberikan detail tentang identitas yang memulai operasi. Cuplikan layar berikut memperlihatkan cara menggunakan activityId_g
untuk menemukan operasi yang terkait dengannya dalam Log aktivitas:
Operasi sarana kontrol untuk akun Azure Cosmos DB
Berikut ini adalah operasi sarana kontrol yang tersedia di tingkat akun. Sebagian besar operasi dilacak pada tingkat akun. Operasi ini tersedia sebagai metrik di Microsoft Azure monitor:
- Wilayah ditambahkan
- Wilayah dihapus
- Akun dihapus
- Wilayah gagal
- Akun dibuat
- Jaringan virtual dihapus
- Pengaturan jaringan akun diperbarui
- Pengaturan replikasi akun diperbarui
- Kunci akun diperbarui
- Pengaturan pencadangan akun diperbarui
- Pengaturan diagnostik akun diperbarui
Operasi sarana kontrol untuk database atau kontainer
Berikut ini adalah operasi sarana kontrol yang tersedia di tingkat database dan kontainer. Operasi ini tersedia sebagai metrik di Microsoft Azure monitor:
- SQL Database Dibuat
- SQL Database Diperbarui
- Throughput SQL Database Diperbarui
- SQL Database Dihapus
- Kontainer SQL dibuat
- Kontainer SQL Diperbarui
- Throughput Kontainer SQL Diperbarui
- Kontainer SQL Dihapus
- Keyspace Cassandra Dibuat
- Keyspace Cassandra Diperbarui
- Throughput Keyspace Cassandra Diperbarui
- Keyspace Cassandra Dihapus
- Tabel Cassandra Dibuat
- Tabel Cassandra Diperbarui
- Throughput Tabel Cassandra Diperbarui
- Tabel Cassandra Dihapus
- Database Gremlin Dibuat
- Database Gremlin Diperbarui
- Throughput Database Gremlin Diperbarui
- Database Gremlin Dihapus
- Microsoft Azure Active Directory Graph Gremlin Dibuat
- Microsoft Azure Active Directory Graph Gremlin Diperbarui
- Throughput Microsoft Azure Active Directory Graph Gremlin Diperbarui
- Microsoft Azure Active Directory Graph Gremlin Dihapus
- Database Mongo Dibuat
- Database Mongo Diperbarui
- Throughput Database Mongo Diperbarui
- Database Mongo Dihapus
- Koleksi Mongo Dibuat
- Koleksi Mongo Diperbarui
- Throughput Koleksi Mongo Diperbarui
- Koleksi Mongo Dihapus
- Tabel Microsoft AzureTable Dibuat
- Tabel Microsoft AzureTable Diperbarui
- Throughput Tabel Microsoft AzureTable Diperbarui
- Tabel Microsoft AzureTable Dihapus
Operasi log diagnostik
Berikut ini adalah nama operasi dalam log diagnostik untuk operasi lain:
- RegionAddStart, RegionAddComplete
- RegionRemoveStart, RegionRemoveComplete
- AccountDeleteStart, AccountDeleteComplete
- RegionFailoverStart, RegionFailoverComplete
- AccountCreateStart, AccountCreateComplete
- AccountUpdateStart, AccountUpdateComplete
- VirtualNetworkDeleteStart, VirtualNetworkDeleteComplete
- DiagnosticLogUpdateStart, DiagnosticLogUpdateComplete
Untuk operasi khusus API, operasi diberi nama dengan format berikut:
- ApiKind + ApiKindResourceType + OperationType
- ApiKind + ApiKindResourceType + "Throughput" + operationType
Contoh
- CassandraKeyspacesCreate
- CassandraKeyspacesUpdate
- CassandraKeyspacesThroughputUpdate
- SqlContainersUpdate
Properti ResourceDetails berisi seluruh badan sumber daya sebagai payload permintaan dan berisi semua properti yang diminta untuk diperbarui
Kueri log diagnostik untuk operasi sarana kontrol
Berikut ini adalah beberapa contoh untuk mendapatkan log diagnostik untuk operasi sarana kontrol:
AzureDiagnostics
| where Category startswith "ControlPlane"
| where OperationName contains "Update"
| project httpstatusCode_s, statusCode_s, OperationName, resourceDetails_s, activityId_g
AzureDiagnostics
| where Category =="ControlPlaneRequests"
| where TimeGenerated >= todatetime('2020-05-14T17:37:09.563Z')
| project TimeGenerated, OperationName, apiKind_s, apiKindResourceType_s, operationType_s, resourceDetails_s
AzureDiagnostics
| where Category == "ControlPlaneRequests"
| where OperationName startswith "SqlContainersUpdate"
AzureDiagnostics
| where Category == "ControlPlaneRequests"
| where OperationName startswith "SqlContainersThroughputUpdate"
Kueri untuk mendapatkan activityId dan pemanggil yang memulai operasi penghapusan kontainer:
(AzureDiagnostics
| where Category == "ControlPlaneRequests"
| where OperationName == "SqlContainersDelete"
| where TimeGenerated >= todatetime('9/3/2020, 5:30:29.300 PM')
| summarize by activityId_g )
| join (
AzureActivity
| parse HTTPRequest with * "clientRequestId\": \"" activityId_g "\"" *
| summarize by Caller, HTTPRequest, activityId_g)
on activityId_g
| project Caller, activityId_g
Kueri untuk mendapatkan pembaruan indeks atau ttl. Anda kemudian dapat membandingkan output kueri ini dengan pembaruan yang lebih lama untuk melihat perubahan indeks atau ttl.
AzureDiagnostics
| where Category =="ControlPlaneRequests"
| where OperationName == "SqlContainersUpdate"
| project resourceDetails_s
output:
{id:skewed,indexingPolicy:{automatic:true,indexingMode:consistent,includedPaths:[{path:/*,indexes:[]}],excludedPaths:[{path:/_etag/?}],compositeIndexes:[],spatialIndexes:[]},partitionKey:{paths:[/pk],kind:Hash},defaultTtl:1000000,uniqueKeyPolicy:{uniqueKeys:[]},conflictResolutionPolicy:{mode:LastWriterWins,conflictResolutionPath:/_ts,conflictResolutionProcedure:}