Mengaudit acara Amazon DocumentDB - Amazon DocumentDB

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Mengaudit acara Amazon DocumentDB

Dengan Amazon DocumentDB (dengan kompatibilitas MongoDB), Anda dapat mengaudit peristiwa yang dilakukan di klaster Anda. Contoh log acara termasuk upaya autentikasi yang berhasil dan gagal, membuang koleksi dalam basis data, atau membuat indeks. Secara default, pengauditan dinonaktifkan di Amazon DocumentDB dan mengharuskan Anda untuk menggunakan fitur ini.

Saat audit diaktifkan, Amazon DocumentDB mencatat Data Definition DDL Language (), Data Manipulation DML Language (), otentikasi, otorisasi, dan peristiwa manajemen pengguna ke Amazon Logs. CloudWatch Saat audit diaktifkan, Amazon DocumentDB mengekspor catatan audit JSON (dokumen) klaster Anda ke Amazon Logs. CloudWatch Anda dapat menggunakan CloudWatch Log Amazon untuk menganalisis, memantau, dan mengarsipkan peristiwa audit Amazon DocumentDB Anda.

Meskipun Amazon DocumentDB tidak membebankan biaya tambahan untuk mengaktifkan audit, Anda dikenakan tarif standar untuk penggunaan Log. CloudWatch Untuk informasi tentang harga CloudWatch Log, lihat CloudWatch harga Amazon.

Fitur audit Amazon DocumentDB jelas berbeda dari penggunaan sumber daya layanan yang dipantau. AWS CloudTrail CloudTrail merekam operasi yang dilakukan dengan AWS Command Line Interface (AWS CLI) atau AWS Management Console pada sumber daya seperti cluster, instance, grup parameter, dan snapshot. Audit sumber daya aktif CloudTrail secara default dan tidak dapat dinonaktifkan. Fitur audit Amazon DocumentDB adalah fitur keikutsertaan. Ini mencatat operasi yang terjadi dalam klaster Anda pada objek, seperti basis data, koleksi, indeks, dan pengguna.

Acara yang didukung

Audit Amazon DocumentDB mendukung kategori acara berikut:

  • Data Definition Language (DDL) - termasuk operasi manajemen database, koneksi, manajemen pengguna, dan otorisasi.

  • Data Manipulation Language read events (DMLread) - termasuk find() dan berbagai operator agregasi, operator aritmatika, operator boolean, dan operator kueri baca lainnya.

  • Manipulasi Data Bahasa menulis peristiwa (DMLmenulis) - termasuk insert(), update(), delete(), dan bulkWrite() operator

Jenis peristiwanya adalah sebagai berikut.

Jenis Acara Kategori Deskripsi
authCheck Otorisasi Kode hasil 0: Sukses
Kode hasil 13: Upaya tidak sah untuk melakukan operasi.
authenticate Koneksi Upaya autentikasi yang berhasil atau gagal pada koneksi baru.
auditConfigure DDL Konfigurasi filter audit.
createDatabase DDL Pembuatan basis data baru.
createCollection DDL Pembuatan koleksi baru dalam basis data.
createIndex DDL Pembuatan indeks baru dalam koleksi.
dropCollection DDL Menghapus koleksi dalam basis data.
dropDatabase DDL Menghapus basis data.
dropIndex DDL Menghapus indeks dalam koleksi.
modifyChangeStreams DDL Ubah aliran telah dibuat.
renameCollection DDL Mengganti nama koleksi dalam database.
createRole Manajemen Peran Menciptakan peran.
dropAllRolesFromDatabase Manajemen Peran Menjatuhkan semua peran dalam database.
dropRole Manajemen Peran Menjatuhkan peran.
grantPrivilegesToRole Manajemen Peran Memberikan hak istimewa untuk suatu peran.
grantRolesToRole Manajemen Peran Memberikan peran ke peran yang ditentukan pengguna.
revokePrivilegesFromRole Manajemen Peran Mencabut hak istimewa dari suatu peran.
revokeRolesFromRole Manajemen Peran Mencabut peran dari peran yang ditentukan pengguna.
updateRole Manajemen Peran Memperbarui peran.
createUser Manajemen pengguna Pembuatan pengguna baru.
dropAllUsersFromDatabase Manajemen pengguna Menghapus semua pengguna dalam basis data.
dropUser Manajemen pengguna Menghapus pengguna yang ada.
grantRolesToUser Manajemen pengguna Memberikan peran kepada pengguna.
revokeRolesFromUser Manajemen pengguna Mencabut peran dari pengguna.
updateUser UserManagement Memperbarui pengguna yang sudah ada.
insert DMLmenulis Menyisipkan dokumen atau dokumen ke dalam koleksi.
delete DMLmenulis Menghapus dokumen atau dokumen dari koleksi.
update DMLmenulis Memodifikasi dokumen atau dokumen yang ada dalam koleksi.
bulkWrite DMLmenulis Melakukan beberapa operasi tulis dengan kontrol untuk urutan eksekusi.
setAuditConfig DMLmenulis Tetapkan filter baru untuk DML audit.
count DMLmembaca Mengembalikan jumlah dokumen yang akan cocok dengan query find () untuk koleksi atau tampilan.
countDocuments DMLmembaca Mengembalikan jumlah dokumen yang cocok dengan query untuk koleksi atau tampilan.
find DMLmembaca Memilih dokumen dalam koleksi atau tampilan dan mengembalikan kursor ke dokumen yang dipilih.
getAuditConfig DMLmembaca Ambil filter saat ini untuk DML audit.
findAndModify DMLmembaca dan DML menulis Memodifikasi dan mengembalikan satu dokumen.
findOneAndDelete DMLmembaca dan DML menulis Menghapus satu dokumen berdasarkan filter dan kriteria pengurutan, mengembalikan dokumen yang dihapus.
findOneAndReplace DMLmembaca dan DML menulis Menggantikan satu dokumen berdasarkan filter yang ditentukan.
findOneAndUpdate DMLmembaca dan DML menulis Memperbarui satu dokumen berdasarkan filter dan kriteria pengurutan.
aggregate DMLmembaca dan DML menulis Mendukung APIs dalam pipa agregasi.
distinct DMLmembaca Menemukan nilai yang berbeda untuk bidang tertentu di satu koleksi atau tampilan dan mengembalikan hasilnya dalam array.
catatan

