Sollten Entwickler in der Lage sein, Produktionsdatenbanken abzufragen?

162

Sollten Entwickler die Erlaubnis erhalten, SELECTProduktionsdatenbanken abzufragen ( / schreibgeschützt)? An dem Ort, an dem ich zuvor gearbeitet habe, hatte das Entwicklerteam die db_datareaderRolle. Wo ich jetzt arbeite, kann sich das Entwicklungsteam nicht einmal mit der Produktionsinstanz verbinden.

Eine der Testinstanzen ist eine Produktionskopie, die einmal pro Woche aus einer Produktionssicherung wiederhergestellt wird, sodass Entwickler die Daten problemlos sehen können.

Welche guten Gründe sprechen dafür, dass Entwickler die Produktion nicht abfragen dürfen (außer einfach, dass sie keinen Zugriff auf sensible Daten haben sollen)?

Tom Hunter
quelle
25
Sagen Sie uns zunächst, warum die Entwickler eine Verbindung zur Produktion herstellen möchten.
Nick Chammas
6
Ich versuche, ein Produktionsproblem zu untersuchen. Die relevanten Daten wurden heute in die Produktion geladen und befinden sich noch nicht in der Testinstanz (auf die ich Zugriff habe).
Tom Hunter

Antworten:

152

Es hängt wirklich davon ab, ob der Entwickler Supportverantwortung trägt. Wenn sie für die Unterstützung der dritten Leitung aufgelegt sind, müssen sie sich wahrscheinlich die Produktionsdatenbank ansehen, um dies zu tun.

Im Allgemeinen ist es eine schlechte Idee, irgendetwas auf einem Produktionsserver zu tun, es sei denn, es ist wirklich notwendig, es dort zu tun.

Für die meisten Entwicklungszwecke sind Spiegel oder Schnappschüsse der Produktionsdatenbank ausreichend und wahrscheinlich besser als die Live-Produktionsdatenbank. Wenn Sie etwas mit Integration zu tun haben, benötigen Sie stabile Datenbankumgebungen, in denen Sie steuern können, was darin enthalten ist. Alles, was mit Versöhnung zu tun hat, muss auch die Fähigkeit haben, einen kontrollierten Zeitpunkt zu betrachten.

Wenn das Problem darin besteht, dass Sie keine Produktionsspiegel-Umgebungen haben oder keine Möglichkeit haben, eine Kopie der Produktionsdaten für Ihre Entwickler zu erstellen, ist dies eine etwas andere Frage. In diesem Fall benötigen Ihre Entwickler wirklich mindestens eine Spiegelumgebung. Wenn Sie nicht sehen können, wo das Problem in den Daten liegt, können Sie es nur schwer beheben.

Betroffen vonTunbridgeWells
quelle
57
+1 für Generally it's a bad idea to do anything on a production server unless it's really necessary to do it there.Die Beweislast (sozusagen) sollte darin bestehen, die Gewährung des Zugangs zu rechtfertigen, nicht jedoch, ihn zu verweigern.
JNK
135

Nein.

Entwickler sollten aus folgenden Gründen keinen Zugriff auf Produktionsdatenbanksysteme haben:

  1. Verfügbarkeit und Leistung : Nur-Lese-Rechte für eine Datenbank sind nicht ungefährlich. Eine schlecht geschriebene Abfrage kann:

    1. Sperrt Tabellen und blockiert andere kritische Prozesse.
    2. Räumen Sie Ihren Datencache in den Papierkorb und zwingen Sie andere Prozesse, Daten von der Festplatte erneut zu lesen.
    3. Besteuern Sie Ihre Speicherebene, was sich auf andere Dienste auswirkt, die diesen Speicher gemeinsam nutzen.
  2. Sicherheit : Ihre Produktionsdatenbank enthält möglicherweise vertrauliche Informationen wie:

    • Passwort-Hashes
    • Abrechnungsdaten
    • andere persönlich identifizierbare Informationen

    Nur wer unbedingt Zugang zu diesen Informationen benötigt, sollte sie haben. In einem gut organisierten Unternehmen gehören Entwickler nicht dazu. Darüber hinaus wird Ihr Unternehmen die PCI- und SOX-Konformität nicht erfüllen, wenn seine Entwickler mit diesen Daten auf Produktionssysteme zugreifen können.

    Die Gründe dafür liegen auf der Hand. Die Entwicklungsarbeit eines Entwicklers durchläuft viele Hände, bevor sie live geht. Was kann einen böswilligen Entwickler mit direktem Produktionszugriff davon abhalten, Ihre Produktionsdaten zu stehlen oder Ihre Live-Datenbank in die Knie zu zwingen?

    "Aber das gilt auch für die DBAs! Sie könnten das tun!" Genau. Sie wollen so wenig Superuser wie möglich.

