Couchbase Server, kullanıclar tarafından yapılan tüm N1QL sorgularını kayıt edebilir. Audit özelliği Couchbase Sever 5.0 sürümünde eklenmiştir ve sadece Enterprise Edition‘da bulunur. Audit özetle, kullanıcıların hangi verilere ulaştığının bilgisini verir. Hassas veriler barındırıyor iseniz, audit ile yetkili kullacılarınızın loglarını tutabilirsiniz.
Audit seçeneğini enable etmek için Security bölümünden Audit sekmesine gidilir ve enable edilir.
Altta görüldüğü üzere ben sadece Query ve Index Service’den Select sorgularını loglamak istiyorum. Bu nedenle sadece Select ifadesini enable ettim. Logların lokasyonu ise yukarıda yazdığı gibi alttaki dizin olacaktır. Audit servisi disable olduğu sürece ilgili lokasyon içerisinde audit.log dosyası olmayacaktır. Audit.log dosyası, servis enable edildiğinde otomatik olarak oluşturulur.
/app/couchbase/inst1/opt/couchbase/var/lib/couchbase/logs
Örnek olarak, Query Service’i barındıran bir node üzerinden altta görüldüğü gibi örnek bir Select sorgusu çalıştıracağım.
select * from travel-sample
limit 5;
travel-sample bucket’ı içerisinden 5 tane döküman sorguladım. Şimdi yapmış olduğum bu Select işlemini audit.log dosyasından teyit edelim.
Bunun için cd komutu ile alttaki dizine gideceğim.
cd /app/couchbase/inst1/opt/couchbase/var/lib/couchbase/logs
ls -ltr komutu ile tüm log dosyalarını görebilirsiniz.
tail -100f audit.log yazarak audit.log dosyasına basılan logları kontrol edeceğim.
Yapmış olduğum Select sorugusunun detaylı bilgileri aşağıdaki gibidir. Audit servisini enable etmek ve logları incelemek gayet basittir. Couchbase, Audit gibi diğer tüm güvenlik işlemlerini arayüzden ve CLI üzerinden çok kolay bir şekilde yapmanıza olanak sağlar.
tail -100f audit.log
{ "clientContextId":"b568b587-0ce0-4a26-8ee0-18e60b4d0a45", "description":"A N1QL SELECT statement was executed", "id":28672, "isAdHoc":true, "metrics":{ "elapsedTime":"2.627444ms", "executionTime":"2.586032ms", "resultCount":5, "resultSize":1296 }, "name":"SELECT statement", "node":"185.59.73.140:8091", "real_userid":{ "domain":"builtin", "user":"Administrator" }, "remote":{ "ip":"185.59.73.140", "port":36668 }, "requestId":"2fc345ce-157d-4792-9bd8-3a8ffd33937f", "statement":"select * from `travel-sample` limit 5;", "status":"success", "timestamp":"2020-07-17T18:36:38.977+03:00", "userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36 OPR/69.0.3686.77 (Couchbase Query Workbench (6.5.1-6299-enterprise))" }{ "bucket":"travel-sample", "description":"The specified bucket was selected", "id":20492, "name":"select bucket", "peername":"127.0.0.1:37784", "real_userid":{ "domain":"local", "user":"@ns_server" }, "sockname":"127.0.0.1:11209", "timestamp":"2020-07-17T18:36:40.119709+03:00" }