Mamy instalację Ubuntu12.04 + PHP + nginx na naszych serwerach. Nasi programiści mają dostęp do/usr/lib/php5/i/var/www/folders. Pracujemy nad wieloma projektami i w danym momencie mamy 50-100 różnych aplikacji/modułów, każdy z db active.Zabezpieczanie haseł w konfiguracji nginx Multi-Dev
Chcielibyśmy wymyślić mechanizm zabezpieczenia naszych haseł DB z następujących względów:
- Do administratorów tworzą hasło i zarejestrować go gdzieś (plik lub SQLite db czy coś takiego)
- Aplikacje udostępniają klucz wskazujący, który DB i jakie poziomy uprawnień są potrzebne, a moduł zwraca obiekt zawierający wszystko, co jest potrzebne do połączenia. Coś jak "user_manager.client1.ro", "user_manager.client1.rw".
- Mechanizm powinien zapewniać konkretne hasło do aplikacji, a przez to dostępne przez "www-dane", ale wszystkie inne hasła nie będą widoczne, dopóki ich klucze nie będą znane.
Udało nam się uzyskać prototyp na ten cel, ale centralny moduł dostarczający hasła działa w przestrzeni danych www, stąd plik/sqlite może być zawsze dostępny przez dowolny inny plik w/var/www/lub/usr/lib/php5 i stąd wszystkie hasła mogą zostać naruszone.
Czy istnieje sposób ustawienia elementów w taki sposób, że moduł dostarczający hasła działa z uprawnieniami roota, a aplikacja żąda od niego haseł? Wiem, że możemy zbudować dla niego zupełnie nową usługę, ale wydaje się, że jest zbyt wiele do zbudowania i utrzymania (zwłaszcza, że ta usługa staje się naszym pojedynczym punktem awarii).
Jakieś sugestie?
Aby lepiej zrozumieć swoje pytanie: czy moduł jest napisany w PHP? Czy potrzebujesz rozwiązania, które bezwzględnie używa tego modułu, czy możesz po prostu grać z uprawnieniami do plików? Czy każdy programista musi mieć dostęp do wszystkich plików? – St0rM
Centralny moduł dostarczający hasła jest obecnie w PHP i jest niczym innym, jak zwykłą klasą PHP. Jesteśmy otwarci na pomysły, więc wszystko z uprawnieniami do plików jest w porządku z nami. Jeśli chodzi o programistę, który ma dostęp do wszystkich plików - biorąc pod uwagę, że jesteśmy niewielkim zespołem z każdym deweloperem, który ma na sobie wiele czapek, oddzielenie dostępu będzie dość trudne - więc nie pójdę na kompromis. – Shreeni
Nie ma możliwości, bym mógł to rozwiązać, jeśli chcesz, aby każdy programista uzyskał dostęp do wszystkiego i uniemożliwił im dostęp do bazy danych. Dajesz im dostęp do czegoś, co ma ten dostęp (tj. Kod), aby mieli dostęp do bazy danych. Mogą na przykład napisać wiersz kodu, który odczyta hasło i zapisać go w ukrytym pliku ... Uważam, że w samym pytaniu jest coś nie tak. – St0rM