Ja.

Entwickler sollten Zugriff auf Produktionssysteme haben.

In meiner Firma haben wir vier Teams, die sich mit Produktionsdatenbanken befassen. Sie sind:

  1. Entwickler , die das Schema und den Code für die Datenbanken entwerfen und schreiben. Sie haben keinen Zugriff auf die Datenbanken in der Produktion. Manchmal setzen sie sich jedoch mit den Administratoren oder Support-Mitarbeitern in Verbindung und helfen ihnen dabei, sich etwas im Leben anzuschauen.
  2. Administratoren , die Datenbanken in der Produktion bereitstellen, überwachen und verwalten.
  3. Unterstützen Sie Mitarbeiter , die zeitkritische Produktionsprobleme untersuchen und den Entwicklern Feedback geben, damit sie Korrekturen entwickeln können.
  4. Business Intelligence-Mitarbeiter , die Daten aus Produktionsdatenbanken extrahieren, indem sie entweder regelmäßig aktualisierte Kopien dieser Datenbanken verwenden oder sorgfältig geschriebene und von den Administratoren erstellte QA-Auszüge verwenden.

Es ist angebracht, Ihren Entwicklern Produktionszugriff zu gewähren, wenn Sie bestimmte Mängel in diesen anderen Gruppen haben.

Zum Beispiel:

  • Sie haben kein Support-Team. Wer wird wissen, wo er suchen muss, um dieses zeitkritische Produktionsproblem zu beheben? Ihre Entwickler. Gewähren Sie ihnen " Break the Glass " -Zugang.
  • Sie haben kein BI-Team. Ihre Admins haben oder wollen nichts mit Berichten oder Auszügen zu tun. Wer wird den Bericht beheben, den Ihre Führungskräfte jeden Morgen sehen? Ihre Entwickler. Gewähren Sie ihnen eingeschränkten Zugriff auf das Debuggen dieser Berichte und Extrakte.
  • Sie haben kein Admin-Team. Sie sind in einer sehr kleinen oder Start-up-Firma, also begrüßen Sie den "versehentlichen DBA". Ihre Entwickler sind doppelt so viele Administratoren wie Sie und benötigen daher vollen Zugriff auf die Produktion.
Nick Chammas
quelle
78

Leistung wäre ein großer Grund.

Nur weil sie die Daten nicht ändern können, heißt das nicht, dass sie den Server nicht beeinflussen können. Eine schlecht geschriebene Abfrage kann die Produktionsumgebung in die Knie zwingen und möglicherweise andere Probleme verursachen (z. B. Tempdb-Überläufe):

SELECT *
FROM BigTable A, OtherBigTable B
ORDER BY Somecolumn

Das ist ein Rezept für eine Katastrophe. Beachten Sie, dass dies ein kartesisches Produkt mit einer Bestellung nach ist, was bedeutet, dass es in tempDB sortiert wird.

JNK
quelle
33

Das Prinzip ist "geringstes Privileg" und "muss man wissen": Bestehen Entwickler diesen Test?
Besonders wenn Auditors oder Sarbannes-Oxley anklopfen.

Dann meine nächste Vermutung: Entwickler sind doof. Also , wenn sie sagen , brauchen für die 3. Linie Unterstützung, die dann benötigt es? Web-Affen haben normalerweise keine, aber Datenbanktypen yes, wenn von ihnen erwartet wird, dass sie diese unterstützen.

