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!
PROD
gelben 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 dassa
Konto benötigen , und niemand kann sich an das Passwort erinnern ...Antworten:
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_datawriter
und expliziteGRANT EXECUTE ON x TO y
(für jede gespeicherte Prozedur und benutzerdefinierte Funktionx
für die Benutzer - IDy
).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.
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
Tangurena
meine Domain-Anmeldung wäre (diese Anmeldung hätte reguläreUser
Berechtigungen),TangurenaAdmin
wäre dies meine separateAdministrator
Anmeldung. 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
PowerUser
Gruppe 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.
Nein. Sie benötigen nur ALTER TRACE-Berechtigungen:
http://msdn.microsoft.com/en-us/library/ms187611.aspx
quelle
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.
quelle
In SQL Server können Sie einen Datenbankbenutzer erstellen und ihm eine
database role
mit 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.quelle