Was ist bei so etwas wie einem Produktions-Webserver die beste Vorgehensweise für Verantwortlichkeiten für den Systemadministrator und Entwickler? Insbesondere denke ich über das Aktualisieren / Installieren von Software nach. (Meines Wissens sollte der Entwickler keinen Root-Zugriff auf dem Produktionsserver haben.)
Auf einem Produktions-Webserver wird Wordpress ausgeführt und muss auf die neueste Version aktualisiert werden. Wer ist für die Aktualisierung verantwortlich?
Was ist, wenn die Entwickler benutzerdefinierte gehackte Plugins oder benutzerdefinierte Kerndateien in der App haben (in diesem Beispiel WP)?
Antworten:
Ich habe festgestellt, dass in den meisten Fällen, wenn SIE derjenige sind, der für den physischen Server verantwortlich ist, es am besten ist, den Entwicklern keinen Root-Zugriff zu gewähren.
Dies ist ein bisschen wie eine "Holy War" -Debatte, da ich sicher bin, dass Sie Entwickler finden werden, die anderer Meinung sind. Ich war persönlich auf beiden Seiten dieser Debatte.
Mein Hauptgrund dafür, den Entwicklern (selbst 100% vertrauenswürdigen Entwicklern) keinen Root-Zugriff zu gewähren, ist, dass sie häufig ein Paket benötigen, damit XYZ korrekt funktioniert. Sie installieren es ... oder konfigurieren etwas neu, das bereits vorhanden ist, damit es funktioniert ... oder ... nun ... Sie haben die Idee.
Monate vergehen ... der Server muss neu installiert oder neu erstellt werden ... und plötzlich weiß niemand mehr, warum "es auf dem alten Server funktioniert, aber nicht auf dem neuen".
Die Antwort ist natürlich, dass die Dokumentation, die Sie sich ansehen, nicht all die kleinen Pakete und Verbesserungen enthält, die die Entwickler vorgenommen haben, um das System zum ersten Mal zum Laufen zu bringen.
Es kann für beide Seiten schmerzhaft sein ... aber wenn der Sysadmin für den Server, die Pakete und die Dokumentation verantwortlich ist ... und der Entwickler für die Entwicklung und die Software verantwortlich ist ... denke ich, Sie Ich werde feststellen, dass es sich am Ende gelohnt hat.
Wenn der Entwickler ein benutzerdefiniertes Plugin, Modul, Konfiguration, Optimierung benötigt, kein Problem, erledigen Sie es für ihn, aber DOKUMENTIEREN SIE ES, damit Sie es das nächste Mal reproduzieren können.
quelle
Goldene Regel : Lassen Sie Nicht-Administratoren nichts anfassen, was Sie nicht brechen möchten und für das Sie verantwortlich gemacht werden.
Entwickler sollten Zugriff auf eine Testumgebung haben. Sobald ihre Arbeit bereit ist, auf der Produktionsmaschine abgelegt zu werden, sollte sie dem Systemadministrator übergeben werden. Wenn die Entwickler ihre Arbeit erledigt und die Prozedur ordnungsgemäß dokumentiert haben, wird alles gut gehen. Wenn nicht, müssen sie ihre Rückseiten getreten werden, um nicht angemessen zu testen.
quelle
Ich war auch in dieser Schlacht. Meine Antwort lautet, dass jeder, der für die Verfügbarkeit des Servers verantwortlich ist, für alle Aktualisierungen, Änderungen usw. usw. verantwortlich sein sollte. Niemand sonst sollte die Möglichkeit haben, diese Art von Funktionen auf dem Server auszuführen. Wenn es Ihre Aufgabe ist, sicherzustellen, dass der Server funktioniert, und der Chef Sie für den Server verantwortlich und verantwortlich macht, liegt es in Ihrer Verantwortung, ihn zu warten und zu sichern.
Die meisten Entwickler werden Ihnen mitteilen, dass sie Administratorzugriff auf den Server benötigen, und die meisten von ihnen werden mit mir nicht einverstanden sein, aber ich bin derjenige, der ihn um 2 Uhr morgens neu starten muss, wenn er auflegt, und muss ihn danach neu erstellen Bei einem fehlgeschlagenen Update wird die Ausfallzeit meiner Abteilung in Rechnung gestellt usw. usw. Ich muss mich an den CIO wenden, wenn sich etwas auf unsere SLA auswirkt. Daher bin ich der einzige, der auf Administratorebene Zugriff auf den Server erhält. Ich bin verantwortlich für alle Komponenten, Updates, Änderungen usw.
quelle
Ich stimme zu 100% zu. Entwickler sind sich der Funktionsweise von Syadmin meistens nicht bewusst. Wenn sie etwas brauchen, fragen sie dich, das ist alles. Sie überlegen, wie und wann Sie ein brauchbares Paket liefern. (Wie beim Versenden von E-Mails sind SIE derjenige, der Postfix konfiguriert). Darüber hinaus neigen sie dazu zu glauben, dass in den meisten Fällen Root-Zugriff die Dinge zum Laufen bringt, wenn sie nicht in der Lage sind, dies mit normalem Zugriff zu tun. Ich stimme anderen hier zu, sie werden nicht um 2 Uhr morgens bei dir sein, wenn du ein Problem siehst. Ich hatte vor ein paar Wochen den Fall, ein Entwickler wollte sein WordPress aktualisieren. Ich sagte ihm zu RTF Changelog, für ihn war das nutzlos, der Update-Vorgang erfolgt über eine schöne Oberfläche. Nun, das Update hat nicht funktioniert, ich hatte seine Anwendung gespeichert, ich habe das Backup-Skript nicht von ihm gemacht. Ohne mich hätte er die Seite nicht wiederherstellen können.
quelle
Es gibt einen Trend, der die Unterscheidung zwischen Entwicklern und Operationen verwischt. Machen Sie Ihre Entwickler zu Sysadmins und Ihre Sysadmins-Entwickler.
In diesem Sinne könnte WordPress von einigen Arbeiten zur automatisierten (und programmgesteuerten) Bereitstellung von Blogs profitieren. Viele WordPress-Benutzer warten mehr als ein paar WP / WPMU-Instanzen, und ihre rechtzeitige Aktualisierung ist zumindest umständlich.
Einen schönen (und unterhaltsamen) Überblick über die Philosophie finden Sie auf den Agile Infrastructure-Folien von Agile 2009
quelle
Entwickler sollten keine Wurzeln in der Produktion haben. Alle außer den Entwicklern sind sich einig. Aber die Entwickler können sozusagen ihren Kuchen haben und ihn auch essen. Ich bin etwas überrascht, dass niemand dies ausdrücklich erwähnt hat:
Einer meiner langjährigen Small Business-Kunden hat eine Website mit einer Drupal-Installation, mehrere WordPress-Sites, ein SMF-Forum und einige andere zufällige kleine Web-Apps. Ich bin der Vertragssysadmin (und aus historischen Gründen bei Bedarf auch Update / Hack von WordPress und SMF) und mein Kunde hat einen eigenen Vertrag mit Drupal-Entwicklern. Die Umgebung besteht aus mehreren virtuellen VMware-Maschinen bei einem öffentlichen Cloud-Anbieter.
Die Entwickler wollen wirklich root-Zugang haben und brauchen ihn auch. Es liegt in ihrer Verantwortung, die Nginx-Rewrite-Regeln zu schreiben, damit beispielsweise alle benutzerdefinierten Drupal-Funktionen funktionieren. Aber auf keinen Fall gebe ich ihnen Root-Zugriff auf dem Produktionsserver, und mein Kunde stimmt mir darin zu.
Wir sind also einen Kompromiss eingegangen: Sie erhalten Root-Zugriff auf den Test-Webserver (der im Allgemeinen mit Ausnahme der IP-Adresse mit der Produktion identisch ist und sich in derselben Cloud befindet). Was, wie die Produktion, etckeeper hat, so dass ich sehen kann, welche Änderungen sie vornehmen müssen und welche Pakete sie installiert haben. Ich kann dann entweder die Änderungen in die Produktion übernehmen oder ihnen mitteilen, was mit dem, was sie tun möchten, nicht stimmt. Und wenn sie es wirklich vermasselt haben (haben sie noch nicht, danke, gawd), kann ich ihre Änderungen leicht rückgängig machen.
Sie haben überhaupt keinen Zugriff auf den Produktionsdatenbankserver. Sie haben nicht einmal Benutzeranmeldungen. Nur mein Kunde und ich.
(Die Web-App selbst wird direkt mit git bereitgestellt, und wenn sie kaputt geht, können sie das Problem beheben und meinem Kunden erklären, warum sie weiterhin seine Entwickler sein sollen. Mein Kunde würde mich jedoch auf eine solche E-Mail hinweisen, sodass ich es auch könnte lache über sie oder facepalm.)
quelle
Root == Systemadministrator.
Benutzer == Entwickler, DBAs oder Benutzer.
Root kennt keinen Schlaf, wenn ein Server ausfällt, Root schützt Benutzer vor sich selbst, Root schützt die Benutzerdaten aus dem Netz, Root stellt die Gesundheit des Servers über alle Benutzer. Roots Arsch ist in der Leitung, wenn der Server offline ist. Server glücklich, Root glücklich!
Häufige Gründe für ungeplante Ausfallzeiten: Benutzer, nicht dokumentierte Änderungen in der Umgebung und Baggerlader. Server tun genau das, was ihnen gesagt wird, sie brechen nicht einfach nach dem Zufallsprinzip. Hacker fragen Sie, es ist nicht ob, es ist wann ... daher die Notwendigkeit einer "Wurzel".
00:33 CDT wissen Sie, wo sich Ihre Backups und Disaster Recovery-Dokumente befinden? :-p
quelle
Sysadmins sollten Admin-Zugriff haben (genau wie der Titel sagt). Niemand sonst benötigt Zugriff auf Produktionsserver. Wenn die Entwickler ein Problem auf einem Produktionssystem beheben müssen, sollte dieses Problem in der Entwicklungsumgebung reproduzierbar sein. Ist dies nicht der Fall, können sie sich an den Systemadministrator setzen und das System durchsehen.
Entwickler mögen es nicht, die Produktion nicht anfassen zu können, aber das ist kein Job. Dort muss die Software geschrieben und für eine Produktionsfreigabe an sysadmins übergeben werden. Wenn sie alles richtig dokumentiert haben (und bedenken Sie, dass Dokumentation in den meisten Geschäften ein Schimpfwort ist), sollten die Veröffentlichungen in Ordnung sein.
In börsennotierten Unternehmen hier in den USA müssen Sie sich mit SOX, HIPPA usw. befassen. Die meisten dieser gottverlassenen Vorschriften helfen tatsächlich bei diesem Argument. SOX schreibt eine Aufgabentrennung vor, die erfordert, dass Entwickler ihre Hände von den Produktionssystemen lassen.
quelle