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 beragam operasi 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 untuk 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. Untuk mempelajari selengkapnya tentang cara mengatur properti ini, lihat artikel Mencegah perubahan dari SDK.

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 seperti yang dijelaskan dalam artikel Mencegah perubahan dari Azure Cosmos DB SDK . 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:

  1. Masuk ke portal Azure dan navigasi ke akun Azure Cosmos DB Anda.

  2. Buka panel Pengaturan diagnostik, masukkan Nama log agar dibuat.

  3. Pilih ControlPlaneRequests untuk jenis log lalu pilih opsi Kirim ke Analitik Log.

  4. 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:

Mengaktifkan pembuatan log permintaan sarana kontrol

Menampilkan operasi sarana kontrol

Setelah Anda mengaktifkan pembuatan log, gunakan langkah-langkah berikut untuk melacak operasi untuk akun tertentu:

  1. Masuk ke portal Microsoft Azure.

  2. 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_gNilai dari hasil berbeda dari ID aktivitas operasi:

    Catatan sarana kontrol ketika VNet ditambahkan

    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:

    Catatan sarana kontrol ketika throughput diperbarui

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_guntuk menemukan operasi yang terkait dengannya dalam Log aktivitas:

Menggunakan ID aktivitas dan menemukan operasi

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:}

Langkah berikutnya