|
Sicherheitseinstellungen in SSIS Paketen
Passwörter, die von Verbindungsmanger verwendet werden, gelten innerhalb von
SSIS Paketen als besonders schützenswert. Dieser Schutz bedeutet, dass
Passwörter nie im Klartext innerhalb eines SSIS Paketes gespeichert werden.
Im weiteren werden diese Daten als sensitive bezeichnet. Damit wird eine wichtige Sicherheitsregel eingehalten.
Auf diese Informationen kann selbst per Scriptkode nicht im Klartext zugegriffen
werden.
Verwenden Sie ausschließlich Integrierte Sicherheit in
den Verbindungsmanagern, dann
haben Sie nie mit eventuellen Schwierigkeiten bezüglich der
Sicherheitseinstellungen zu kämpfen. Die Sicherheit leidet
unter diesem Umstand nie.
Allerdings gibt es auch Dinge, die beachtet werden
müssen, wenn das SSIS Paket zum Beispiel mit dem SQL Server Agent der Nacht ausgeführt wird. Jedesmal, wenn ein SSIS Paket ausgeführt wird, läuft es unter dem
Sicherheitskontext des Benutzers, der es ausführt. Dieser Sicherheitskontext
gestattet oder verbietet den Zugriff auf Tabellen in Datenbanken
oder auch die Zugriffe auf das Dateisystem.
Starten Sie das Paket, so werden Ihre Sicherheitseinstellungen verwendet. Führt
zum Beispiel der SQL Server Agent das Paket aus, so werden die
Sicherheitsrichtlinien verwendet, die für den SQL Server Agent Service oder die
Proxyeinstellungen vergeben wurden.
In
vielen Installationen werden SSIS Pakete von einem Ausführungssystem, wie zum
Beispiel dem SQL Server Agenten ausgeführt. Hat dieses System nicht die
notwendigen Berechtigungen, so kann das Paket nicht ausgeführt werden. Ein Blick
in die entsprechenden Newsgroup zeigt, dass es hier immer wieder Probleme gibt.
Hier
finden Sie einen entsprechenden KB Artikel: Wenn Sie das SSIS-Paket aus einem Auftragsschritt
des SQL Server-Agenten aufrufen, wird ein SSIS-Paket nicht ausgeführt
Erst einmal des grundsätzliche
Damit Sie vor diesen Problemen verschont bleiben sollten Sie sich möglichst
frühzeitig einige Gedanken machen.
Standardmäßig stehen Ihnen für die Speicherung von sensitiven Daten folgende
Optionen zur Verfügung. Diese Einstellung legen Sie in den Eigenschaften
(Properties) unter dem Punkt Sicherheit für das jeweilige Paket fest:
DonSaveSensitive
|
Es werden
keine sensitiven Daten, sprich Passwörter im Paket gespeichert.
Beim Ausführen müssen diese Informationen immer von außen zugeführt
werden.
|
EncryptSensitiveWithUserKey
|
Passwörter werden im SSIS Paket gespeichert. Allerdings sind diese
Passwörter mit Ihren Userkey, vereinfacht mit Informationen aus
Ihrer Anmeldung an Windows, verschlüsselt. Andere Nutzer können diese Informationen nicht entschlüsseln. Werden die Passwörter nicht
von außen zugeführt, kann der Verbindungsmanager die Verbindung nicht
öffnen wenn das Paket unter einem anderen Sicherheitskontex ausgeführt wird.
Dies ist
die Standardeinstellung wenn nichts geändert wird.
|
EncryptSensitiveWithPassword
|
Passwörter werden im SSIS Paket gespeichert. Die Passwörter der
Verbindungsmanager werden mit einem Paketpasswort verschlüsselt. Ohne Eingabe
dieses Paketpasswortes können die Passwörter für die Verbindungsmanager nicht
entschlüsselt werden.
|
EncryptAllWithPasswort
|
Der
gesamte Inhalt, einschließlich der Passwörter in den
Verbindungsmanagern, werden mit dem Packetpasswort verschlüsselt.
Ohne Angabe des Paketpasswortes kann das Paket nicht geöffnet oder
ausgeführt werden.
|
EncryptAllWithUserKey
|
Der
gesamte Inhalt, einschließlich der Passwörter in den
Verbindungsmanagern, werden mit dem Ihren Userkey, der
Windowsanmeldung, verschlüsselt. Ein anderer Benutzer kann das Paket
nicht öffnen oder ausführen.
Diese Option sollte mit großer
Vorsicht eingesetzt werden. Wird das entsprechende Benutzerkonto zurückgesetzt, weil Sie zum Beispiel Ihr
Passwort vergessen haben, so können Sie das Paket nicht mehr
öffnen.
|
ServerStorage
|
Das Paket
wird in der MSDB auf einem SQL Server 2005 gespeichert und alle
sensitiven Daten bleiben erhalten.
Allerdings können Sie während der Entwicklung kein Paket auf dem SQL
Server ablegen, sondern erst im Betrieb. Wenn diese Option
ausgewählt wird, bekommen Sie eine Fehlermeldung.
Bei der Verwendung
des SQL Server Business Developer Studios für die Entwicklung von
SSIS macht diese Einstellung an dieser Stelle keinen Sinn.
|
Hier ist eine Verbindung zu diesem Thema in der Onlinehilfe des SQL Server 2005.
Wenn Sie explizite Passwörter verwenden müssen
Bei den folgenden Betrachtungen gehe ich davon aus, dass Sie die Passwörter
wirklich als sensitive Informationen betrachten. Ist es bei Ihnen nicht der
Fall, können Sie sich selbst überlegen, wo Sie die Passwörter in Klartext
ablegen. Dafür bestehen mehrere Optionen.
Aber Sicherheit bekommen wir nicht umsonst Bei der Beachtung einiger Dinge ist der
Aufwand nicht sehr hoch.
Am
geringsten ist der Aufwand, wenn Sie gleich zu Beginn der Entwicklung eines
Pakets die entsprechenden Einstellungen machen. Ich beschreibe hier einen Weg,
der aus meiner Sicht der einfachste ist. Selbstverständlich können Sie
auch andere Wege gehen.
-
Bevor Sie den ersten Verbindungsmanager einrichten stellen Sie die Eigenschaft
ProtectionLevel des Pakets auf die Einstellung EncryptSensitivesWithPassword.
Direkt über dieser Einstellung, bei dem Punkt PackagePassword
geben Sie ein entsprechendes Passwort ein.