Wird der Zugang dann dauerhaft benötigt? Sie können über eine SQL-Anmeldung oder ein alternatives Windows-Konto, für das eine Abmeldung erforderlich ist, auf "Break Glass" zugreifen. In unserem Fall war es der Dateneigentümer (hoffentlich ein technisch versierter Geschäftsmann) und der IT-Manager, der dies genehmigte.

Ich habe Entwickler gesehen, die Abfragen für die Produktion getestet oder ausgeführt haben und sie aus Unwissenheit heruntergefahren haben . Das heißt, Entwickler sollten die Verantwortung für ihre Handlungen übernehmen: Wenn sie einen Server ausschalten, sollten sie entsprechend leiden. Ich habe jemanden nach einem Vorfall herabgestuft ...

Diese gehen natürlich von einem relativ großen Laden aus. Je mehr Hüte die Leute tragen, desto weniger Aufgabentrennung ist möglich

Gibt es auch eine Umgebung, in der Entwickler Abfragen für aktuelle Daten ausführen können? In meinem letzten Shop wurde Prod jede Nacht auf einem Testserver wiederhergestellt, um dies bereitzustellen.

gbn
quelle
20

Ich denke, die Antwort ist, wie bei vielen Dingen, "es kommt darauf an".

Eine riesige ERP-Datenbank mit vielen sensiblen Unternehmens- und Kundeninformationen? Wahrscheinlich nicht (sowohl aus Sicherheits- als auch aus Leistungsgründen).

Eine 5-MB-Abteilungsdatenbank mit einem Access-Front-End, das Beiträge zu den Donut- und Pizzafonds protokolliert? Zumindest für den Nur-Lese-Zugriff wird das nicht viel ausmachen.

Zugegeben, das erste Beispiel ist viel häufiger als das zweite, aber dies sind Unterschiede, die Sie berücksichtigen sollten, wenn Sie für diese Art von Richtlinienentscheidungen verantwortlich sind. Aber auf der anderen Seite ist es erstaunlich, wie schnell sich eine 5-MB-Datenbank mit Donut- und Pizzafonds auf 50-GB-Teilenummern / Kundenkreditkartennummern / Wer-weiß-was- durchsetzen kann. sonst Datenbank, wenn Sie es zulassen.

db2
quelle
20

In einer normalen 24/7-OLTP-Umgebung sollte ein normaler Entwickler nicht in die Produktion aufgenommen werden. Zeitraum! Wenn von Zeit zu Zeit ein bestimmter Grund auftritt, können auf Anfrage Berechtigungen erteilt werden. Aber in der Regel nicht.

Ich habe viele Gründe dafür gesehen:

  • SELECT * von einem großen Tisch führt zu:

    • Leistungsprobleme (kartesische Produkte);
    • Blockieren von Problemen, die die Site schließlich in die Knie zwangen;
    • Blockierungskette, die die Replikation zum Erliegen bringt;
    • Ich bestelle eine große Menge von Daten, die das TempDB-Laufwerk füllten. Weißt du was? Verursacht völligen Wahnsinn :-)!
    • Hoher Blutdruck für den DBA, der für diese Nacht für die Produktion verantwortlich ist;
  • Lesen sensibler Daten (ein Entwickler sollte keinen Zugriff auf Kreditkarteninformationen oder persönliche Daten eines Benutzers haben);

Ich bin mir sicher, dass es noch mehr Gründe gibt.

Marian
quelle
19
  • Sicherheit: Es gibt möglicherweise vertrauliche Informationen, die bereinigt werden, wenn sie Entwicklern zur Verfügung gestellt werden.
  • Paranoia: Einige denken vielleicht, Sie könnten immer noch Daten verwechseln, wenn Sie nur den Zugriff auswählen.
  • Leistung: Eine Abfrage erfordert einige Ressourcen, und Sie können mir nicht sagen, dass Ihre Entwickler perfekt sind, wenn sie Code schreiben.
Paul
quelle
16

