Hinweise darauf, wie ich meine Privilegien in der Produktion einschränken kann, aber meine Arbeit nicht übermäßig erschweren kann

9

Ausführen von SQL Server 2005 und 2008 unter Windows 2008 R2.

Wir werden die Privilegien in der Produktion für Entwickler reduzieren - und ich möchte das Gleiche für mich als DBA tun , die Rechte auf die Produktion einschränken und bei Bedarf erhöhen .

Mein primäres Ziel wäre es, dumme Fehler zu beseitigen - von Datenbankadministratoren gemacht, haben Entwickler höchstens Lesezugriff in der Produktion. Wir tun gerne so, als wären wir Superhelden, die keinen Fehler machen können, aber nicht immer Produktionsrechte zu haben, macht Sinn und ist eine bewährte Methode, die von einigen empfohlen wird.

Was ist der beste Ansatz? Was ist am wenigsten schmerzhaft, wenn Sie es täglich und während der Installation verwenden?

Wir haben derzeit eine Windows-Gruppe für DBAs, die Rechte für alle unsere Server und Datenbanken hat.

Ich wäre auch daran interessiert, die Berechtigungen für Betriebssysteme / Remote-Anmeldungen zu verringern - aber ich bin am meisten mit DB-Rechten beschäftigt.

Ich vermute, wir brauchen erhöhte Berechtigungen, um Traces als sa auszuführen, und möglicherweise zu einer Bereinigung der Eigentumsverhältnisse, bevor wir die SA-Rechte unseres alten Logins wegnehmen. Welche anderen Probleme könnten wir erwarten?

Vielen Dank für Ihren Rat und Ihre Erfahrungen!

Sam
quelle
Welche Datenbankplattform (en) verwenden Sie (SQL Server, Oracle, DB2, MySQL usw.)? Sprechen Sie über Datenbankberechtigungen? Oder Betriebssystemberechtigungen?
Justin Cave
Das würde helfen, was? SQL Server 2005/2008. Interessiert an DB- und OS-Privilegien.
Sam
Über welche dummen Fehler sprechen wir hier? Der wertvollste Sicherheitsmechanismus, den ich gefunden habe, besteht darin, den Desktop-Hintergrund auf allen Produktionsmaschinen mit PRODgelben Buchstaben auf Rot zu setzen . Denn nach meiner langjährigen Erfahrung werden "Sicherheitsmaßnahmen", die die Leute nur nerven, einfach umgangen, und wenn es eine Krise gibt, werden sie Sie nur verlangsamen. Sie wollen wirklich nicht in der Position sein, in der Sie das saKonto benötigen , und niemand kann sich an das Passwort erinnern ...
Gaius
Ja, ich habe meinen Desktop auf Servern auf Rot und auf Dev auf Grün eingestellt. Ich denke hauptsächlich an Datenänderungsfehler in SSMS.
Sam

Antworten:

2

Idealerweise möchten Sie für eine betriebsbereite Produktionsdatenbank, dass Entwickler überhaupt keinen Zugriff auf den Server oder eine Datenbank darauf haben. Dies ist eines der ersten Dinge, die Sie für die SOX- Konformität tun müssen .

Für die Art von Rechten , die Benutzer - IDs unter laufen, sie sind die einzigen Rechte sollten wirklich haben sind db_datareader, db_datawriterund explizite GRANT EXECUTE ON x TO y(für jede gespeicherte Prozedur und benutzerdefinierte Funktion xfür die Benutzer - ID y).

Wenn Sie Spuren in der Produktion ausführen müssen, haben Sie einige Probleme und es wird eine Great Wall of Text ™ benötigt, um alles zu erklären. Meine erste Empfehlung ist, eine QS-Umgebung zu haben, die genau wie die Produktion gesperrt ist. Wenn Traces ausgeführt werden müssen, stellen Sie eine Sicherung der Produktdatenbank in QA wieder her und führen Sie die Traces dort aus. Wenn Sie SOX-, HIPAA- oder PCI-DSS- Anforderungen haben, sollten Sie die Produktdaten besser bereinigen, bevor Sie sie in der Qualitätssicherung wiederherstellen.

Wir haben derzeit eine Windows-Gruppe für DBAs, die Rechte für alle unsere Server und Datenbanken hat.

Geben Sie ihnen die Anmeldung und zeigen Sie die Datenrechte an. Verwenden Sie jedoch ein separates Login mit erhöhten Berechtigungen, um DBAly-Aufgaben auszuführen. Ich kenne einen Finanzkunden, der dies tut - die regulären Windows-Authentifizierungs-basierten Anmeldungen waren in dem Schaden begrenzt, den sie versehentlich anrichten konnten. Stellt DML wieder her und führt es aus, wenn es mit der separaten SQL-Authentifizierungsanmeldung ausgeführt wird.

Eine Regierungsbehörde, mit der ich zusammengearbeitet habe, verwendete zwei separate Anmeldungen für jeden Server / Datenbankadministrator. Wenn also Tangurenameine Domain-Anmeldung wäre (diese Anmeldung hätte reguläre UserBerechtigungen), TangurenaAdminwäre dies meine separate AdministratorAnmeldung. Sie geraten in Schwierigkeiten, wenn Sie Ihr Administratorkonto ständig verwenden, aber dann fehlen ihm die Berechtigungen für andere Dinge (wie keine E-Mail. Oh, Sie sagen, dass es eine schlechte Sache ist ... ).

In der aktuellen Regierungsbehörde, mit der ich zusammenarbeite, hat jeder Server / Datenbankadministrator Berechtigungen, die über den Standardbenutzer hinausgehen, aber nicht ganz Administrator (stellen Sie sich das als PowerUserGruppe vor). Domänenadministratorfunktionen werden mit einem freigegebenen Domänenadministratorkonto ausgeführt.