Nilai di bidang parameter dokumen DML peristiwa memiliki batas ukuran 1KB. Amazon DocumentDB memotong nilainya jika melebihi 1KB.

catatan

TTLHapus peristiwa tidak diaudit saat ini.

Mengaktifkan audit

Mengaktifkan audit pada klaster adalah proses dua langkah. Pastikan bahwa kedua langkah selesai, atau log audit tidak akan dikirim ke CloudWatch Log.

Langkah 1. Aktifkan parameter klaster audit_logs

Untuk mengaktifkan audit, Anda perlu memodifikasi audit_logs parameter dalam grup parameter. audit_logsadalah daftar peristiwa yang dibatasi koma untuk dicatat. Peristiwa harus ditentukan dalam huruf kecil dan seharusnya tidak ada spasi putih di antara elemen daftar.

Anda dapat mengatur nilai berikut untuk grup parameter:

Nilai Deskripsi
ddl Pengaturan ini akan memungkinkan audit untuk DDL acara seperticreateDatabase,,, dropDatabasecreateCollection,dropCollection, createIndexdropIndex, otentikasiauthCheck,,createUser, grantRolesTo PenggunadropUser, revokeRolesFrom Pengguna, updateUser dan dropAllUsers FromDatabase
dml_read Menyetel ini akan memungkinkan audit untuk peristiwa DML baca seperti find, sort count, distinct, group, projecta, unwind,,geoNear, geoIntersects dan operator kueri baca geoWithin MongoDB lainnya.
dml_write Pengaturan ini akan memungkinkan audit untuk acara DML tulis seperti insert (), update (), delete (), dan bulkWrite ()
all Pengaturan ini akan memungkinkan audit untuk peristiwa database Anda, seperti kueri baca, kueri tulis, tindakan database, dan tindakan administrator.
none Pengaturan ini akan menonaktifkan audit
enabled(warisan) Ini adalah pengaturan parameter lama yang setara dengan 'ddl'. Pengaturan ini akan memungkinkan audit untuk DDL acara seperticreateDatabase,,,dropDatabase, createCollectiondropCollection, createIndexdropIndex, otentikasiauthCheck,,createUser, grantRolesTo PenggunadropUser, revokeRolesFrom PenggunaupdateUser, dan. dropAllUsers FromDatabase Kami tidak menyarankan menggunakan pengaturan ini karena ini adalah pengaturan lama.
disabled (warisan) Ini adalah pengaturan parameter lama yang setara dengan 'tidak ada'. Kami tidak menyarankan menggunakan pengaturan ini karena ini adalah pengaturan lama.
catatan