Einige Punkte zu berücksichtigen

  • Sind die Daten sensibel?
  • Sind die Programmierer Teil eines vertrauenswürdigen Kernteams oder eines Offshore-Teams?
  • Wie groß ist der Umfang der abgefragten Daten in Bezug auf die Auswirkung auf die Leistung?
  • Was ist der Umfang des Projekts oder der beteiligten Dollar?
  • Wie kritisch ist die Verfügbarkeit?

Kleinere Dollars benötigen weniger Prozesse und einen schnelleren Entwicklungsfluss.

Größere Dollars brauchen mehr Prozesse, die strengere Standards für die Entwicklungspraktiken erfordern.

Passen Sie Ihre Praktiken an das an, was Sie tun.

Jason Sebring
quelle
14

Ich arbeite als Entwickler für eine sehr große Firma. Alle unsere Entwickler, die jegliche Art von Support leisten (im Grunde alle von ihnen), haben Zugriff auf relevante Produktionsdatenbanken. Ich kann nur für mein spezielles Team sprechen, aber ich werde Ihnen sagen, warum wir Zugriff haben.

  1. Wir müssen in Echtzeit darauf zugreifen, um die tägliche Verarbeitung im Auge zu behalten. (Während wir ein Dashboard haben, müssen wir in der Lage sein, die Dinge genau im Auge zu behalten. Es wäre zwar schön, dieses Feature in unserem Dashboard zu haben, aber das ist unpraktisch.)
  2. Wir benötigen Echtzeitzugriff, um Produktionsausfälle zu untersuchen, da Verzögerungen enorme Auswirkungen haben können. (Ich werde hier nicht auf unsere Fehler eingehen. Sie kommen in allen möglichen Formen.)
  3. Wir müssen häufig benutzerdefinierte Berichte für Geschäftsbenutzer erstellen und diese Informationen müssen auf dem neuesten Stand sein. (dba hat keine Zeit dafür und wir haben keine Zeit, auf sie zu warten. Nicht ideal, aber sicher.)
  4. Wir müssen die DDL / DML-Bereitstellungen / Patches in der Produktion überprüfen. (DBAs stellen sie bereit, aber nur wir wissen, wie sie strukturiert sein sollen. Wir wissen mehr über unsere Datenbankstruktur als die DBAs. Wir sind hier vielleicht seltsam, aber unsere Datenbank ist sehr kompliziert, weil unser Geschäft sehr kompliziert ist.)

Leistung ist ein Anliegen. Es kommt vor, dass Entwickler Verzögerungen verursachen. Dies sind jedoch isolierte Instanzen, und unser SQL ist so leistungsorientiert, dass unsere Entwickler die Auswirkungen ihrer Abfragen selten nicht verstehen.

user606723
quelle
2
Dies rechtfertigt keinen Produktzugriff. Nummer 4: Verwenden Sie Tools wie Red Gate, um das Skript korrekt vorzubereiten. 3: Verwenden Sie einen Tag alte Daten auf Non-Prod 1. Was kein Reporting oder Dashboard?
6.
@gbn, 4) wir müssen uns trotzdem verifizieren. 3) Es kann nicht Tag alt sein.
user606723
11

Damit diese Frage gestellt werden kann, muss davon ausgegangen werden, dass sie derzeit keinen Zugriff haben. Wenn eine Organisation Software entwickelt und dies zur Behebung eines Kundenproblems dient und der Kunde eine Kopie seiner Datenbank bereitstellt, lautet die Antwort "Ja". Andernfalls würde ich dafür eintreten, Entwickler von der Produktion auszuschließen und alternative Umgebungen für ihre Forschungsbedürfnisse erstellen zu lassen. Sobald die Zahnpasta aus der Tube ist, ist es schwierig, sie wieder einzulegen.

jl01
quelle
10

Ich bin damit einverstanden, dass die Rechtfertigungslast bei denjenigen liegen sollte, die Zugang benötigen. Normalerweise hatte ich in Umgebungen, in denen ich mich beraten habe, Zugang zu Produktionssystemen, in denen es sich um eine kleine Umgebung handelte und ich die Support-Person war. Ich hatte Zugriff auf Backups usw., wo ich Support für den Support war, und indirekten Zugriff (über einen dedizierten Support-Entwickler) auf Produktionsdaten.