Für dieses Passwort gibt es keine
Regeln. Alles außer kein Passwort ist zulässig. Wird das Paket innerhalb
eines Teams entwickelt, ist es in der Regel sinnvoll, wenn jedes
Teammitglied das gleiche Passwort verwendet. Dies ist aber keine zwingende
Vorgabe.

Ändern Sie die Sicherheitseinstellung des Pakets nachdem bereits Verbindungsmanager mit Passwörter
eingerichtet wurden, werden die gespeicherten Passwörter gelöscht und müssen
neu eingegeben werden.
Bitte setzten Sie unbedingt die Option Passwort
speichern im Verbindungsmanager sonst wird das Passwort nie im Paket gespeichert.
Soll das Paket zur Laufzeit konfiguriert werden, beachten Sie bitte, dass nicht der
Connectionstring des Verbindungsmanagers in die Konfiguration aufgenommen wird, sondern nur alle
Bestandteile die den Connectionstring bilden, aber nicht das Passwort.
Übersehen Sie diesen Punkt wird Ihr Paket nicht auf die Verbindungsmanager
die ein Passwort erfordern zugreifen können.
-
Nachdem das Paket fertig
entwickelt und getestet wurde wird das Paket in der MSDB auf einem SQL
Server 2005 gespeichert. Es muss zwingend ein SQL Server 2005 sein, der SQL
Server 2000 wird für diese Aufgabe nicht unterstützt.
Speichern Sie das Paket im Dateisystem oder im SSIS
Paketspeicher, funktioniert das hier beschriebene Verfahren nicht mehr.
-
In SQL Server Management Studio wird eine Verbindung zu
dem Integration Services Dienst hergestellt.
-
Der Punkt
Gespeicherte Pakete - MSDB wird geöffnet.
-
Über die rechte
Maustaste wird der Punkt Paket importieren ausgewählt.
-
Das Paket wird im
Dateisystem ausgewählt.

Wird in das Feld Eingabe Paketname geklickt, wird automatisch
der aktuelle Paketname übernommen. In der Regel wird der gleiche Name
verwendet, wie das Paket in der Entwicklungsumgebung heißt, wenn es
erforderlich ist, kann dieser Name geändert werden.
-
Bitte klicken Sie auf
den Knopf bei der Schutzebene. Im erscheinenden Dialog wählen Sie
Serverspeicher und Rollen für die Zugriffssteuerung verwenden aus. Der
Dialog wird mit OK beendet.

-
Wenn der übergeordnete Dialog
mit OK beendet wird, erscheint ein neues Dialogfenster. Hier geben Sie
das Paketpasswort ein. Danach wird das Paket in die MSDB kopiert. Alle
sensitiven Informationen bleiben im Paket erhalten und können verwendet
werden.

Die eigentlichen Verbindungspasswörter tauchen nicht mehr an der Oberfläche auf
und können auch nicht von außen gelesen werden.
Zum testen führen Sie am besten das Paket einmal direkt aus dem SQL Server
Management Studio aus. Das sollte jetzt funktionieren.

Wenn Sie einen expliziten Benutzer anlegen und diesen Benutzer für die Adventure
Works Datenbank berechtigen, können Sie das beschriebene Verfahren mit dem
Demopaket ausprobieren.
Den Verbindungsmanager im Beispielpaket müssen Sie auf jeden Fall
anpassen. Beim öffnen bekommen Sie eine Fehlermeldung, da Sie mein Paketpasswort
nicht kennen. Trotzdem kann das Paket geöffnet werden.
Hier finden Sie ein Beispielpaket.
Bitte achten Sie darauf, dass der Verbindungsmanger an Ihre Umgebung angepasst
werden muss.
Komponentenindex:
- OOLEDB Verbindungasmanager
- SQL Ausführentask
- Scipt Transformation
letzte Änderung 3.12.2006
|