Wygląda na to, że twoje pytanie nie zawiera żadnych założeń dotyczących platformy / systemu operacyjnego, na których jest ono oparte. Dlatego sensowne może być dodanie odpowiedzi na temat tego, jak zazwyczaj robi się to / rozwiązuje w środowisku komputerów mainframe, gdzie „inżynierowie” (jak w tytule twojego pytania) to tak naprawdę grupy ludzi, których dziesiątki (być może setki) ludzi są zaangażowany. Moja odpowiedź opiera się na użyciu produktu SCM, z którym jestem najbardziej zaznajomiony (nie jestem pewien, czy jest to konieczne do ujawnienia nazwy produktu).
1. Architektura
Oto najważniejsze informacje, w jaki sposób odpowiedziałbym na twoje pytanie:
- Cały kod (i powiązane artefakty, takie jak pliki wykonywalne itp.) Są przechowywane w plikach, które razem nazywamy strukturą biblioteki .
- Dla każdego środowiska w każdym (ewentualnie zdalnym) systemie docelowym jest serwer („uruchomione zadanie” w mowie na komputerze mainframe), który dba o WSZYSTKIE aktualizacje (powtarzanie: WSZYSTKO) w dowolnej strukturze biblioteki. Istnieje kilka wyjątków (np. Pracownicy ochrony lub zespół zarządzania przestrzenią), ale poza tym nikt (powtórz: nikt) nie ma uprawnień do stosowania aktualizacji do dowolnego pliku w tej strukturze biblioteki. Innymi słowy: serwer otrzymuje wyłączne uprawnienia do aktualizacji całej struktury biblioteki . Uwaga: ludzie OPS wpadną w szał, jeśli wejdziesz, aby ograniczyć ich dostęp (na początku będą się opierać ...), więc upewnij się, że jesteś objęty wyższym kierownictwem (CxO), aby narzucić te zasady dostępu ...
- Rzeczywiste zmiany oprogramowania składają się z jednego komponentu (drobna poprawka kodu w środku nocy ...), lub mogą to być setki lub tysiące źródeł, plików wykonywalnych lub dowolnych innych artefaktów (podczas weekendu wydania). Aby można było nimi zarządzać, rzeczy, które powinny być przenoszone (mniej więcej) jednocześnie, są pakowane razem w tak zwany pakiet zmian oprogramowania .
Po wprowadzeniu powyższego wszelkie aktualizacje serwera, które zostaną zastosowane w strukturze biblioteki, będą możliwe tylko poprzez dobrze zdefiniowany przepływ pracy, który nazywamy cyklem życia pakietu zmian oprogramowania (SDLC, jeśli wolisz). Aby faktycznie wykonać różne kroki w tym przepływie pracy, wystarczy, aby tak się stało:
- Tylko serwer wykona wymagane (i wstępnie skonfigurowane) kroki.
- Serwer wykona tylko określony krok (= zaktualizuje coś gdzieś w strukturze biblioteki), po zebraniu wymaganych zatwierdzeń (od ludzi) do wykonania takiego kroku.
- Zezwolenia mogą być wydawane tylko przez użytkowników, którzy mają rolę, która pozwala im (= pozwolenie) na wydawanie takich zatwierdzeń.
2. Role i uprawnienia
Serwer zapewni, że użytkownik próbujący dokonać czegoś (np. „Zatwierdzić coś”) będzie mógł to zrobić tylko wtedy, gdy uprawnienia użytkownika będą odpowiednie. Ta część jest łatwa. Ale nie chcesz używać systemu SCM do administrowania wszystkimi uprawnieniami dla wszystkich zaangażowanych użytkowników, to właśnie należy do twojego systemu bezpieczeństwa (nie do systemu SCM!), Abyś mógł dostosować swój przepływ pracy (w systemie SCM) w razie potrzeby sprawdź te uprawnienia. Poniższe kroki zawierają więcej szczegółowych informacji na ten temat.
Krok 1: Skonfiguruj uprawnienia (w systemie bezpieczeństwa)
Zdefiniuj jednostki bezpieczeństwa w swoim systemie bezpieczeństwa, używając dobrze zdefiniowanych nazw dla tych jednostek. Kilka próbek (dodaj tyle podobnych do własnych potrzeb):
PrmUnit
Stosowane dla uzyskania uprawnienia do żądania Promuj powiedzieć Jednostka -testing.
PrmQA
Stosowane dla uzyskania uprawnienia do żądania Promuj powiedzieć Qa -testing (załóżmy, jest to najwyższy poziom testowania).
PrdEnduser
, wykorzystywane przez użytkowników końcowych zaangażowanych w pewien poziom testów, aby wskazać, że są zadowoleni z wyników uzyskanych w wyniku pewnego rodzaju testów. Z tego powodu ci użytkownicy końcowi zgadzają się z postępem zmian w strukturze biblioteki.
PrdRelmgnt
, używane przez menedżerów wydań do autoryzacji aktywacji w produkcji (= ostatni / najwyższy poziom w strukturze biblioteki).
Zdefiniuj grupy użytkowników w systemie bezpieczeństwa. Kilka próbek (dodaj tyle podobnych do własnych potrzeb):
GrpDevs
, co (powiedzmy) odpowiada Twoim programistom (prawdopodobnie więcej niż tylko 1).
GrpEnduser
, który (powiedzmy) odpowiada użytkownikom końcowym (co najmniej 1, najlepiej z podobnymi użytkownikami).
GrpRelMgnt
, co (powiedzmy) odpowiada menedżerom wydań (co najmniej 1, najlepiej kilku innym użytkownikom).
Udziel uprawnień , także przy użyciu systemu zabezpieczeń, aby umożliwić dostęp do wybranych „ podmiotów bezpieczeństwa ” dla wybranych „ grup użytkowników ”. Aby kontynuować powyższy przykład, oto, co wydaje się właściwe (dostosuj do własnych potrzeb):
- Grupa
GrpDevs
uzyskuje dostęp do (tylko!) Jednostki bezpieczeństwa PrmUnit
.
- Grupa
GrpEnduser
uzyskuje dostęp do (tylko!) Jednostki bezpieczeństwa PrdEnduser
.
- Grupa
GrpRelMgnt
uzyskuje dostęp do (zarówno!) Jednostki bezpieczeństwa, jak PrmQA
i PrdRelmgnt
.
Krok 2: Skonfiguruj przepływ pracy (w systemie SCM)
Po skonfigurowaniu uprawnień w systemie bezpieczeństwa (jak w kroku 1), wszystko, co pozostało do zrobienia w systemie SCM, to skonfigurowanie, w jaki sposób poszczególne kroki w cyklu życia pasują do powiązanych jednostek bezpieczeństwa w systemie bezpieczeństwa. Oznacza to, że tylko ci użytkownicy, którzy mają odpowiedni dostęp do wymaganej jednostki bezpieczeństwa, mogą poprosić serwer o wykonanie odpowiedniego kroku w przepływie pracy.
Oto kilka przykładów konfiguracji systemu SCM, aby magia się wydarzyła:
- Jeśli użytkownik ma dostęp do
PrmUnit
, wówczas użytkownik może poprosić o Promuj się Jednostka -testing. Oczywiście, użytkownicy w grupie GrpDevs
są użytkownikami upoważnionymi do tego (uwaga: nie, np. Użytkownicy w grupie GrpRelMgnt
).
- Jeśli użytkownik ma dostęp do
PrmQA
, wówczas użytkownik może poprosić o Promuj do QA -testing. Oczywiście, użytkownicy w grupie GrpRelMgnt
są użytkownikami upoważnionymi do tego (uwaga: nie, np. Użytkownicy w grupie GrpDevs
lub w grupie GrpEnduser
).
- Jeśli użytkownik ma dostęp
PrdEnduser
, może zezwolić na zmianę w strukturze biblioteki (co jest zwykle warunkiem wstępnym dla użytkowników w grupie, GrpRelMgnt
aby mogli przejrzeć zmianę). Oczywiście, użytkownicy w grupie GrpEnduser
są (jedynymi) użytkownikami upoważnionymi do tego.
- Jeśli użytkownik ma dostęp do
PrdRelmgnt
takiego konta, może autoryzować Aktywację w produkcji (= ostatni / najwyższy poziom w strukturze biblioteki).
3. Spodziewaj się nieoczekiwanego i przygotuj się na to
Powyższe jest tylko schematem, który, mam nadzieję, pomoże zrozumieć, w jaki sposób ostatecznie serwer zajmuje się podziałem obowiązków ... pod warunkiem, że masz CxO narzucające ci zasady dostępu, które nie wszystkim się spodobają.
Aby uzupełnić obraz, jak wyjaśniono powyżej, serwer tworzy ścieżkę audytu (rejestrowanie) wszystkiego, co dzieje się w systemie. Aby w dowolnym momencie zawsze można było odpowiedzieć na pytania takie jak
Co się stało, kiedy i dlaczego, i który autoryzowany użytkownik faktycznie zatwierdził to ... z góry?
Ale prawdopodobnie najtrudniejszą częścią jest posiadanie odpowiednich narzędzi do raportowania (i umiejętność ich używania). Przynajmniej w celu (łatwego) spełnienia wymagań audytorów IT (ich pytania mogą być bardzo trudne). Ale również wskaż odpowiednie zapisy dziennika w twoim systemie SCM, aby odpowiedzieć na wszelkiego rodzaju pytania „co się stało” w sytuacjach kryzysowych, w których produkcja (części) spada.
PS: Pozostawiam to każdemu do oceny, jeśli moja odpowiedź brzmi „tak” lub „nie” zgodna z DevOps.