Die große Sache ist: Sie brauchen diesen Zugang, wenn Sie aufgelegt sind, damit alles reibungslos läuft, und Sie müssen die Frage des Finanzmaklers beantworten, ob etwas nicht funktioniert. In diesem Fall können Sie nicht immer mit Daten arbeiten, die älter als ein Tag sind. Andererseits ist es umso schlechter, je mehr Zugang vorhanden ist. In der Regel vermeide ich als Berater diese Art von Zugriff, es sei denn, er wird benötigt. Da ich an Finanzdatenbanken arbeite, möchte ich als letztes beschuldigt werden, meine eigenen Rechnungen eingegeben zu haben :-D.

Wenn Sie andererseits keinen Zugriff benötigen, sollten Sie ihn nicht haben. Ich kaufe das Argument für vertrauliche Daten nicht wirklich, da der Entwickler wahrscheinlich am Haken ist, um sicherzustellen, dass dies korrekt gehandhabt wird (und es ist sehr schwer zu überprüfen, ohne zu prüfen, was tatsächlich gespeichert wurde, wenn ein Fehlerbericht eingeht). Wenn Sie dem Entwickler nicht vertrauen können, dass er sich die in der Entwickler-App gespeicherten Daten ansieht, sollten Sie den Entwickler nicht damit beauftragen, die App zu schreiben. Es gibt zu viele Möglichkeiten, wie der Entwickler die Daten verschleiern und per E-Mail verschicken könnte, und Sie können sich nie sicher sein. MAC-Steuerelemente helfen hier, sind aber immer noch recht komplex zu implementieren.

Das große Problem von meiner Seite hat mit Schreibzugriff zu tun. Wenn ein Entwickler keinen Zugriff hat, hat der Entwickler erst recht keinen Schreibzugriff. Wenn Sie die Integrität der Bücher überprüfen möchten, möchten Sie den Schreibzugriff auf so wenige Personen wie möglich beschränken. Audit Trails sind viel einfacher zu validieren, wenn die Entwickler keinen Zugriff haben. Wenn der Entwickler über Lesezugriff verfügt, haben Sie immer die Frage, ob eine Privilegieneskallation vorhanden ist, die Schreibzugriff gewähren kann (möglicherweise SQL-Injection mit gespeicherten Prozeduren?). Ich hatte häufig vollen Zugriff auf Kundenrechnungsinformationen, wenn ich Zugriff auf Staging-Umgebungen hatte. Wenn es eine Staging - Umgebung ist , die zwar funktioniert, werde ich in der Regel aktiv fragen nicht den Zugang zu Produktion zu haben , es sei denn , es notwendig ist.

Das ist natürlich nicht perfekt. Ein Entwickler könnte immer noch Hintertüren in die Anwendung einbauen, die möglicherweise nicht leicht zu erkennen sind, aber dieser Ansatz ist ein vernünftiger Ansatz, da Sicherungsdaten ab einem Tag vor dem Tag verfügbar sind, an dem ich den Eindruck habe, dass dies das Problem ist, das sie haben.

Hoffe das hilft.

Bearbeiten: Wenn ich nur hinzufüge, dass ich in den größeren Umgebungen, in denen ich gearbeitet habe, Zugriff auf vollständige Sicherungsdaten hatte, die für das Finanzsystem oft zwischen ein paar Tagen und ein paar Monaten alt waren. Dies war immer gut genug für meine Arbeit und das einzige Mal, dass es zusammenbrach, war, als die Finanzleute die Fähigkeit benötigten, mit neueren Daten zu testen, damit sie mit der Produktion mithalten konnten.

Chris Travers
quelle
9

Kein Zugriff ist eine gute Sache und eine Möglichkeit, Entwickler und andere Personen davor zu schützen, die Daten nicht versehentlich zu beschädigen oder anzuzeigen. Dies schützt Unternehmen auch vor Gesetzesverstößen (z. B. Verstöße gegen Hipaa und Bedenken hinsichtlich der Privatsphäre).

