Když aplikace vyžaduje k výkonu velkou geografickou oblast, organizace je často nucena ukládat svá data do cloudu. Aplikace postavené na MongoDB nejsou výjimkou z tohoto konceptu. Neschopnost chránit citlivá data může firmě způsobit vážné neúspěchy, včetně zničené pověsti, nekonzistence dat, finančních ztrát a někdy i úplné ztráty dat.
Data uložená v cloudu jsou náchylná k zájmu kriminálních živlů. Lidé se zlými úmysly mohou snadněji získat přístup, když nebyly stanoveny žádné standardní postupy pro zajištění bezpečnosti databáze. Některé z těchto nestandardních postupů zahrnují...
- Špatná správa hesel:někteří vývojáři natvrdo zakódují hesla do zdrojových souborů projektu, takže pokud hacker aplikaci dekompiluje, mohou snadno získat její obsah.
- Neochota nebo neschopnost aktualizovat databázi a doplňkové pluginy. Novější verze databází mají nové funkce, které mohou být z hlediska zabezpečení nebo spíše mají některé funkce opravené z předchůdců.
- Nestandardní konfigurace databáze, například nepoužívající šifrované dešifrovací klíče nebo spíše nepoužívající žádný bezpečnostní protokol .
Databázové útoky den za dnem přibývají (a očekává se, že tento trend bude pokračovat), ale nemusíte se stát obětí, pokud nezohledníte vhodná bezpečnostní opatření. V tomto článku budeme diskutovat o některých postupech, které lze zkontrolovat při instalaci MongoDB v cloudu. Nemusíte je aplikovat všechny, ale alespoň se pokuste nejlépe vybrat ty, které, pokud se jim vyhnete, by mohly vaše data dostat do katastrofální situace.
Předprodukční otázky zabezpečení MongoDB
Toto jsou úvahy, je třeba zajistit, aby byly dobře nakonfigurovány, když se chystáte nasadit MongoDB do produkčního prostředí. Patří mezi ně:
- Povolení a vynucení ověřování pro řízení přístupu
- Konfigurace řízení přístupu na základě rolí
- Omezit expozici v síti
- Šifrovat komunikaci
- Šifrovat data
- Audit systémových aktivit
- Použijte vyhrazeného uživatele ke spuštění MongoDB
- Používejte oficiální a aktualizované balíčky MongoDB
- Pokud není potřeba, zakažte spouštění JavaScriptu
- Být aktualizován pomocí bezpečnostních oprav MongoDB
1. Povolení a vynucení ověřování pro řízení přístupu
Řízení přístupu není v MongoDB ve výchozím nastavení povoleno, ale to neznamená, že nasazujete databázi i bez této možnosti. Ve skutečnosti některé databázové balíčky, jako je Bitnami, budou vyžadovat, abyste před použitím databáze nastavili nějaké řízení přístupu. Pokud tak neučiní, kdokoli může mít přístup k databázi, a tím být vystaven i velmi citlivým datům. Určete nějaký ověřovací mechanismus, jako je SCRAM, aby klienti, kteří budou připojeni, museli před připojením k databázi poskytnout platná pověření.
Připojovací řetězec by měl vypadat nějak takto:
mongodb://[username:[email protected]]host[:port1][/[defaultauthdb]and not just
mongodb://host[:port1]/[defaultauthdb]
2. Konfigurace řízení přístupu založeného na rolích
Po přidání uživatelů s oprávněními správce omezte role přiřazené těmto uživatelům pomocí řízení přístupu založeného na rolích (RBAC). Role, které uživatel může mít, zahrnují:čtení, zápis nebo obojí do konkrétních nebo všech kolekcí. Uživatel proto nemůže vykonávat roli, která mu není přiřazena, nebo může provádět operace pouze s přiřazenými kolekcemi.
Nejprve se vytvoří administrátor uživatelů a poté další uživatelé. Pokud má uživatel oprávnění v různých databázích, můžete vytvořit jednoho uživatele s rolemi, které udělují příslušná databázová oprávnění, namísto vytváření uživatele vícekrát v různých databázích.
Je vhodné, aby k databázi přistupoval malý počet uživatelů, přičemž uživateli mohou být lidé nebo klientské aplikace.
K vytvoření a udělení uživatelských oprávnění pro určité role v MongoDB můžete použít tento příklad v mongo shell
use finance
db.createUser(
{
user: "manager",
pwd: passwordPrompt(), // or cleartext password
roles: [
{ role: "read", db: "loans" },
{ role: "read", db: "interests" },
{ role: "read", db: "useraccounts" },
{ role: "readWrite", db: "wages" }
]
}
)
Zvolte také možnosti externího ověřování, jako je LDAP a Kerberos.
3. Limit Network Exposure
Síťovou topologii, která hostí databázi, je třeba rozsáhle zabezpečit a hlavně naslouchat pouze rozhraní localhost. Je to proto, aby se zabránilo vystavení z vnějších připojení, jako tomu bylo v případě starších verzí MongoDB. Ujistěte se, že MongoDB běží v důvěryhodném síťovém prostředí s povoleným bezpečnostním firewallem. Ovládejte příchozí a odchozí provoz pomocí skupin zabezpečení, které nelze použít s jinými instancemi. Pomocí bílé listiny IP povolte přístup z důvěryhodných IP adres, a povolte tak připojení k instancím MongoDB se síťovými rozhraními a porty pouze od důvěryhodných klientů.
Kromě toho zakažte přímý přístup root SSH.
4. Šifrovat komunikaci
Konfigurace MongoDB by měla omezit příchozí a odchozí připojení pouze na TLS/SSL. TLS/SSL šifruje komunikaci mezi komponentami mongod a mongos nasazení MongoDB a všemi aplikacemi, které jsou k němu připojeny.
V produkčním prostředí by nasazení MongoDB mělo používat platné certifikáty vygenerované a podepsané jedinou certifikační autoritou.
5. Šifrovat data
Data databáze mají dvě podoby:data v klidu a data na cestě. Přenášená data lze zabezpečit pomocí šifrování na úrovni pole na straně klienta, ale je k dispozici pouze ve verzi 4.2. Šifrování TLS/SSL se také stará o přenos dat.
Úložný modul WiredTiger od verze 3.2 Enterprise poskytuje data v šifrování vrstvy úložiště. To potvrzuje, že k datům mají přístup pouze ověření uživatelé s dešifrovacími klíči. Pokud nepoužíváte šifrování WiredTiger v klidu, použijte šifrování systému souborů. Šifrování dat v klidu odrazuje od přístupu k obsahu vaší databáze, pokud získají přístup k fyzickému serveru, a proto je klíčovou součástí zabezpečení MongoDB.
6. Aktivity systému auditu
Toto je podniková možnost, která umožňuje sledování všech změn dat a konfigurací databáze. Události se zapisují do připojení syslog nebo do nějakého souboru protokolu. Protokoly mohou obsahovat pokusy o ověření DB včetně zdrojových IP adres a informace mohou pomoci určit, kterým hostitelům by měl firewall blokovat přístup k databázi. Kromě toho je možné rozlišit, které události se mají zaznamenávat.
Tyto protokoly auditu obecně pomohou správci provést nějakou forenzní analýzu, a tím nastavit standardní bezpečnostní kontroly.
7. Použijte vyhrazeného uživatele ke spuštění MongoDB
Procesy MongoDB by měly být spouštěny pomocí vyhrazeného uživatelského účtu operačního systému, který by měl mít povolena přístupová oprávnění.
8. Používejte oficiální a aktualizované balíčky MongoDB
Projděte kontrolou pravosti svých balíčků, abyste se ujistili, že se jedná o oficiální balíčky MongoDB. Použití nejnovějších ovladačů MongoDB a nejnovější verze samotné databáze nabízí větší stabilitu zabezpečení než předchůdci. Například verze 4.2 nabízí šifrování na úrovni pole na straně klienta. Ujistěte se proto, že jste migrovali na nejnovější verzi MongoDB.
9. Deaktivujte spouštění Javascriptu, pokud není potřeba
mapReduce a $where jsou některé ze spustitelných kódů JavaScript v MongoDB, a pokud nejsou dobře spravovány, mohou vést k nechtěné nekonzistenci dat nebo umožnit přístup k datům nepřímo a použít nějaké změny, pokud chtějí .
Obecně tento kód JavaScript umožní externí injekce, a proto se do vaší databáze dostanou nevalidovaná data. Můžete se také rozhodnout použít balíčky, jako je mongoose, k ověření a připojení k vaší databázi. Místo výrazů JavaScript použijte operátory MongoDB.
10. Získejte aktualizace pomocí oprav zabezpečení MongoDB
Bezpečnostní protokoly mohou být útočníky prolomeny časem, a proto je potřeba, aby jeden zahrnoval pokročilé postupy. Zůstat aktuální s nejlepšími aktualizacemi zabezpečení a opravami chyb z poznámek k vydání MongoDB je velmi důležité. Varovná stránka MongoDB byla v podstatě vytvořena pro tento účel.
Pokud je to možné, vyžádejte si bezpečnostní technickou implementační příručku a ujistěte se, že vaše nasazení je v souladu s bezpečnostními standardy.
Závěr
Produkční databáze jsou náchylné k bezpečnostním útokům, a proto je třeba hodně investovat do ochrany citlivých dat. Bezpečnostní procedury zahrnují přenos dat, data v klidu a připojené klientské aplikace. Kromě výše zmíněných postupů poskytnou další vrstvu ochrany údajů další úroveň ochrany dat.
Je důležité používat nejnovější verze MongoDB a zásuvných modulů, kromě udržování kroku s nejnovějšími bezpečnostními a opravami chyb souvisejících s vaší verzí.