Auth v MongoDB Replica Setu

Pro jednu ze svých aplikací používám jak storage engine MongoDB. Abych o data nepřišel, jsou ukládána současně na 3 serverech v ReplicaSetu. V případě pádu jednoho ze serverů jsou data dostupná na některém dalším serveru. Redudance, vedle samotné dostupnosti dat, je dobrá i k tomu, když například potřebujete zhodit některý server, například kvůli instalaci nového jádra.

Ale aby bylo vše jak má, je krom samotné dostupnosti dat, potřeba zajistit i bezpečnost přístupu k nim, respektive samotnou autentifikaci v MongoDB na ůrovni Replica Setu.

Jak na to

1. start

Nastartovat mongod proces na jednom ze serverů na kterém poběží jedotlivé servery replica setu. Proces je potřeba spustit bez paramettu –auth. Měla by být specifikovaná cesta k datům skrze parametr –dbpah a samozřejmě –port 29002 na kterém server poběží.

2. vytvoření administrátorských účtů

Přihlásit se k nastatovanému MongoDB serveru:

Vytvořit 2 účty:

Hotovo. Vyskočit z mongo shellu.

3. zastavit běžící mongo server

4. vytvořit klíč společný pro všechny servery v replica setu

5. distribuce klíče na servery

Je potřeba bezpečně rozdistribuovat klíč na všechny servery v ReplicaSetu. Taky nastavit práva na 0600.

6. nastartování serverů replica setu

Na všech serverech v replica setu nastatovat mongod proces s parametry –keyFile a –replSet

7. připojit se k mongo serveru

Ale pouze k tomu, kde se vytvářeli uživatelské účty admin a root.

A potom v mongo shellu

9. ověření konigurace ReplicaSetu

V tom stejném mongo shellu bez nutnosti vyskakovat:

Měli byste dostat objekt s jednim členem v members.

10. přidání ostatních členů ReplicaSetu

Opět v mongo shellu:

11. kontrola stavu ReplicaSetu

Stále v mongo shellu:

Výsledkem by měl být objekt, který už obsahuje info o všech serverech v ReplicaSetu.

12. vytvoření samotného účtu pro replikovanou databázi

Stále v mongo shellu:

Hotovo!

Pak už se lze na ostatních serverech v ReplicaSetu přihlásit k dané databázi:


v mongo shellu pak

Zdroj