Home
Datenquellen
Controllflow
DataFlow
SSIS
ToC
Impressum

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.

  1. 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. Paketschutzebene
    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.
    Sensible Daten mit einem Benutzerschlüssel verschlüsseln
    Ä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.

  2. 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.
     
    1. In SQL Server Management Studio wird eine Verbindung zu dem Integration Services Dienst hergestellt.

       

    2. MSDB auswählenDer Punkt Gespeicherte Pakete - MSDB wird geöffnet.










    3. Paket importierenÜber die rechte Maustaste wird der Punkt Paket importieren ausgewählt.







    4. Das Paket wird im Dateisystem ausgewählt. Paket Name
      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.Paket importieren
    5. 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.
      Serverspeicher und Rollen für die Zugriffsteuerung verwenden
    6. 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.Paketpasswort eingeben

 

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.

Paket testen

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