Ein häufiger Fehler ist das Wiederherstellen der falschen Datenbank (z. B. die über den Produktionsserver wiederhergestellte Qualitätssicherung). Dies wird nicht durch eingeschränkte Rechte oder mehrere Anmeldungen behoben. Potenziell zerstörerische Dinge paarweise zu tun, ist eine Möglichkeit, die Risiken zu minimieren.

Ich vermute, wir brauchen erhöhte Privilegien, um Spuren als sa auszuführen

Nein. Sie benötigen nur ALTER TRACE-Berechtigungen:
http://msdn.microsoft.com/en-us/library/ms187611.aspx

Tangurena
quelle
Bitte lesen Sie den fett gedruckten Abschnitt in der Frage.
Sam
Vielen Dank für die gute Antwort - und Einzelheiten aus Ihrer Vergangenheit. Sehr geschätzt.
Sam
Meinst du vielleicht ALTER TRACE?
Sam
@ Sam, behoben ....
Tangurena
3

Zunächst schlage ich vor, dass Sie alle Berechtigungen in einer Entwicklungs- oder QS-Umgebung spielen, in der es kein Problem gibt, wenn der Zugriff für einige Zeit entfernt wird. Sie müssen prüfen, ob die Anwendungen keine Sicherheitsprobleme haben.

Ich erkläre Ihnen unseren internen Ansatz:

  • Alle Anwendungen verwenden einen einzelnen Domänenbenutzer, dem die erforderlichen Berechtigungen für eine Datenbank erteilt wurden (normalerweise die Datenbankrolle db_owner).

  • Für gelegentliches Lesen von Daten verwenden wir ein SQL-Login. Für diesen Benutzer weisen wir die Datenbankrolle zu - db_datareader. Hier wird der Zugriff für Entwickler auf den Hauptdatenbankcluster beendet. Für jede andere Idee verwenden sie die Berichtsserver-Datenbanken, bei denen es sich um Kopien (mithilfe des Protokollversands) der um Mitternacht erstellten Hauptserver-Datenbanken handelt. Um den Berichtsserver nicht mit Killer-Ad-hoc-Abfragen zu beenden, verwenden wir die Ressourcengruppenzuordnungen für Speicher und CPU.

  • Für das DBA-Team haben wir eine Domänengruppe, die alle Berechtigungen auf dem Computer und dem Server hat (Administrator auf dem Windows-Computer und Systemadministrator auf dem SQL-Server).

  • Für Installationen haben wir einen SQL-Benutzer, der db_owner für die Datenbanken ist, die wir beim Ausführen der Updates verwenden. Wir verwenden DDL-Trigger, um Schemaänderungen zu überwachen, und wir sollten sehen, welche Änderungen während der Installation oder als separate Änderung vorgenommen wurden

  • Es gibt einige gelegentliche Ausnahmen für erfahrene Entwickler, aber nachdem ihre Anforderungen erfüllt wurden, entfernen wir ihren Zugriff - sie erhalten Berechtigungen basierend auf ihrer Domänenanmeldung, sodass wir Verbindungen in Traces / DDL-Ansichten und mögliche Änderungen mit den DDL-Triggern überwachen können.

In Management Studio im Server-Sicherheitsordner erstellen Sie alle erforderlichen Anmeldungen, ordnen sie dann Ihren Datenbanken zu und geben ihnen die Rollen, die sie benötigen. Wenn Sie die Aktion per Skript ausführen, wird zunächst eine Serveranmeldung erstellt, dann wird ein Datenbankbenutzer mit dieser Anmeldung verbunden und diesem Benutzer eine Datenbankrolle zugewiesen. Sie können das Skript in Ihrem Skript-Set behalten, sodass Sie jedes Mal überprüfen können, welche Benutzer live sein und treten sollen und welche nicht.

Marian
quelle
Bitte lesen Sie die Frage erneut. Keiner von euch kommt sich auch nur annähernd nahe.
Sam
Ich würde sagen, wir haben zu diesem Thema geantwortet, denn nur eine strenge Politik schützt Sie. Sogar Sie als DBA können wissen, was Sie wann getan haben. Verwenden Sie für den normalen Betrieb Ihren Benutzer oder den schreibgeschützten Benutzer, für Installationszwecke einen bestimmten Benutzer, für Entwickler nur einen schreibgeschützten Benutzer, für die allgemeine Aktionsüberwachung - DDL-Trigger und -Spuren. Was ist falsch an dieser Vorgehensweise? Ich glaube nicht, dass es eine Möglichkeit gibt, die Erhöhung von Berechtigungen so zu automatisieren, wie Sie es zu wollen scheinen. Sogar Betriebssysteme haben diese Verwendung, Benutzer mit geringen Berechtigungen für normale Vorgänge und Benutzer mit hoher Berechtigung für Administratoraktionen.
Marian
0

In SQL Server können Sie einen Datenbankbenutzer erstellen und ihm eine database rolemit Lese- / Schreib- / Besitzberechtigung (en) zuweisen . Sobald der Benutzer in die Produktion migriert wurde, können Sie zu dem migrierten Datenbankbenutzer wechseln und die Rollen deaktivieren, die er nicht haben soll. Angenommen, der Benutzer stan ist im Test Mitglied von db_owner (Eigentümer der Datenbank). Sobald der Benutzerstan in die Produktion migriert wurde, können Sie ihn aus db_owner entfernen und ihm nur die Rolle db_datareader (schreibgeschützt) zuweisen.

In SQL 2005+ kann eine detailliertere Steuerung mit dem durchgeführt werden schema. Überprüfen Sie diesen Link im Schema für weitere Details.

Stanley Johns
quelle
Bitte lesen Sie den fett gedruckten Abschnitt in der Frage.
Sam