Trotz unserer heftigen Proteste hat unser Management entschieden, dass dem Entwicklungsteam "sa" -Rechte auf dem Entwicklungsserver gewährt werden müssen. Der Haken ist, dass wir, die DB-Support-Gruppe, weiterhin für die Wartung dieser Box verantwortlich sind.
Wir wurden nun mit der Aufgabe betraut, eine Liste von Dos and Don'ts für die Entwicklungsteams mit diesen erweiterten Berechtigungen zu erstellen.
Bitte fügen Sie dieser Liste hinzu:
DO - Beschränken Sie die Aktivitäten auf die in der Entwicklung befindliche DB
UNTERLASSEN SIE --
- Ändern Sie alle SQL-Instanzeinstellungen
- sp_configure (einschließlich cmdshell)
- Hinzufügen / Ändern / Löschen von Sicherheitseinstellungen
- Datenbankobjekte hinzufügen / ändern / löschen
- Hinzufügen / Ändern / Löschen von Serverobjekten wie Sicherungsgeräten und Verbindungsservern
- Replikation hinzufügen / ändern / löschen
- Wartungspläne hinzufügen / ändern / löschen
- Berühren Sie eine Datenbank, die nicht zu Ihrem Team gehört
Alle Hinweise auf Tools, die zum Verfolgen der Aktivitäten dieser Benutzer verfügbar sind, werden sehr geschätzt.
Antworten:
Wenn es nicht zu spät ist, besteht eine Kompromissoption, die ich als gut angesehen habe, darin, die Berechtigungen nicht zu aktualisieren oder die vorhandenen Konten der Entwickler zu ersetzen. Erstellen Sie ein separates Konto, das nur verwendet wird, wenn sie die erhöhten Berechtigungen benötigen.
Normalerweise arbeiten sie also unter einzelnen "eingeschränkten" Konten (die ich nur lose verwende, da diese eingeschränkten Konten noch einige wichtige Berechtigungen benötigen - dh Tabellen erstellen, löschen, ändern). Aber für den seltenen
sa
Fall, dass sie denken , dass sie es brauchen , können sie sich mit diesem Konto anmelden. Anschließend können Sie das Konto in Ihren Protokollen kennzeichnen und es zusätzlich überwachen. Sie haben den Entwicklern den Zugriff gewährt, den sie angefordert haben, aber auf eine Weise, die etwas kontrollierbarer ist.Wenn es Missbrauch gibt, können die Protokolle in diesem Konto als Beweismittel verwendet werden, um es zu entfernen.
quelle
Es heißt hier (MSDN) Sie Sysadmin (sa) müssen zum Debuggen auf SQL Server 2005.
Diese SO-Frage zeigt jedoch einen anderen Weg ohne sa, was ich anfangs dachte. Lass sie einfach laufen
sp_sidedebug
Ich würde auch vorschlagen, ihnen lokalen SQL Express zu geben, der auch andere Probleme löst ...
(bearbeitet mit mehr Infos)
Bearbeiten Sie nach der Antwort von W. Craig Trader
Andere Probleme mit "sa" -Rechten im schlimmsten Fall:
z.B
xp_cmdshell 'scm -Action 6 -Server PRODSERVER'
quelle
Auf Vorschlag habe ich die Möglichkeit, ein richtlinienbasiertes Management einzurichten und alle Ihre "Do" und "Don't" als Richtlinienregeln durchzusetzen. Dies würde einen großen Beitrag zum Schutz der Instanz leisten.
Ich würde auch DDL Änderungsüberwachung finden Sie unter Bereitstellen der Wirtschaftsprüfung in SQL Server 2008 , nicht so sehr als Abschreckung, sondern vor allem als eine Änderung Tracking - System so , wenn etwas wird geschraubt, zumindest wissen Sie , was geändert.
quelle
Wenn es sich um den DEVELOPMENT-Server handelt, was ist das Problem, wenn die DEVELOPERS vollen Zugriff haben? Wenn Sie Entwicklern mitteilen, dass Sie keine Datenbankobjekte (z. B. Tabellen, Spalten, Indizes) hinzufügen, entfernen oder ändern können, sagen Sie ihnen: "Sie können einen Compiler haben, aber Sie dürfen ihn nicht ausführen." Es scheint mir, dass die Entwickler Zugriff auf ihre eigene Datenbankinstanz wünschen / benötigen, um verschiedene Methoden zur Problemlösung testen zu können, ohne sich mit den Datenbanken PRODUCTION oder TEST herumschlagen zu müssen. Sie sollten diese Art von Verhalten fördern und nicht entmutigen.
Einige schlagen möglicherweise vor, dass Entwickler mit lokalen Instanzen von SQL Express arbeiten. SQL Express für jeden Entwickler kann zwar bestimmte Probleme lösen, weist jedoch andere Einschränkungen und Leistungsmerkmale auf als SQL Server auf einem separaten Server.
Was Sie tun sollten, ist einen regelmäßigen Sicherungsplan (mindestens jede Nacht) einzurichten und mit den Entwicklern zusammenzuarbeiten, um sicherzustellen, dass sie wissen, wie ungeplante Sicherungen initiiert und aus Sicherungen wiederhergestellt werden, damit Ausfallzeiten bei Problemen minimiert werden.
quelle
Es ist der Entwicklungsserver , nicht der DB-Support-Gruppenserver oder der Produktionsserver. Behalte ein gutes Backup / Image und lass die Entwickler weghacken. DBAs Kontrolle über die Devbox zu lassen, ist wie den Schwanz mit dem Hund wedeln zu lassen. Es ist für Entwickler da, an denen Entwickler arbeiten können. Dies beinhaltet manchmal das Brechen von Dingen und das Löschen von Tabellen und das Zurücksetzen mit anderen Einstellungen. Entwicklungsboxen werden nach einer Weile immer in einem schlechten Zustand sein, das ist was wir tun. Wenn wir nicht wissen, wo ein Problem auftritt, probieren wir verschiedene Dinge aus. Einige von ihnen sind leicht rückgängig zu machen, andere weniger.
quelle
sa
, aber machen Sie es so, dass sie nicht standardmäßig sicher sind, damit sie wissen, wann sie etwas tun, für dessen ordnungsgemäße Bereitstellung ein wenig zusätzliche Arbeit erforderlich ist.Ich glaube nicht, dass sie SA-Berechtigungen für die Entwicklungsbox benötigen. In fast allen Fällen können sie darauf verzichten.
Ich denke, eine gute Option ist die Installation der lokalen Dev Edition.
Frage:
Sie möchten nicht, dass Entwickler Datenbankobjekte hinzufügen / ändern / löschen? !! Wie werden sie sich entwickeln?
quelle
Wir fordern, dass alle Änderungen der Datenbankstruktur mit Skripten (auch auf dev) vorgenommen und in Subversion gespeichert werden. Dann aktualisieren wir nach einem festgelegten Zeitplan die Entwickler von prod und sie müssen ihre Skripte erneut ausführen, um wieder dorthin zu gelangen, wo sie sich im Entwicklungszyklus befanden. Dies hilft sicherzustellen, dass alles über Skripte erledigt wird und dass Skripte bereitstehen, wenn es Zeit für die Bereitstellung ist.
Ich weiß, dass Sie 2008 DDL-Trigger einrichten können, um strukturelle Änderungen der Datenbank zu verfolgen. Können Sie dies 2005 tun? Auf diese Weise können Sie zumindest herausfinden, wann jemand eine Einstellung ändert, wer dies getan hat, und herausfinden, warum.
quelle
SQL Server-Überwachung ist das, was Sie wollen, aber wenn Sie die gesamte Datenbankobjekterstellung für sie durchführen, warum benötigen Entwickler sa?
http://msdn.microsoft.com/en-us/library/cc280526.aspx
quelle