Zasada nr 1 bezpieczeństwa: jeśli ktoś ma dostęp do informacji, ma dostęp do tych informacji
Ta tautologia jest denerwująca, ale to prawda. Jeśli dasz dostęp osobie fizycznej, ma ona dostęp do danych. Dla użytkowników oznacza to zwykle kontrolę dostępu, ale dla programistów ... cóż ... to oni muszą napisać kontrolę dostępu.
Jeśli jest to dla Ciebie poważny problem (i wygląda na to, że tak jest), rozważ wbudowane zabezpieczenia oprogramowania. Częstym wzorem jest projektowanie bezpiecznego oprogramowania warstwowo. Na najniższej warstwie zaufany zespół programistów projektuje oprogramowanie, które zarządza najbardziej nagą kontrolą dostępu. To oprogramowanie jest sprawdzane i weryfikowane przez jak najwięcej osób. Każdy, kto projektuje ten kod, ma dostęp do wszystkiego, więc zaufanie jest niezbędne.
Następnie programiści mogą zbudować bardziej elastyczną kontrolę dostępu na górnej warstwie podstawowej. Ten kod wciąż musi być V & Vd, ale nie jest tak rygorystyczny, ponieważ zawsze możesz polegać na warstwie podstawowej, aby pokryć najważniejsze elementy.
Wzór rozciąga się na zewnątrz.
Najtrudniejsze, rzeczywiście sztuka projektowania tych systemów jest to, jak zbudować każdą warstwę, dzięki czemu programiści mogą w dalszym ciągu rozwijać i debugowania przy jednoczesnym zapewnieniu firmę z bezpieczeństwem można oczekiwać. W szczególności musisz zaakceptować fakt, że debugowanie wymaga więcej przywilejów, niż myślisz, że powinno, a próba zablokowania tego spowoduje bardzo złych programistów.
Jako rozwiązanie poboczne rozważ utworzenie „bezpiecznych” baz danych do celów testowych, w których programiści mogą zerwać wszystkie mechanizmy bezpieczeństwa i przeprowadzić poważne debugowanie.
Ostatecznie zarówno Ty, jak i programiści musicie zrozumieć kluczową zasadę bezpieczeństwa: Całe bezpieczeństwo to równowaga między bezpieczeństwem a użytecznością. Państwo musi uderzyć własnego balansu jako firmy. System nie będzie idealnie bezpieczny i nie będzie doskonale użyteczny. Ta równowaga prawdopodobnie wzrośnie nawet w miarę rozwoju Twojej firmy i / lub zmiany wymagań programistów. Jeśli jesteś otwarty na tę rzeczywistość, możesz ją rozwiązać.