Pracowałem więc w wielu różnych miejscach pracy jako programista i mój poziom dostępu do bazy danych był zróżnicowany. Zwykle nie mam dostępu do bazy danych produkcji.
Przez większość czasu mam dostęp do testowej bazy danych, ale jest różna. Czasami mogę zrobić i zmienić bazę danych i dane, jak mi się podoba, ale zwykle są inne ustalenia. Jakbym mógł mieć tylko dostęp do odczytu danych.
Pracowałem w jednym miejscu, w którym zespół DBA zarządzałby bazami danych, nie mogliśmy w ogóle wprowadzać zmian, chyba że prześlemy formularz ze skryptem SQL, aby „sprawdzili”. Zwykle nie miały wiele wspólnego z samym projektem, więc przez większość czasu wystarczyło nacisnąć F5.
Szczerze mówiąc, rozumiem, dlaczego prod musi zostać zablokowany, ale wolę mieć tyle samo dostępu do bazy danych w środowisku programistycznym i testowym. Myślę, że większość deweloperów ma wystarczającą wiedzę na temat bazy danych. Ale chciałbym usłyszeć opinie? Ile dostępu do bazy danych powinni mieć programiści? Czy można nam ufać, że niczego tam nie rozbijemy?
Odpowiedzi:
Twórcy potrzebują dostępu do odczytu do wszystkich baz danych, w tym prod. Czasami problem polega na tym, że dane w Prod nie są tym, czego się spodziewali, i muszą zobaczyć dane, które powodują problem, ponieważ nie mogą odtworzyć ich w dev.
Deweloperzy nie powinni mieć uprawnień do zapisu danych produkcyjnych ani uprawnień do tworzenia obiektów. Nie powinno być nic, co nie byłoby częścią oficjalnego wydania. Zbyt wiele razy ludzie robią szybkie poprawki na prod, który albo nie działa, co powoduje, że prod jest jeszcze bardziej zepsuty lub działa, ale zapominają o umieszczeniu kodu na serwerach dev / QA / Staging i jeszcze gorzej w źródle kontroluj repozytorium, a kod zostanie nadpisany około miesiąc później w następnej oficjalnej wersji.
Wolę programistom mieć pełne prawa do kontroli jakości bazy danych, ponieważ wdrożenie na innym serwerze pomaga im sprawdzić, czy są jakieś luki w procesie wdrażania (oops zapomniałem, że zmieniłem tę tabelę, aby to zrobić i tak, i oops zapomniałem, że zrobiłem tę zmianę za pomocą GUI, a nie w skrypcie w kontroli źródła, w ten sposób muszą nastąpić zmiany strukturalne bazy danych).
Jeśli masz nowego klienta typu Enterprise, który będzie miał własny zestaw serwerów, uprawnienia mogą zostać złagodzone przed uruchomieniem. Wynika to z faktu, że tak wiele musi się wydarzyć, a kilka osób, które mogą to zrobić na prod, zostaje zaległych, a czasem nawet potrzebuje czasu wolnego. W szczególności ludzie, którzy importują dane z innego systemu, mogą zostać poproszeni o umieszczenie ich na prod przed uruchomieniem, jeśli ładowanie danych zajmie dużo czasu. Osoby te są zwykle specjalistami od danych i zapewnia wyższy poziom komfortu, umożliwiając im tymczasowy dostęp do produ niż przeciętny twórca aplikacji. Nie jest to luksus, który masz, gdy przechodzisz na już działający serwer produkcyjny.
Jedną z najważniejszych rzeczy w ograniczaniu praw do produkcji do bazy danych jest to, że twórcy muszą wtedy upewnić się, że ich praca jest w formie, którą może wdrożyć ktoś inny. To zazwyczaj poprawia jakość pracy, ponieważ nie próbują dokonywać poprawek w locie, ponieważ zapomnieli o czymś lub coś nie działało, ponieważ zrobili to inaczej na prod, niż naiwnie, polegając na samej pamięci. Tracicie także te „oops, przypadkowo usunąłem całą tabelę użytkowników, ponieważ zapomniałem wyróżnić przypadek typu„ klauzula where ”, gdy wdrożenia produkcyjne wykorzystują wyłącznie skrypty, które są uruchamiane jako całość, a nie jedno polecenie naraz, co jest typowe dla programistów uruchomić rzeczy na prod. Zespół z ograniczonymi prawami do baz danych prod jest bardziej skłonny do przechowywania zmian w bazie danych również w zakresie kontroli źródła.
źródło
Dobrze jej tak naprawdę kwestia „Vampires (programistów) kontra Wilkołaki (Administratorzy systemów)” jako Jeff Atwood umieścił go tutaj .
źródło
Zwykle (oznacza to luksus konfigurowania pełnego środowiska) dostęp programisty do:
Głównym powodem, dla którego programiści nie powinni dotykać serwerów produkcyjnych, jest: gdy coś pójdzie nie tak, zespół operacyjny jest odpowiedzialny, ale nie programiści.
źródło
Absolutne minimum potrzebne do wykonania pracy.
Jeśli wszyscy programiści otrzymają pełny dostęp do bazy danych, szansa, że ktoś się zdenerwuje (lub upije, zostanie bardzo zmęczony lub ...) i wyrządzi poważne szkody, jest znacznie wyższa niż w przypadku, gdy może tylko czytać z bazy danych.
Jeśli twoją pracę można wykonać w większości bez dostępu do zapisu DB (a przez większość mam na myśli najwyżej kilka próśb o zmianę w tygodniu), to naprawdę nie potrzebujesz dostępu do zapisu.
źródło
Istnieją dwa konkurujące ze sobą pragnienia w każdym środowisku pracy.
Częścią tego, co kształtuje równowagę, która jest osiągnięta (a przynajmniej powinna) jest oczekiwanie deweloperów. W każdej pracy, w której pracowałem, programiści mieli dostęp do wszystkiego, czego się spodziewali. Uzyskaj dostęp do systemu tylko wtedy, gdy wiesz, co robisz. Oznaczało to, że wiesz, co robisz zarówno z punktu widzenia programisty, jak i sysadmin. Jeśli nie byłeś pewien w żadnym z tych obszarów, nie miałeś żadnej firmy, która miałaby dostęp do systemów bez kogoś, kto by cię opiekował.
Podsumowując, jeśli nie wiesz, nie powinieneś mieć dostępu do żadnego systemu innego niż systemy deweloperów, które można łatwo zbudować . Jeśli wiesz, niż wiesz , nie powinieneś uzyskiwać dostępu do żadnego systemu, z wyjątkiem łatwo rozwijalnych systemów deweloperskich .
źródło
Programiści powinni mieć pełny dostęp do baz danych deweloperów (najlepiej powinni mieć lokalny serwer, ale nie zawsze jest to możliwe). Powinny mieć dostęp do bazy danych kompilacji / kontroli jakości, ale tylko do danych (należy uzyskać pozwolenie / przesłać bilet, aby zmienić strukturę). Programiści nigdy nie powinni mieć swobodnego dostępu do produkcyjnej bazy danych (chyba że jest to mała firma / projekt, a programiści również wspierają produkcję).
źródło
Myślę, że kluczem jest tutaj poziom odpowiedzialności programistów. W dużej organizacji z dużą liczbą programistów zapewne będą mieli dostęp do programowania z dostępem tylko do odczytu do kontroli jakości / testu.
Jednak w zespole programistycznym powinny znajdować się osoby z pełnym dostępem do wszystkich środowisk. Zazwyczaj jest to osoba odpowiedzialna za wprowadzanie poprawek itp. Chociaż jest to nieco ryzykowne, jest to kompromis między tym, jak bardzo ufasz programistom, jak szybko chcesz to naprawić, a ryzykiem związanym z zepsutym systemem lub ujawnieniem informacji w systemie. .
Pracowałem w dużym sklepie IT i dla większości osób mieliśmy dostęp do odczytu produkcji. Ja jako główny programista miałem również uprawnienia do produkcyjnej bazy danych. Nadal musiałem stosować się do tych samych wytycznych, co administratorzy systemów i DBA, jeśli chodzi o procesy i formalności, ale w razie potrzeby mogłem również dokonać pilnej naprawy.
źródło
Istnieje podobny problem, o którym większość z nas zapomina - nie jesteśmy jedynymi osobami korzystającymi z bazy danych! Mamy tendencję do przyjmowania tego za pewnik, ale nie powinniśmy. Nawet w małych witrynach ludzie biznesu mogą uruchamiać narzędzia innych firm w bazie danych do swoich raportów. Witryny korporacyjne prawie zawsze będą mieć wielu użytkowników tabel bazy danych, a „niewielka” zmiana może spowodować uszkodzenie ich aplikacji i odwrotnie.
To musi być pierwsze pytanie. Drugim musi być dostępny personel - pracowałem w miejscach, w których sysadmini chronili swoją trawę, ale tak naprawdę nie byli tak dobrzy. (Prawdopodobnie dlatego byli tak terytorialni - wiedzieli, że złapaliby dużo ciepła, gdyby ktoś się rozejrzał). Czasami musisz mieć większy dostęp, niż byś chciał.
Ale w idealnym świecie zgadzam się z uwagami innych ludzi. Nie chcę dostępu do danych na żywo, ponieważ, szczerze mówiąc, nie chcę odpowiedzialności. Pomyśl o tym - jeśli mam dostęp operacyjny i dojdzie do naruszenia, będę musiał spędzić dużo czasu, udowadniając, że nie mam z tym nic wspólnego. Być może będę musiał wykazać, że nie podszywałem danych z powodów osobistych itp. Wiele witryn traktuje prywatność bardzo poważnie, szczególnie. strony rządowe.
Nie chcę nawet dostępu do zapisu / administratora do systemu grupy testowej. Jeśli nie mogę nic zrobić w systemie produkcyjnym, to nie chcę tego robić w systemach testowych. Dostęp do odczytu jest wyjątkiem, ponieważ jest niezbędny, aby dowiedzieć się, co się dzieje.
Systemy rozwoju, zarówno indywidualne, jak i wydziałowe, to inna historia. Ale nawet tutaj, w praktyce, zwykle najlepiej jest uruchamiać wszystkie zmiany w bazie danych przez osobę punktową, zamiast zmuszać wszystkich do robienia własnych rzeczy.
źródło
Całkowicie zgadzam się z całą odpowiedzią, mówiąc: „jak najmniej uprawnień dla programistów baz danych prod”. Ale szczerze mówiąc, kto może odmówić programistom dostępu do bazy danych, jeśli chcą ją uzyskać. Przy wystarczającej liczbie (czy to kryminalnej, czy na dobre) uzyskają potrzebny dostęp.
Kto może powstrzymać ich przed wstawieniem do aplikacji prostego edytora SQL? W ten sposób mogą korzystać z bazy danych z uprawnieniami aplikacji. W większości przypadków to wszystko, czego potrzeba. Gdy baza danych jest skonfigurowana bezpiecznie, mogą nie mieć uprawnień do tworzenia lub usuwania obiektów, ale mają przynajmniej dostęp do odczytu i zapisu danych.
Już tu ludzie płaczą. Ale bądźmy szczerzy, nie masz pełnej kontroli nad aplikacją wdrożoną w środowisku produkcyjnym, chyba że sam ją napiszesz (i nawet wtedy nie myślisz o bibliotekach). I dla wszystkich programistów, jak już powiedziała Erin, jesteś odpowiedzialny za środowisko produkcyjne, nie tylko ludzi operacyjnych. Korzystaj więc mądrze ze swoich uprawnień.
źródło