Aus dem Kurs: SQL Server 2019 Grundkurs: Administration

Sicherheit

SQL Server-Sicherheit: ein weiteres sehr wichtiges Thema. Wir sprechen heute vom sogenannten Unternehmensgut Daten. Daten befinden sich im SQL Server und die Frage ist natürlich immer: Wie sichere ich das vernünftig ab? Das beginnt bei einer Verbindung, Authentifizierungsverfahren, sprich also, ich habe erst mal meine SQL Server-Instanz, wie wir hier auf der linken Seite in der unteren Grafik sehr schön sehen, zu der wir uns connecten. Wir können uns natürlich auch direkt mit einer Datenbank verbinden, da gibt es verschiedene Mechanismen. Wir haben also Berechtigungen auf Serverinstanzebene, das heißt Verwaltungsaufgaben, administrative Tätigkeiten, die ich vielleicht auch auf einer Instanz durchführe, bzw. dann jeweils das Level oder die Ebene der Datenbank, um dann zu sagen, okay, Datenbank A möchte ich hier mal Zugriff erteilen, Datenbank B nicht. Das Ganze ist hierarchisch organisiert. Das heißt, wir haben also ein sogenanntes Schema innerhalb einer Datenbank, was einen Container darstellt, zum Beispiel einen Container für mehrere Tabellen, die einem Schema angehören, sodass ich dann von der Granularität her entscheiden kann: Vergebe ich jetzt Rechte auf das Schema und damit 1 bis n Tabellen oder mache ich es auf der untergeordneten Ebene, sprich auf die einzelne Tabelle eine Sicht, eine Prozedur, Funktion, sodass ich also hier mich hierarchisch durch das System arbeiten kann und auf den verschiedenen Ebenen mit meinen Berechtigungen halt ansetze? Somit sind sowohl administrative Parts auf der Instanz möglich, um also Benutzer keinen Zugriff auf eine Datenbank zu geben, aber Verwaltungsaufgaben zu ermöglichen als auch Zugriff auf Daten innerhalb der Datenbanken. Wenn wir uns das Ganze mal so ein bisschen anschauen schematisch, dann gehe ich mal rein ins SQL Server Management Studio. Wir haben hier oben die Instanz, klicken mal mit der rechten Maustaste und gehen in die Eigenschaften, um einfach mal zu zeigen, dass es hier bereits beginnt jetzt mit Authentifizierung. Also, welche Authentifizierungsverfahren sind möglich? Was wähle ich aus? Das Ganze also auf Ebene der Instanz angesetzt, bis hin zu Möglichkeiten von Überwachungen bzw. hier auch Compliance-Regeln, die, sage ich mal, selektiert werden können, sodass also hier zusätzlich dann ein gewisses Logging auch erfolgt, das betrifft zum Beispiel die Ebene der Instanz. Ebenfalls auf Ebene der Instanz hier den Knoten Sicherheit, wo dann letztendlich meine Anmeldungen existieren -- also, wer kann sich mit einem SQL Server verbinden? --, die Serverrollen, also letztendlich Gruppen mit vordefinierten Berechtigungen, denen ich Benutzer hinzufügen kann. Anmeldeinformationen, um dann Benutzern bestimmten Zugriff auf Subsysteme des SQL Server oder andere Services wie den Integration Services zu geben. Ich habe Kryptographieanbieter, das heißt also, die Möglichkeit -- ist jetzt im Moment hier nichts implementiert -- zu sagen, ich möchte also jetzt auch Schlüsselverwaltungsmodule und solche Geschichten registrieren. Ich kann eine Überwachung einrichten auf Instanzebene, das heißt also, Ereignisse mitloggen und somit habe ich schon mal die SQL Server-Instanz an sich und hierarchisch also hier zugeordnet den Knoten Sicherheit für diese Punkte. Ebenfalls im Scope einer einzelnen Datenbank -- ich lege mal eine neue an, damit man das sehr schön sieht -- werden wir gleich sehen, das dann innerhalb des Knotens einer Datenbank ebenfalls noch mal hier der Knoten Sicherheit existiert, sodass man also schon schön erkennt, wie man also dieses hierarchisch abgestufte System hat, hier dann die Benutzer letztendlich sich befinden, die Zugriff auf eine Datenbank bekommen oder sich auch an einer Datenbank anmelden, wenn ich das also nicht auf Instanzebene möchte, also diese Unabhängigkeit gewahrt werden soll, das ist zum Beispiel auch interessant für Failover-Szenarien oder SQL Azure. Ich habe meine Serverrollen, das heißt, Rollen sind Berechtigungsgruppen also ein vordefiniertes Set an Berechtigungen, wo ich dann Benutzer zuweisen kann, die dann innerhalb der Datenbank zum Beispiel lesen können auf alle Tabellen. Ich habe die Schemas, also ein übergeordneter Container, der also noch mal über den Objekten wie zum Beispiel Tabellen steht, sodass man also auch auf der Ebene Berechtigungen vergeben kann. Schlüssel, Zertifikate, Always Encrypted, also die Möglichkeit, durchgängige Verschlüsselungen zu organisieren bis zum Client, wobei der Schlüssel dann beim Kunden verbleibt, und natürlich auch auf der Datenbankebene die Möglichkeit, das Thema, eine Überwachung durchzuführen, wobei man hier sagen muss, dass das ein klares Feature der SQL Server Enterprise Edition ist, also sprich die Standard ermöglicht dann das Überwachen und das Audit auf der Instanzebene, in der Enterprise ist es dann noch mal runter bis auf die einzelne Datenbank möglich. Ja, zusammenfassend zum Thema Sicherheit kann man hier sehr schön sagen, dass das Ganze also ein Konzept ist, was sowohl auf Instanzebene als auch auf Datenbankebene absichert. Das Ganze hierarchisch strukturiert über die Datenbank, das Schema bis runter zu den einzelnen Objekten wie Tabellen und im Einzelnen, dann in den einzelnen Filmen dann im Detail natürlich gezeigt wird, wie man dann die jeweiligen Dinge zur Sicherheit halt im SQL Server verwaltet.

Inhalt