Pokud jde o správu databázových systémů, jedním z klíčových aspektů je zabezpečení databáze. Neschopnost položit dobrý základ pro zabezpečení jakéhokoli databázového systému může mít za následek narušení dat, kdy k nim bude mít neoprávněný přístup třetí strana. V důsledku toho mohou události, jako je tato, vést k poškození pověsti značky, pokutám a sankcím za nedodržení, ohrožení duševního vlastnictví nebo dokonce k uzavření obchodu.
MongoDB – nejoblíbenější databáze NoSQL – poskytuje řadu nástrojů, ovládacích prvků a opatření formulovaných tak, aby poskytly základ pro tři pilíře zabezpečení informací – důvěrnost, integritu a dostupnost. Zabezpečení dat je nejčastěji ohroženo na úrovni důvěrnosti kvůli lepší použitelnosti a přístupu.
Jaké typy dat byste měli chránit
Stejně jako jiné databáze obsahuje MongoDB dva typy dat:
- Data v klidu — Jedná se o data uložená na disku systému souborů.
- Přenos dat – Jedná se o přenos dat po síti, například mezi databází a aplikací.
Aby byla chráněna vaše data v jakékoli databázi, vaše bezpečnostní opatření musí řešit:
- Data v databázových souborech.
- Aplikace spojené s databází.
- Výpočetní a síťová infrastruktura použitá pro přístup k databázi.
- Fyzický databázový server a základní hardware.
Kontrolní seznam zabezpečení MongoDB
Před nastavením produkčního nasazení MongoDB je třeba zvážit minimální standard zabezpečení, aby bylo zajištěno, že vaše nasazení bude bezpečné. Podívejte se na následující kontrolní seznam zabezpečení MongoDB na
-
Upřesněte mechanismus ověřování povolením řízení přístupu . Před povolením přístupu do databáze je nezbytné ověřit identitu uživatele. MongoDB v tomto případě podporuje dva mechanismy:první je Salted Challenge Response Authentication Mechanism (SCRAM), což je výchozí mechanismus ověřování v MongoDB. Ověřuje dodané přihlašovací údaje (uživatelské jméno a heslo) proti ověřovací databázi a ověřování certifikátem X.509 se používá jak pro ověřování klienta, tak pro interní ověřování členů sady replik a sdílených clusterů.
-
Zavedení řízení přístupu na základě rolí . Každá aplikace nebo osoba, která má přístup k databázi, by měla mít jedinečnou identitu vytvořenou administrátorem uživatelů. Definujte role s přesnými přístupovými právy a přiřaďte je uživatelům, kteří potřebují provádět operace.
-
Komunikace mezi mongodem, mongos, aplikacemi a MongoDB by měla být šifrována . Šifrování je dosaženo pomocí konfigurace TLS/SSL.
-
Ochrana dat . Pokud používáte úložiště WiredTiger pro data v klidu, můžete data šifrovat pomocí šifrování v klidu. Pokud používáte jiný modul úložiště, zašifrujte data pomocí souborového systému, fyzického šifrování nebo šifrování zařízení a přidejte oprávnění k systému souborů. Dále můžete před předáním dat ze serveru zašifrovat pole v dokumentech pomocí šifrování na úrovni pole na straně klienta.
-
Zabezpečená síť provozu . MongoDB by měl běžet v důvěryhodném síťovém prostředí, takže k síťovému rozhraní a portům mohou mít přístup pouze důvěryhodní klienti. Toho můžete dosáhnout zakázáním přímého přístupu SSH root a konfigurací nastavení se skupinami zabezpečení pro příchozí a odchozí provoz do instancí MongoDB.
-
Kontrola aktivit systému . Sledování aktivit přístupu uživatelů k databázi je velmi důležité. Audit umožňuje správcům provádět řádné kontroly a povolit řádnou forenzní analýzu. Některá auditovací zařízení, jako je MongoDB Enterprise, poskytují filtry pro konkrétní události, jako jsou události ověřování, aby se snížila data, která je třeba analyzovat.
-
Povolit zabezpečené možnosti konfigurace při spuštění MongoDB . Je vhodné omezit používání kódu JavaScript podporovaného MongoDB, jako je mapReduce, $where a $function. Tyto možnosti můžete zcela zakázat pomocí možnosti --noscripting. Ověřte vstupní pole pomocí modulů, jako je mongoose. Navíc můžete použít net.writeObjectCheck, abyste zajistili, že všechny dokumenty uložené instancí mongoda jsou platné BSON.
-
Spusťte MongoDB s vyhrazeným uživatelem . Nevyplatí se provozovat MongoDB na operačním systému, ke kterému může přistupovat více uživatelů. Pro jistotu by měl MongoDB provozovat vyhrazený systémový uživatelský účet, který má oprávnění pro přístup k datům, ale ne zbytečná oprávnění, která mohou ohrozit integritu dat.
Špatné bezpečnostní postupy MongoDB, kterým je třeba se vyhnout
V poslední době došlo k nárůstu incidentů hackování databází, zejména MongoDB. Není to proto, že MongoDB nesplňuje standardy pro řešení bezpečnostních problémů, ale spíše kvůli selhání vývojářů při dodržování osvědčených bezpečnostních postupů.
MongoDB je open-source DBMS, což znamená, že někteří vývojáři mohou znát detaily a nevýhody více než jiní. To nemusí vždy znamenat, že vaše databáze je ohrožena externím průnikem, pokud nespadnete do některé z následujících chyb:
-
Použití výchozích portů . Na použití výchozích portů (27017 a 27018) není nic špatného, ale někdy můžete zapomenout nastavit skupiny zabezpečení odpovědné za správu provozu ve vašem systému. Hackeři se vždy nejprve pokusí o přístup k databázi s výchozími porty, než zkusí něco jiného. MongoDB můžete spustit na jiném portu s volbou portu, tj. $mongo –port 23456. Doporučený způsob je však změnit konfiguraci v souboru /etc/mongod.conf úpravou řádku níže s preferovaným číslem portu:
net: port:27017
MongoDB ve výchozím nastavení běží bez ověřování, což byl často problém u nových nasazení, která jdou do produkce. Selhání aktivace ověřování znamená, že kdokoli může snadno přistupovat k databázi. Pro interakci s databází MongoDB vždy vytvořte uživatele s přístupovými oprávněními na základě rolí. -
Nesprávné úložiště uživatelských pověření . Někteří vývojáři napevno zakódují přihlašovací údaje pro uživatelské jméno a heslo do projektu, a když je zveřejní, kdokoli k nim může mít přístup, čímž se databáze stává zranitelnou.
-
Neschopnost omezit přístup k databázi na známá síťová zařízení . V tomto případě je třeba vždy omezit přístup k databázi tak, aby znal pouze aplikace a nástroje pro vyrovnávání zatížení prostřednictvím bílé listiny. To omezuje dostupnost databáze na neznámé sítě, které by mohly představovat bezpečnostní hrozbu.
-
Vyhýbání se používání SSL . Ověření SSL je velmi důležité pro zajištění toho, aby se do databáze dostala pouze důvěryhodná připojení.
-
Nepoužívání LDAP pro střídání hesel . LDAP spojuje uživatele s firemním adresářem tak, že když se změní jejich role nebo opustí společnost, změny se automaticky použijí na skupinu databází. Tím je zajištěno, že jejich přístup k datům bude omezen na roli, ke které byli přeřazeni, nebo zcela omezen, pokud společnost opustí.
Posilování síťové infrastruktury
Mnohokrát začínají bezpečnostní hrozby na úrovni síťového ohrožení, protože to je pro většinu hackerů nejsnáze přístupná část. Kromě zajištění přístupu k MongoDB pouze důvěryhodným hostitelům můžete zvýšit zabezpečení prostřednictvím posílení sítě. Posilování sítě zahrnuje dva postupy, pokud jde o MongoDB:
-
Brány firewall . Firewally se používají k omezení příchozího provozu z nedůvěryhodných hostitelů, kteří by jinak vystavili databázi MongoDB vnějšímu narušení. U operačních systémů Windows poskytuje rozhraní příkazového řádku netsh přístup k bráně Windows Firewall. V systémech Linux poskytuje rozhraní iptables přístup k základnímu firewallu netfilter. Firewall odfiltruje nedůvěryhodné hostitele a kromě vytvoření spojení s důvěryhodnými výstupy zajistí, aby se k mongod &mongos dostal pouze provoz z důvěryhodných zdrojů.
-
Virtuální privátní sítě (VPN) . VPN umožňují propojení dvou sítí přes šifrovanou důvěryhodnou síť s omezeným přístupem. Činí tak tím, že poskytují ověřování certifikátů a výběr šifrovacích protokolů, které mohou vyžadovat přísnou úroveň ověřování a identifikaci všech klientů. VPN poskytují bezpečný tunel; připojení vytvořená k instanci MongoDB pomocí VPN tedy mohou zabránit manipulaci a útokům typu man-in-the-middle.
Zabalení
Stejně jako u všech databází s otevřeným zdrojovým kódem by bezpečnost měla být nejvyšší prioritou vaší infrastruktury MongoDB. Nasazení databáze MongoDB s výchozím nastavením je jasná cesta k bezpečnostní katastrofě. Proto je klíčové plně porozumět tomu, jak zabezpečení v MongoDB funguje, a dodržovat všechny osvědčené postupy pro zajištění maximální bezpečnosti. A co je nejdůležitější, auditování uživatelských aktivit, jako je autentizace, poskytuje okno k identifikaci mezer a plánování do budoucna, než dojde ke katastrofě.
Nástroje jako ClusterControl vám pomohou zbavit se zabezpečení databáze dohady a zajistit, že vaše nasazení MongoDB bude vždy odpovídat příslušnému modelu zabezpečení. Pomocí ClusterControl můžete snadno konfigurovat databáze, řízení přístupu a šifrování pro data v klidu a na cestách. Pokud jste to ještě neudělali, stáhněte si ClusterControl ještě dnes a spusťte bezplatnou 30denní zkušební verzi, abyste viděli, jak vám ClusterControl může pomoci spravovat a zlepšovat zabezpečení vaší databáze MongoDB.