Ein Entwickler braucht nie wirklich Zugang zu einer Produktionsumgebung. Aus Entwicklersicht ist es einfach einfacher, wenn ein schwerer Fehler nicht reproduziert werden kann.

Ein Entwickler kann jedoch Mini-Dumps oder Protokolldateien einfügen und die PDB-Symboldateien verwenden, um den Fehler neu zu erstellen.

Wenn die Daten in eine Testumgebung heruntergeladen werden müssen, ist es für einen Prozess typisch, die Daten zu bereinigen, was zusätzliche Arbeit verursachen kann.

Abhängig von der Datenbanksoftware, die für die von Ihnen aufgerufene Produktion verwendet wird, ist möglicherweise eine neue Lizenz erforderlich, damit der Entwickler auf die Datenbank zugreifen kann. Dies ist ein großer Aufwand, um lediglich Lesezugriff zu erhalten.

Wenn Ihr Unternehmen Ihnen keine Tools zum Debuggen oder Erforschen von Produktionsproblemen zur Verfügung stellt, liegt dies nicht daran, dass Sie keinen Zugriff auf die Produktionsdaten haben.

Daten sind der wertvollste Teil der meisten Anwendungen!

SoftwareCarpenter
quelle
8

Die Leistung könnte einer der Gründe sein.

Entwicklerabfragen können häufig ineffizient sein und eine übermäßige Sperrung oder Ressourcennutzung verursachen, bis sie ordnungsgemäß abgestimmt sind.

Ein Produktionssystem ist kein geeigneter Ort für Entwickler, um zu experimentieren.

JSR
quelle
8

Es hängt vom DBA ab und wie er oder sie mit dem Entwickler vertraut. Normalerweise erhalten Entwickler Abfragerechte (Leserechte) für die Produktionsdatenbanken. Als Faustregel gilt : Entwickler sollten nur mit Test / dev Datenbanken arbeiten.

MarlonRibunal
quelle
8

Die Herausforderung besteht darin, dass die meisten Softwareanwendungen datengesteuert sind. Wenn Sie also versuchen, ein Problem in der Anwendung zu beheben, müssen Sie wirklich die Daten sehen, die das Problem verursachen. Die Entwickler brauchen also wirklich einen Zugang.

Die Verwendung von SQL-Anmeldungen, um ihnen nur Lesezugriff auf Tabellen zu gewähren, ist großartig. ABER, was hindert sie daran, eine Abfrage mit 20 Joins zu erstellen oder SELECT * aus einer Tabelle mit Millionen von Datensätzen auszuführen? Diese Abfragen können versehentlich die Leistung Ihrer Datenbank und Ihres Speichers beeinträchtigen.

Meine Firma Stackify hat eine clevere Lösung gefunden. Entwickler können die Abfrage über unsere Software ausführen, und wir verwenden den Abfrageplan, um sicherzustellen, dass es sich nur um eine SELECT-Anweisung handelt und die geschätzten Kosten der Abfrage niedrig sind und nur wenige Datensätze zurückgegeben werden. Auf diese Weise können sie nicht viel Schaden anrichten. Wir prüfen auch alle von ihnen ausgeführten Abfragen.

Dies ist nur eines der Dinge, die wir anbieten. Besuchen Sie uns unter http://www.Stackify.com , um mehr über unsere DevOps-Supportlösungen zu erfahren .

Matt von Stackify
quelle
4
Einige betrachten dies möglicherweise als Spam, da die Absicht lediglich darin besteht, für Ihr Produkt zu werben. OTOH, es ist relevant für die Frage und richtig offengelegt, also denke ich persönlich, dass es sich lohnt.
Jack Douglas
Zumindest in PostgreSQL reicht der Abfrageplan nicht aus, um zu wissen, dass es sich um eine schreibgeschützte Abfrage handelt.
Chris Travers
7

