Един от аспектите на сигурността при управлението на база данни е да се разбере кой е осъществил достъп до базата данни, кога и какво е правил. Въпреки че вече сме осигурили услугата MongoDB, все още искаме да знаем кой какво прави и да открием дали има нещо странно. При разследване на нарушаване на данните регистрационният файл за одит ни позволява да анализираме историческа дейност, да разберем от коя крайна точка е дошъл нападателят и какви операции е извършил, след като е бил в базата данни.
В този блог ще прегледаме регистрирането на одит за MongoDB и внедряването.
Активиране на регистриране на одит в MongoDB
За да активираме регистрирането на одит в MongoDB, трябва да отидем до конфигурационния файл mongod.conf, раздел auditLog:
auditLog:
destination: file
format: BSON
path: /var/lib/mongodb/audit_mongodb.bson
Има 3 типа дестинации на регистрационни файлове, които са:файл, системен журнал и конзола. В идеалния случай можем да изпратим регистрационния файл за одит във файл в поддържан формат JSON или BSON. Можем също да активираме дневника за одит по време на стартиране на услугата MongoDB, както е показано по-долу:
mongod --dbpath /var/lib/mongodb --auditDestination file --auditFormat BSON --auditPath /var/lib/mongodb/audit_mongodb.bson
Филтър за одит в MongoDB
В секцията auditLog все още има параметър, наречен филтър. Можем да филтрираме модела на действие, който искаме да регистрираме. Например, ако искаме да регистрираме удостоверяване в конкретна база данни, можем да използваме командата по-долу:
auditLog:
destination: file
format: BSON
path: /var/lib/mongodb/audit_mongodb.bson
filter: '{ atype: "authenticate", "param.db": "user_profile" }'
Той ще проследява всяко удостоверяване към базата данни user_profile. Друг пример:искаме да проследим действията; пуснете индекс, преименувайте колекцията и пуснете колекцията в база данни user_profile. Командата ще бъде:
auditLog:
destination: file
format: BSON
path: /var/lib/mongodb/audit_mongodb.bson
filter: { atype: { $in: [ "dropIndex", "renameCollection", "dropCollection" ] }, "param.ns": /^user_profile\\./ } }
Можем също така да наблюдаваме процеса на одит за конкретни роли, ще трябва да дефинираме ролите и базата данни във филтъра:
auditLog:
destination: file
format: BSON
path: /var/lib/mongodb/audit_mongodb.bson
filter: { roles: { role: "readWrite", db: "user_profile" } }
Той ще регистрира всяко действие, свързано с потребителя, който има роли readWrite в базата данни user_profile.
За регистриране на одит на операции за запис и четене първо трябва да активираме auditAuthorizationSuccess в MongoDB. Можем да изпълним командата по-долу:
db.adminCommand( { setParameter: 1, auditAuthorizationSuccess: true } )
Или друга опция е да промените следното в mongod.conf, както следва:
auditLog:
destination: file
format: BSON
path: /var/lib/mongodb/audit_mongodb.bson
filter: { roles: { role: "readWrite", db: "user_profile" } }
setParameter: { auditAuthorizationSuccess: true }
Percona Server за MongoDB предоставя функциите за регистриране на одита безплатно, докато в MongoDB той е достъпен само в Enterprise Edition. Моля, имайте предвид, че активирането на параметъра ще повлияе на производителността на базата данни на вашия MongoDB, особено в производствената среда.
Какво следва?
Можем да изпратим дневника за одит на MongoDB до система за управление на регистриране, например:стек ELK (Elasticsearch, Logstash и Kibana) или можем да използваме системата за управление на регистрационни файлове от доставчика за целите на анализа.
Най-простият начин е да използвате помощната програма jq tools в средата на Linux, за да прочетете регистрационния файл във формат JSON или BSON.