Gibt es Gründe, warum ich meinen DB-Eigentümer nicht auf [sa] setzen sollte?

15

Gestern habe ich diese Frage zum Ändern des DBO mehrerer Datenbanken gestellt, die ich habe. Die Änderung macht Sinn, aber ich möchte klar sein.

Gibt es eine gute Gründe oder Umstände , warum ich nicht sollte die dbo einer Datenbank [sa] eingestellt?

RLH
quelle
1
Zu Ihrer Information: Wenn Sie den Eigentümer einer Datenbank ändern oder dies insbesondere auf mehrere Datenbanken gleichzeitig anwenden, stellen Sie sicher, dass Ihr Skript Bestimmungen zum erneuten Zuordnen von Datenbankbenutzern zu ihren Anmeldungen enthält. Nehmen Sie diese Änderung nach Möglichkeit außerhalb der Spitzenzeiten vor.
Jon Seigel

Antworten:

18

Wenn Sie SA zum Eigentümer einer Datenbank machen, werden eine Reihe von Dingen vereinfacht und / oder gelöst, die sich jedoch auf die Sicherheit auswirken können.

Denken Sie insbesondere daran, dass SA der Eigentümer einer Datenbank ist dbo = 'SA'. Dies bedeutet, dass unter anderem alle Prozeduren im Schema [dbo] (dies ist die Standardeinstellung), in denen "EXECUTE As Owner" enthalten ist, tatsächlich als SA ausgeführt werden. Das ist nicht ganz so schlimm, wie es sich anhört, denn wenn Sie die Datenbank nicht als VERTRAUENSWÜRDIG markiert haben, lässt SQL Server keine Sitzung oder Aufgabe aus der Datenbank mit einem solchen imitierten Prinzipal auf Serverebene.

Das bringt den nächsten Punkt auf den Punkt: Markieren Sie solche Datenbanken niemals als VERTRAUENSWERT, es sei denn, Sie sind wirklich , wirklich sicher, dass sie sicher sind. Denn jeder, der in der Lage ist, Prozeduren im Schema [dbo] zu erstellen, kann auf dem gesamten Server als SA ausgeführt werden, wenn er möchte.

Ein weiteres Problem kann auftreten, weil viele Produkte und Anwendungen, die über eine eigene SQL Server-Datenbank verfügen, häufig angeben, dass ihre Anwendungsanmeldung das DBO der Datenbank sein muss. Offensichtlich können Sie dies beheben, indem Sie die Anmeldung für die Anwendung auf "SA" setzen. Hoffentlich ist es auch klar, dass Sie dies niemals tun sollten, es sei denn, die SQL Server-Instanz wird für nichts anderes verwendet (auch dann würde ich dagegen empfehlen).

RBarryYoung
quelle
Ok, danke für die zusätzlichen Informationen. Das ist sehr nützlich.
RLH