Ja. In einigen Fällen ist es sinnvoll, einer bestimmten Teilmenge von Benutzern, einschließlich Entwicklern, einen bestimmten Grad an Zugriff auf die Abfrage von Produktionsdaten zu gewähren. Die entsprechenden Einschränkungen müssen jedoch aus zwei Gründen bestehen. Zunächst müssen Sie als DBA Ihr Bestes tun, um das Serviceniveau zu gewährleisten, das von allen Benutzern benötigt wird. Außerdem möchten Sie unbeabsichtigte fehlerhafte Abfragen wie Massenlöschungen oder Verstöße gegen Geschäftsregeln verhindern. Es sollte selbstverständlich sein, dass angemessene Sicherheitskontrollen vorhanden sein müssen.

Aus welchen Gründen auch immer Sie Ad-hoc-Abfragen nicht direkt für Datenbanktabellen zulassen, es kann durchaus vorkommen, dass Abfragen für Ansichten und gespeicherte Prozeduren zugelassen werden. Mithilfe von Datenbankberechtigungen können Sie SELECT-Abfragen für Tabellen direkt verhindern und sogar einschränken, auf welche Ansichten und gespeicherten Prozeduren ein bestimmter Benutzer Zugriff hat. Diese Methode bietet nicht nur Flexibilität für Ihre Benutzerbasis, sondern schützt auch Ihre Datenintegrität und -zuverlässigkeit, wenn sie korrekt implementiert wird.

Tom Resing
quelle
5

In unserem Unternehmen unterhalten wir schreibgeschützte Slaves von Produktionsdatenbanken, auf die sich die Produktionsdienste nicht verlassen. Wir gewähren Entwicklern Zugriff auf diejenigen, die Zugriff auf Produktionsdaten haben. Bei vertraulichen Daten (Kundeninformationen, Zahlungsinformationen usw.) beschränken wir die Replikation dieser Tabellen und verwalten eine Beispieldatentabelle auf dem Slave-Server.

Ryan Waldron
quelle
1

Nein niemals!!

Aus diesem Grund haben wir Entwicklungs- / Test- / UAT-Server. Die Daten aus der Produktion können in die Testumgebung kopiert werden und die Entwickler können mit dem Testen fortfahren. Bestimmte Abfragen können auch in einer Produktionsumgebung sehr schädlich sein. Es erhöht die Last und kann zu Spitzenzeiten die gesamte Leistung beeinträchtigen.

Alle benötigten Informationen sollten über den DBA abgerufen werden, der ausführen kann, was er möchte (Auswählen) und die Ergebnisse an ihn sendet. So machen wir es in unserer Umwelt.

Ramakant Dadhichi
quelle
-1

Ich bin mir nicht sicher, warum jeder davon ausgeht, dass Entwickler dumm sind und nichts wissen. Ich bekomme eine Probe von einer Tonne verschiedener Rollen, bei denen sie durcheinander gebracht wurden und nicht "in Produktion" sein sollten. Ich habe DBAs, Sys Admins, Network Admins, Entwickler, etc ... alles durcheinander.

Niemand (dev, dba, sa) hat mit seiner normalen Netzwerkanmeldung Zugriff auf einen Server oder eine Datenbank in einer beliebigen Umgebung. Sie alle haben spezielle "Admin" -Konten, die verwendet werden müssen. Ja, normalerweise benutzen die dba und sa ihre öfter, aber auch sie sollten leicht treten. Ich bin von allen verbrannt worden.

An einem guten Tag benötigt also keine IT-Rolle Zugriff. Der Scheiß trifft jedoch den Ventilator, alle Hände an Deck und wir brauchen die richtigen Leute, um das Problem zu lösen. Dies geschieht normalerweise durch den Entwickler, der die Anwendung kennt und die dba und sa zu bestimmten Punkten führt. Es ist nur die unnötige Verzögerung oder Anforderung und Genehmigung.

Darüber hinaus folgt auf die Genehmigung ohnehin nie eine Art von Prüfung, sodass die Genehmigung nichts bedeutet.

Phil
quelle
2
Nicht sicher, von welchen Umgebungen Sie sprechen, aber in jedem Unternehmen, das sich an strenge Vorschriften halten muss, wie z. B. PCI, SOX, SISR usw. auf höherer Ebene. In unserem Fall protokollieren wir es nicht nur, sondern teilen es auch auf, damit niemand es nachträglich bearbeiten kann.
Ali Razeghi