Ihre Frage scheint keine Vermutung über die Plattform / das Betriebssystem zu machen, um die es geht. Aus diesem Grund kann es sinnvoll sein, eine Antwort darüber hinzuzufügen, wie dies normalerweise in einer Mainframe-Umgebung getan / angegangen wird, in der die "Ingenieure" (wie in Ihrem Fragentitel) tatsächlich Gruppen von Menschen sind, die Dutzende (möglicherweise Hunderte) von Menschen sind beteiligt. Meine Antwort basiert auf der Verwendung des SCM-Produkts, mit dem ich am besten vertraut bin (ich bin nicht sicher, ob es zur Offenlegung des Produktnamens erforderlich ist).
1. Architektur
Hier sind die Highlights, wie ich Ihre Frage beantworten würde:
- Sämtlicher Code (und verwandte Artefakte wie ausführbare Dateien usw.) werden in Dateien gespeichert, die wir zusammen die Bibliotheksstruktur nennen .
- Für jede Umgebung auf jedem (möglicherweise entfernten) Zielsystem gibt es einen Server (eine "gestartete Task" in Mainframe-Sprache), der für ALLE (repeat: ALL) Aktualisierungen in der Bibliotheksstruktur sorgt. Es gibt einige Ausnahmen (wie Sicherheitspersonal oder Space-Management-Team), aber abgesehen davon hat niemand (wiederholen: niemand) die Berechtigung, Aktualisierungen auf Dateien in dieser Bibliotheksstruktur anzuwenden. Mit anderen Worten: Der Server erhält die exklusive Aktualisierungsberechtigung für die gesamte Bibliotheksstruktur . Achtung: OPS-Leute werden verrückt, wenn Sie hereinkommen, um ihren Zugang zu beschränken (zuerst werden sie Widerstand leisten ...). Stellen Sie also sicher, dass Sie vom oberen Management (CxO) gedeckt sind, um diese Zugangsregeln durchzusetzen ...
- Die eigentlichen Software-Änderungen bestehen aus einer einzelnen Komponente (einem winzigen Code-Fix mitten in der Nacht ...), oder es kann sich auch um Hunderte oder Tausende von Quellen, ausführbaren Dateien oder sonstigen Artefakten handeln (während eines Veröffentlichungswochenendes). Um sie handhabbar zu machen, werden Dinge, die gleichzeitig (mehr oder weniger) zusammen verschoben werden sollen, in einem sogenannten Software-Änderungspaket gebündelt .
Mit dem oben Gesagten ist jede Art von Aktualisierung, die vom Server auf die Bibliotheksstruktur angewendet werden soll, nur über einen genau definierten Workflow möglich, den wir den Lebenszyklus eines Software-Änderungspakets (SDLC, wenn Sie es vorziehen) nennen. Um die verschiedenen Schritte in diesem Workflow tatsächlich auszuführen, ist Folgendes erforderlich:
- Nur der Server führt die erforderlichen (und vorkonfigurierten) Schritte aus.
- Der Server wird nur einen bestimmten Schritt ausführen (= irgendwo in der Bibliotheksstruktur etwas aktualisieren), nachdem die erforderlichen Genehmigungen (von Menschen) gesammelt wurden, um einen solchen Schritt auszuführen.
- Die Genehmigungen können nur von Benutzern erteilt werden, die eine Rolle haben , mit der sie (= Berechtigung) solche Genehmigungen erteilen können.
2. Rollen und Berechtigungen
Der Server stellt sicher, dass der Benutzer, der versucht, etwas zu tun (z. B. "etwas zu genehmigen"), dies nur tun kann, wenn die Berechtigungen des Benutzers angemessen sind. Dieser Teil ist einfach. Sie möchten jedoch nicht das SCM-System verwenden, um alle diese Berechtigungen für alle beteiligten Benutzer zu verwalten. Dies gehört zu Ihrem Sicherheitssystem (nicht zum SCM-System!), Sodass Sie Ihren Workflow (in Ihrem SCM-System) anpassen können. Überprüfen Sie diese Berechtigungen, wann immer dies angebracht ist. Die folgenden Schritte enthalten einige weitere Details dazu.
Schritt 1: Konfigurieren Sie die Berechtigungen (im Sicherheitssystem)
Definieren Sie Sicherheitseinheiten in Ihrem Sicherheitssystem, mit gut für diese Unternehmen definierten Namen. Einige Beispiele (fügen Sie so viele ähnliche hinzu, wie Sie möchten):
PrmUnit
, Verwendet für die Erlaubnis bekommen ein zu beantragen Förderung sagen Einheit -Testen.
PrmQA
, Für das Erhalten Genehmigung ein beantragen Förderung sagen Qa -Testen (nehmen wir an , das die höchste Stufe der Prüfung ist).
PrdEnduser
wird von Endbenutzern verwendet, die an bestimmten Teststufen beteiligt sind, um anzuzeigen, dass sie mit den Ergebnissen zufrieden sind, die bei bestimmten Tests erzielt wurden. Aus diesem Grund stimmen diese Endbenutzer der voranschreitenden Änderung in der Bibliotheksstruktur zu.
PrdRelmgnt
, wird von Release-Managern verwendet, um eine Aktivierung in der Produktion zu autorisieren (= die letzte / höchste Ebene in der Bibliotheksstruktur).
Definieren Sie Benutzergruppen in Ihrem Sicherheitssystem. Einige Beispiele (fügen Sie so viele ähnliche hinzu, wie Sie möchten):
GrpDevs
, was (sagen wir) Ihren Entwicklern entspricht (wahrscheinlich mehr als nur 1).
GrpEnduser
, die (sagen wir) Ihren Endbenutzern entspricht (mindestens 1, vorzugsweise mit ähnlicheren Benutzern).
GrpRelMgnt
, was (sagen wir) Ihren Release-Managern entspricht (mindestens 1, vorzugsweise ein paar mehr Benutzer).
Gewähren Sie Berechtigungen , auch unter Verwendung Ihres Sicherheitssystems, um ausgewählten " Sicherheitsentitäten " Zugriff auf ausgewählte " Benutzergruppen " zu gewähren . Um mit dem obigen Beispiel fortzufahren, ist Folgendes angebracht (passen Sie es an Ihre eigenen Bedürfnisse an):
- Gruppe
GrpDevs
erhält Zugriff auf (nur!) Sicherheitseinheit PrmUnit
.
- Gruppe
GrpEnduser
erhält Zugriff auf (nur!) Sicherheitseinheit PrdEnduser
.
- Gruppe
GrpRelMgnt
erhält Zugriff auf (beide!) Sicherheitseinheit PrmQA
und PrdRelmgnt
.
Schritt 2: Konfigurieren Sie den Workflow (im SCM-System)
Nachdem die Berechtigungen in Ihrem Sicherheitssystem konfiguriert wurden (wie in Schritt 1), müssen Sie in Ihrem SCM-System nur noch konfigurieren, wie die verschiedenen Schritte im Lebenszyklus mit den zugehörigen Sicherheitseinheiten in Ihrem Sicherheitssystem übereinstimmen. Das heißt, nur die Benutzer, die über den entsprechenden Zugriff auf die erforderliche Sicherheitseinheit verfügen, dürfen den Server auffordern, den entsprechenden Schritt im Workflow auszuführen.
Hier einige Beispiele, wie Sie Ihr SCM-System so konfigurieren, dass etwas Magisches passiert:
- Wenn ein Benutzer Zugriff hat
PrmUnit
, dann ist eine solche Benutzer erlaubt eine beantragen Förderung zu Einheit -Testen. Offensichtlich sind die Benutzer in der Gruppe GrpDevs
die dazu berechtigten Benutzer (Hinweis: nicht zB die Benutzer in der Gruppe GrpRelMgnt
).
- Wenn ein Benutzer Zugriff hat
PrmQA
, dann ist eine solche Benutzer erlaubt eine beantragen Förderung zu QA -Testen. Offensichtlich sind die Benutzer in der Gruppe GrpRelMgnt
die dazu berechtigten Benutzer (Hinweis: nicht zB die Benutzer in der Gruppe GrpDevs
oder in der Gruppe GrpEnduser
).
- Wenn ein Benutzer Zugriff auf hat
PrdEnduser
, kann dieser Benutzer die Änderung in der Bibliotheksstruktur autorisieren (dies ist in der Regel eine Voraussetzung dafür, dass Benutzer in einer Gruppe GrpRelMgnt
sogar eine Änderung überprüfen können). Offensichtlich sind die Benutzer in der Gruppe GrpEnduser
die (einzigen) dafür autorisierten Benutzer.
- Wenn ein Benutzer Zugriff darauf hat
PrdRelmgnt
, kann dieser Benutzer eine Aktivierung in der Produktion (= die letzte / höchste Ebene in der Bibliotheksstruktur) autorisieren .
3. Erwarten Sie das Unerwartete und seien Sie bereit dafür
Das obige ist nur eine Blaupause, die hoffentlich hilft zu verstehen, wie letztendlich der Server für die Aufgabentrennung sorgt ... vorausgesetzt, Sie haben die CxO-Deckung, um einige Zugriffsregeln auferlegen zu können, die nicht jedem gefallen werden.
Um das Bild wie oben beschrieben zu vervollständigen, erstellt der Server einen Audit-Trail (Protokollierung) von allen Vorgängen im System. Damit ist es jederzeit möglich Fragen wie zu beantworten
Was ist wann und warum passiert und welcher autorisierte Benutzer hat es tatsächlich genehmigt ... im Voraus?
Am schwierigsten ist es jedoch wahrscheinlich, geeignete Berichterstellungstools zur Verfügung zu haben (und zu wissen, wie man sie verwendet). Zumindest, um Anfragen von IT-Auditoren (leicht) zu befriedigen (ihre Fragen können sehr herausfordernd sein). Sie können aber auch auf relevante Protokollsätze in Ihrem SCM-System verweisen, um alle Arten von "Was ist passiert" -Fragen in Krisensituationen zu beantworten, in denen (ein Teil der) Produktion ausfällt.
PS: Ich überlasse es jedem selbst, ob meine Antwort Ja oder Nein DevOps-konform ist.