Nilai default untuk parameter cluster audit_logs adalah none (legacy "“disabled).

Anda juga dapat menggunakan nilai yang disebutkan di atas dalam kombinasi.

Nilai Deskripsi
ddl, dml_read Pengaturan ini akan memungkinkan audit untuk DDL acara dan DML membaca acara.
ddl, dml_write Pengaturan ini akan memungkinkan audit untuk DDL acara dan menulis DML
dml_read, dml_write Menyetel ini akan memungkinkan audit untuk semua acara DML
catatan

Anda tidak dapat memodifikasi grup parameter default.

Untuk informasi selengkapnya, lihat berikut ini:

Langkah 2. Aktifkan ekspor CloudWatch Log Amazon

Ketika nilai parameter audit_logs cluster adalahenabled,,, atau ddl dml_readdml_write, Anda juga harus mengaktifkan Amazon DocumentDB untuk mengekspor log ke Amazon. CloudWatch Jika Anda menghilangkan salah satu dari langkah-langkah ini, log audit tidak akan dikirim ke CloudWatch.

Saat membuat klaster, melakukan point-in-time-restore, atau memulihkan snapshot, Anda dapat mengaktifkan CloudWatch Log dengan mengikuti langkah-langkah berikut.

Using the AWS Management Console

Untuk mengaktifkan Amazon DocumentDB mengekspor log CloudWatch untuk menggunakan konsol, lihat topik berikut:

Using the AWS CLI
Untuk mengaktifkan log audit saat membuat klaster baru

Kode berikut membuat cluster sample-cluster dan memungkinkan log CloudWatch audit.

Untuk Linux, macOS, atau Unix:

aws docdb create-db-cluster \ --db-cluster-identifier sample-cluster \ --port 27017 \ --engine docdb \ --master-username master-username \ --master-user-password password \ --db-subnet-group-name default \ --enable-cloudwatch-logs-exports audit

Untuk Windows:

aws docdb create-db-cluster ^ --db-cluster-identifier sample-cluster ^ --port 27017 ^ --engine docdb ^ --master-username master-username ^ --master-user-password password ^ --db-subnet-group-name default ^ --enable-cloudwatch-logs-exports audit
Untuk mengaktifkan log audit ketika memodifikasi klaster yang ada

Kode berikut memodifikasi cluster sample-cluster dan memungkinkan log CloudWatch audit.

Untuk Linux, macOS, atau Unix:

aws docdb modify-db-cluster \ --db-cluster-identifier sample-cluster \ --cloudwatch-logs-export-configuration '{"EnableLogTypes":["audit"]}'

Untuk Windows:

aws docdb modify-db-cluster ^ --db-cluster-identifier sample-cluster ^ --cloudwatch-logs-export-configuration '{"EnableLogTypes":["audit"]}'

Output dari operasi ini terlihat seperti berikut (JSONformat).

{ "DBCluster": { "HostedZoneId": "ZNKXH85TT8WVW", "StorageEncrypted": false, "DBClusterParameterGroup": "default.docdb4.0", "MasterUsername": "<user-name>", "BackupRetentionPeriod": 1, "Port": 27017, "VpcSecurityGroups": [ { "Status": "active", "VpcSecurityGroupId": "sg-77186e0d" } ], "DBClusterArn": "arn:aws:rds:us-east-1:900083794985:cluster:sample-cluster", "Status": "creating", "Engine": "docdb", "EngineVersion": "4.0.0", "MultiAZ": false, "AvailabilityZones": [ "us-east-1a", "us-east-1c", "us-east-1f" ], "DBSubnetGroup": "default", "DBClusterMembers": [], "ReaderEndpoint": "sample-cluster.cluster-ro-corcjozrlsfc.us-east-1.docdb.amazonaws.com", "EnabledCloudwatchLogsExports": [ "audit" ], "PreferredMaintenanceWindow": "wed:03:08-wed:03:38", "AssociatedRoles": [], "ClusterCreateTime": "2019-02-13T16:35:04.756Z", "DbClusterResourceId": "cluster-YOS52CUXGDTNKDQ7DH72I4LED4", "Endpoint": "sample-cluster.cluster-corcjozrlsfc.us-east-1.docdb.amazonaws.com", "PreferredBackupWindow": "07:16-07:46", "DBClusterIdentifier": "sample-cluster" } }

Menonaktifkan audit

Anda dapat menonaktifkan audit dengan menonaktifkan ekspor CloudWatch Log dan menonaktifkan parameter. audit_logs

Menonaktifkan ekspor Log CloudWatch

Anda dapat menonaktifkan mengekspor log audit menggunakan file AWS Management Console atau file. AWS CLI

Using the AWS Management Console

Prosedur berikut menggunakan AWS Management Console untuk menonaktifkan Amazon DocumentDB mengekspor log ke. CloudWatch

Untuk menonaktifkan log audit
  1. Masuk ke AWS Management Console, dan buka konsol Amazon DocumentDB di /docdb. https://console.aws.amazon.com

  2. Di panel navigasi, pilih Klaster. Lalu, pilih tombol di sebelah kiri nama klaster yang log ekspornya ingin Anda nonaktifkan.

  3. Pilih Tindakan, lalu pilih Modifikasi.

  4. Gulir ke bawah ke bagian Ekspor log dan pilih Nonaktif.

  5. Pilih Lanjutkan.

  6. Tinjau perubahan Anda, lalu pilih kapan Anda ingin perubahan ini diterapkan ke klaster Anda.

    • Terapkan selama jendela pemeliharaan terjadwal berikutnya

    • Terapkan segera

  7. Pilih Ubah klaster.

Using the AWS CLI

Kode berikut memodifikasi cluster sample-cluster dan menonaktifkan log CloudWatch audit.

Untuk Linux, macOS, atau Unix:

aws docdb modify-db-cluster \ --db-cluster-identifier sample-cluster \ --cloudwatch-logs-export-configuration '{"DisableLogTypes":["audit"]}'

Untuk Windows:

aws docdb modify-db-cluster ^ --db-cluster-identifier sample-cluster ^ --cloudwatch-logs-export-configuration '{"DisableLogTypes":["audit"]}'

Output dari operasi ini terlihat seperti berikut (JSONformat).

{ "DBCluster": { "DBClusterParameterGroup": "default.docdb4.0", "HostedZoneId": "ZNKXH85TT8WVW", "MasterUsername": "<user-name>", "Status": "available", "Engine": "docdb", "Port": 27017, "AvailabilityZones": [ "us-east-1a", "us-east-1c", "us-east-1f" ], "EarliestRestorableTime": "2019-02-13T16:35:50.387Z", "DBSubnetGroup": "default", "LatestRestorableTime": "2019-02-13T16:35:50.387Z", "DBClusterArn": "arn:aws:rds:us-east-1:900083794985:cluster:sample-cluster2", "Endpoint": "sample-cluster2.cluster-corcjozrlsfc.us-east-1.docdb.amazonaws.com", "ReaderEndpoint": "sample-cluster2.cluster-ro-corcjozrlsfc.us-east-1.docdb.amazonaws.com", "BackupRetentionPeriod": 1, "EngineVersion": "4.0.0", "MultiAZ": false, "ClusterCreateTime": "2019-02-13T16:35:04.756Z", "DBClusterIdentifier": "sample-cluster2", "AssociatedRoles": [], "PreferredBackupWindow": "07:16-07:46", "DbClusterResourceId": "cluster-YOS52CUXGDTNKDQ7DH72I4LED4", "StorageEncrypted": false, "PreferredMaintenanceWindow": "wed:03:08-wed:03:38", "DBClusterMembers": [], "VpcSecurityGroups": [ { "Status": "active", "VpcSecurityGroupId": "sg-77186e0d" } ] } }

Menonaktifkan parameter audit_logs

Untuk menonaktifkan parameter audit_logs pada klaster, Anda dapat memodifikasi klaster agar menggunakan grup parameter ketika nilai parameter audit_logs adalah disabled. Atau Anda dapat mengubah nilai parameter audit_logs di grup parameter klaster sehingga menjadi disabled.

Untuk informasi selengkapnya, lihat topik berikut.

Mengakses acara audit Anda

Gunakan langkah-langkah berikut untuk mengakses peristiwa audit Anda di Amazon CloudWatch.

  1. Buka CloudWatch konsol di https://console.aws.amazon.com/cloudwatch/.

  2. Pastikan Anda berada di Wilayah yang sama dengan klaster Amazon DocumentDB Anda.

  3. Pilih Log di panel navigasi.

  4. Untuk menemukan log audit pada klaster Anda, dari daftar yang tersedia, cari dan pilih /aws/docdb/yourClusterName/audit.

    Peristiwa audit untuk setiap instans Anda tersedia di bawah setiap nama instans masing-masing.

Memfilter acara DML audit

Memulai dengan penyaringan DML audit

DMLperistiwa audit dapat difilter sebelum ditulis ke Amazon CloudWatch. Untuk memanfaatkan fitur ini, log audit dan DML logging harus diaktifkan. Amazon DocumentDB mendukung pemfilteran atype padacommand,,,, user dan. namespace auditAuthorizationSuccess

catatan

DDLperistiwa tidak disaring.

Anda dapat mengaktifkan pemfilteran audit kapan saja dengan menentukan filter audit menggunakansetAuditConfig,filter, dan auditAuthorizationSuccess parameter dalam operasi: db.adminCommand( { command } )

db.admin.runCommand( { setAuditConfig: 1, filter: { //filter conditions }, auditAuthorizationSuccess: true | false } )

Anda juga dapat mengambil pengaturan filter audit dengan menjalankan perintah berikut:

db.admin.runCommand( { getAuditConfig: 1})

Persyaratan keamanan

Hanya pengguna/peran database dengan tindakan istimewa yang auditConfigure dapat menjalankan perintah di atas admindb saat menyetel atau mencantumkan DML filter audit. Anda dapat menggunakan salah satu peran bawaan dari [clusterAdmin,hostManager,root] atau membuat peran khusus yang memiliki auditConfigure hak istimewa. Berikut ini adalah contoh penggunaan peran yang ada dengan hak auditConfigure istimewa dan contoh dengan peran khusus.

Pengguna dengan peran bawaan:

use admin db.createUser( { user: "myClusterAdmin", pwd: "password123", roles: [ { role: "clusterAdmin", db: "admin" } ] } )

Pengguna dengan peran khusus:

use admin db.createRole( { role: "myRole", privileges: [ { resource: { cluster: true }, actions: [ "auditConfigure" ] } ], roles: [] } ) db.createUser( { user: "myUser", pwd: "myPassword", roles: [ { role: "myRole", db: "admin" } ] } )

Memfilter kasus penggunaan

Contoh: memfilter acara dengan perintah

db.admin.runCommand( { setAuditConfig: 1, filter: { "$and": [ { "param.command": { $in: [ "find","count", "insert", "delete", "update", "findandmodify" ] } } ] }, auditAuthorizationSuccess: true } )

Contoh: memfilter acara berdasarkan nama pengguna

Dalam contoh ini, hanya pengguna "myUser" yang akan dicatat:

db.admin.runCommand( { setAuditConfig: 1, filter: { "$and": [ { "param.user": { $in: [ "myUser" ] } } ]}, auditAuthorizationSuccess: true})

Contoh: penyaringan oleh atype

db.admin.runCommand( { setAuditConfig: 1, filter: {atype: "authCheck"}, auditAuthorizationSuccess: true })
catatan

Semua DML log memiliki authCheck sebagaiatype. Hanya DDL memiliki yang berbedaatype. Jika Anda menempatkan nilai selain authCheck difilter, itu tidak akan menghasilkan DML log in CloudWatch.

Contoh: memfilter dengan menggunakan beberapa filter yang digabungkan oleh operator

db.admin.runCommand( { setAuditConfig: 1, filter: { "$and": [ { "param.command": { $in: [ "find","count", "insert", "delete", "update", "findandmodify" ] } } ], "$nor": [ { "param.command": { $in: ["count", "insert", "delete", "update", "findandmodify" ] } }] }, auditAuthorizationSuccess: true})
catatan

Di tingkat atas, hanya$and,$or, dan $nor didukung. Operator lain tidak didukung dan akan menyebabkan kesalahan.

Contoh: memfilter berdasarkan acara berdasarkan auditAuthorizationSuccess

Dalam filter ini, semua perintah yang telah berhasil melewati otorisasi tidak akan dicatat:

db.admin.runCommand( { setAuditConfig: 1, filter: {}, auditAuthorizationSuccess: false } )

Contoh: penyaringan dengan $in dan kondisi $nin

Saat menggunakan keduanya di $in dan$nin, perintah tidak akan dicatat karena akan ada “dan” implisit di antara kondisi. Dalam contoh ini, regex akan memblokir find perintah sehingga tidak ada yang akan dicatat:

db.admin.runCommand( { setAuditConfig: 1, filter: { "$and": [ { atype: "authCheck", "param.command": { $in: [ "find", "insert", "delete", "update", "findandmodify" ], $nin: ["count", "insert", "delete", "update", "findandmodify" ], $not: /^^find.*/ } }, ], "$or": [ { "param.command": { $nin: ["count", "insert", "delete", "update", "findandmodify" ] } }] }, auditAuthorizationSuccess: true})

Contoh: penyaringan oleh namespace

db.admin.runCommand( { setAuditConfig: 1, filter: { "$and": [ { "param.ns": { $in: [ "test.foo" ] } } ]}, auditAuthorizationSuccess: true})

Contoh: mengatur ulang ke filter default

Menyetel ulang ke nilai default berarti bahwa setiap peristiwa DML audit akan dicatat. Untuk mengatur ulang pemfilteran ke nilai default, jalankan perintah berikut:

db.admin.runCommand( { setAuditConfig: 1, filter: {}, auditAuthorizationSuccess: true } )