Identifizieren der Quelle von Paketen mit digitalen Signaturen

Gilt für:SQL Server SSIS Integration Runtime in Azure Data Factory

Ein Integration Services -Paket kann mit einem digitalen Zertifikat signiert werden, um seine Quelle zu identifizieren. Nachdem das Paket mit einem digitalen Zertifikat signiert wurde, können Sie die digitale Signatur vor dem Laden des Pakets mit Integration Services überprüfen. Damit Integration Services die Signatur prüft, legen Sie eine Option entweder in SQL Server Data Tools (SSDT) oder im dtexec -Hilfsprogramm (dtexec.exe) fest, oder geben Sie einen optionalen Registrierungswert an.

Signieren eines Pakets mit einem digitalen Zertifikat

Bevor Sie ein Paket mit einem digitalen Zertifikat signieren können, müssen Sie zunächst ein Zertifikat abrufen oder erstellen. Sobald Sie das Zertifikat vorliegen haben, können Sie es zum Signieren des Pakets verwenden. Weitere Informationen zum Abrufen eines Zertifikats und zum Signieren eines Pakets mit diesem Zertifikat finden Sie unter Signieren eines Pakets mit einem digitalen Zertifikat.

Festlegen einer Option zum Überprüfen der Paketsignatur

Sowohl SQL Server Data Tools (SSDT) als auch das dtexec -Hilfsprogramm bieten eine Option, mit der Integration Services für die Überprüfung der digitalen Signatur eines signierten Pakets konfiguriert wird. Ob Sie SQL Server Data Tools (SSDT) oder das dtexec -Hilfsprogramm verwenden, hängt davon ab, ob Sie alle Pakete oder nur bestimmte Pakete überprüfen möchten:

  • Wählen Sie die Option Digitale Signatur beim Laden eines Pakets überprüfen in SQL Server Data Tools (SSDT)aus, um die digitale Signatur aller Pakete vor dem Laden der Pakete zum Entwurfszeitpunkt zu überprüfen. Diese Option ist eine globale Einstellung für alle Pakete in SQL Server Data Tools (SSDT).

  • Zum Überprüfen der digitalen Signatur eines einzelnen Pakets legen Sie die Option /VerifyS[igned] fest, wenn Sie das Paket mit dem dtexec -Hilfsprogramm ausführen. Weitere Informationen finden Sie hier.

Festlegen eines Registrierungswerts zum Überprüfen der Paketsignatur

Integration Services unterstützt außerdem den optionalen Registrierungswert BlockedSignatureStates, mit dem Sie die Richtlinie einer Organisation zum Laden von signierten und nicht signierten Paketen verwalten können. Der Registrierungswert kann das Laden von Paketen verhindern, wenn die Pakete nicht signiert sind, oder ungültige oder nicht vertrauenswürdige Signaturen enthalten. Weitere Informationen zum Festlegen des Registrierungswerts finden Sie unter Implementieren einer Signaturrichtlinie durch Festlegen eines Registrierungswerts.

Hinweis

Der optionale Registrierungswert BlockedSignatureStates kann eine Einstellung angeben, die restriktiver ist als die Option für die digitale Signatur, die in SQL Server Data Tools (SSDT) oder in der dtexec-Befehlszeile festgelegt wurde. In dieser Situation überschreibt die restriktivere Registrierungseinstellung die andere Einstellung.

Implementieren einer Signaturrichtlinie durch Festlegen eines Registrierungswerts

Sie können einen optionalen Registrierungswert zum Verwalten einer Organisationsrichtlinie verwenden, um signierte und nicht signierte Pakete zu laden. Wenn Sie diesen Registrierungswert verwenden, müssen Sie ihn auf jedem Computer erstellen, auf dem Integration Services -Pakete ausgeführt werden und auf dem Sie die Richtlinie durchsetzen möchten. Nachdem der Registrierungswert festgelegt wurde, überprüft oder verifiziert Integration Services die Signaturen vor dem Laden der Pakete.

Die Prozedur in diesem Artikel beschreibt, wie Sie den optionalen DWORD-Wert BlockedSignatureStates dem Registrierungsschlüssel HKLM\SOFTWARE\Microsoft\Microsoft SQL Server\150\SSIS\Setup\DTSPath hinzufügen.

Hinweis

Ein Registrierungsspeicherort unter 150 steht für SQL Server 2019, unter 140 für SQL Server 2017, unter 130 für SQL Server 2016, unter 120 für SQL Server 2014 und unter 110 für SQL Server 2012.

Der Datenwert in BlockedSignatureStates bestimmt, ob ein Paket blockiert werden soll, wenn es eine nicht vertrauenswürdige Signatur, eine ungültige Signatur oder keine Signatur aufweist.

Für den Status der zum Signieren von Paketen verwendeten Signaturen werden für den Registrierungswert BlockedSignatureStates folgende Definitionen verwendet:

  • Eine gültige Signatur ist eine Signatur, die erfolgreich gelesen werden kann.

  • Eine ungültige Signatur ist eine Signatur, bei der die entschlüsselte Prüfsumme (der mit einem privaten Schlüssel verschlüsselte unidirektionale Hash des Paketcodes) nicht der entschlüsselten Prüfsumme entspricht, die während des Ladevorgangs von Integration Services -Paketen berechnet wird.

  • Eine vertrauenswürdige Signatur ist eine Signatur, die mithilfe eines von einer vertrauenswürdigen Stammzertifizierungsstelle signierten digitalen Zertifikats erstellt wird. Für diese Einstellung ist es nicht erforderlich, dass der Unterzeichner in der Liste vertrauenswürdiger Herausgeber des Benutzers vorhanden ist.

  • Eine nicht vertrauenswürdige Signatur ist eine Signatur, bei der nicht überprüft werden kann, ob sie von einer vertrauenswürdigen Stammzertifizierungsstelle ausgestellt wurde, oder eine Signatur, die nicht aktuell ist.

In der folgenden Tabelle werden die gültigen Werte der DWORD-Daten und ihre verbundenen Richtlinien aufgelistet.

Wert Beschreibung
0 Keine administrative Einschränkung.
1 Blockieren von ungültigen Signaturen.

Bei dieser Einstellung werden nicht signierte Pakete nicht blockiert.
2 Blockieren von ungültigen und nicht vertrauenswürdigen Signaturen.

Bei dieser Einstellung werden zwar nicht signierte Pakete nicht blockiert, selbst generierte Signaturen werden jedoch blockiert.
3 Blockieren von ungültigen und nicht vertrauenswürdigen Signaturen und nicht signierten Paketen.

Bei dieser Einstellung werden auch selbst generierte Signaturen blockiert.

Hinweis

Die empfohlene Einstellung für BlockedSignatureStates ist 3. Diese Einstellung bietet den besten Schutz vor nicht signierten Paketen oder Signaturen, die entweder ungültig oder nicht vertrauenswürdig sind. Die empfohlene Einstellung eignet sich jedoch möglicherweise nicht in allen Fällen. Weitere Informationen zum Signieren von Digital Assets finden Sie im Thema "Introduction to Code Signing" (in Englisch) in der MSDN Library.

So implementieren Sie eine Signaturrichtlinie für ein Paket

  1. Klicken Sie im Menü Start auf Ausführen.

  2. Geben Sie im Dialogfeld Regeditein, und klicken Sie dann auf OK.

  3. Suchen Sie den Schlüssel HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\100\SSIS.

  4. Klicken Sie mit der rechten Maustaste auf MSDTS, zeigen Sie auf Neu, und klicken Sie anschließend auf DWORD-Wert.

  5. Aktualisieren Sie den Namen des neuen Werts auf BlockedSignatureStates.

  6. Klicken Sie mit der rechten Maustaste auf BlockedSignatureStates , und klicken Sie anschließend auf Ändern.

  7. Geben Sie im Dialogfeld DWORD-Wert bearbeiten den Wert 0, 1, 2, oder 3 ein.

  8. Klicken Sie auf OK.

  9. Klicken Sie im Menü Datei auf Beenden.

Signieren eines Pakets mit einem digitalen Zertifikat

In diesem Thema wird beschrieben, wie ein Integration Services -Paket mit einem digitalen Zertifikat signiert wird. Mit einer digitalen Signatur in Verbindung mit anderen Einstellungen können Sie verhindern, dass ein ungültiges Paket geladen und ausgeführt wird.

Bevor Sie ein Integration Services -Paket signieren können, müssen Sie folgende Schritte ausführen:

  • Erstellen oder besorgen Sie sich einen privaten Schlüssel für die Zuordnung zum Zertifikat, und speichern Sie diesen Schlüssel auf dem lokalen Computer.

  • Besorgen Sie sich ein Zertifikat zum Zwecke der Codesignierung von einer vertrauenswürdigen Zertifizierungsstelle. Sie können eine der folgenden Methoden verwenden, um ein Zertifikat zu erhalten oder zu erstellen:

    • Rufen Sie ein Zertifikat von einer öffentlichen, kommerziellen Zertifizierungsstelle ab, die Zertifikate ausgibt.

    • Rufen Sie ein Zertifikat von einem Zertifikatserver ab, mit dem eine Organisation Zertifikate intern ausstellen kann. Sie müssen das Stammzertifikat, mit dem das Zertifikat signiert wird, zum Speicher für Vertrauenswürdige Stammzertifizierungsstellen hinzufügen. Zum Hinzufügen des Stammzertifikats verwenden Sie das Zertifikate-Snap-In für die Microsoft -Verwaltungskonsole (MMC). Weitere Informationen finden Sie im Thema "Certificate Services" (möglicherweise nur in englischer Sprache) in der MSDN Library.

    • Erstellen Sie ein eigenes Zertifikat nur für Testzwecke. Der PowerShell-Befehl „New-SelfSignedCertificate“ kann ein neues selbstsigniertes Zertifikat mit sicherem Hashalgorithmus zu Testzwecken erstellen. Zum Beispiel:

        $params = @{
            Type = 'CodeSigningCert'
            Provider = 'Microsoft Enhanced RSA and AES Cryptographic Provider'
            Subject = 'CN=PS code signing Certificate 2'
            TextExtension = @(
                '2.5.29.37={text}1.3.6.1.5.5.7.3.3',
                '2.5.29.17={text}upn=yourupn' )
            KeyExportPolicy = 'NonExportable'
            KeyUsage = 'DigitalSignature'
            KeyAlgorithm = 'RSA'
            KeyLength = 2048
            CertStoreLocation = 'Cert:\CurrentUser\My'
                     HashAlgorithm = 'sha512'
        }
        New-SelfSignedCertificate @params
    

    Wenn die Fehlermeldung „Paketsignierung fehlgeschlagen mit Fehler 0x80090008 „Ungültiger Algorithmus angegeben““ angezeigt wird, weist sie darauf hin, dass Ihr Zertifikathashalgorithmus nicht sicher ist. Ändern Sie Ihr Zertifikat in einen sichereren Hashalgorithmus wie SHA512 und verwenden Sie einen CSP (Kryptografiedienstanbieter). Da .NET Framework auf 4.7.2 für SQL Server 2022 aktualisiert wird und der standardmäßige SignedXML-Algorithmus in SHA256 geändert wird, da SHA1 nicht mehr als sicher betrachtet wird. Weitere Informationen finden Sie in diesem Artikel.

    Weitere Informationen über Zertifikate finden Sie in der Onlinehilfe für das Zertifikate-Snap-In. Weitere Informationen zum Signieren von Digital Assets finden Sie im Thema "Signing and Checking Code with Authenticode" (möglicherweise nur in englischer Sprache) in der MSDN Library.

  • Stellen Sie sicher, dass das Zertifikat für Codesignaturen aktiviert wurde. Überprüfen Sie die Eigenschaften des Zertifikats im Zertifikate-Snap-In, um festzustellen, ob ein Zertifikat zum Signieren von Code aktiviert ist.

  • Legen Sie das Zertifikat im Speicher Persönlich ab.

Nachdem Sie die vorherigen Schritte ausgeführt haben, können Sie das folgende Verfahren verwenden, um ein Paket zu signieren.

So signieren Sie ein Paket

  1. Öffnen Sie in SQL Server Data Tools (SSDT)das Integration Services -Projekt mit dem Paket, das Sie signieren möchten.

  2. Doppelklicken Sie im Projektmappen-Explorer auf das Paket, um es zu öffnen.

  3. Klicken Sie in SSIS -Designer im Menü SSIS auf Digitale Signatur.

  4. Klicken Sie im Dialogfeld Digitale Signatur auf Signieren.

  5. Wählen Sie im Dialogfeld Zertifikat auswählen ein Zertifikat aus.

  6. (Optional) Klicken Sie auf Zertifikat anzeigen, um Zertifikatinformationen anzuzeigen.

  7. Klicken Sie auf OK , um das Dialogfeld Zertifikat auswählen zu schließen.

  8. Klicken Sie auf OK , um das Dialogfeld Digitale Signatur zu schließen.

  9. Klicken Sie im Menü Datei auf Ausgewählte Elemente speichern , um das aktualisierte Paket zu speichern.

    Obwohl das Paket signiert wurde, müssen Sie Integration Services nun so konfigurieren, dass die digitale Signatur vor dem Laden des Pakets geprüft oder verifiziert wird.

Digitale Signatur (Dialogfeld, Referenz zur Benutzeroberfläche)

Mithilfe des Dialogfelds Digitale Signatur können Sie ein Paket mit einer digitalen Signatur signieren oder die Signatur löschen. Das Dialogfeld Digitale Signatur steht in unter der Option Digitale Signatur im Menü SSIS SQL Server Data Tools (SSDT)zur Verfügung.

Weitere Informationen finden Sie unter Signieren eines Pakets mit einem digitalen Zertifikat.

Tastatur

Signieren
Klicken Sie auf diese Option, um das Dialogfeld Zertifikat auswählen zu öffnen und das zu verwendende Zertifikat auszuwählen.

Remove
Klicken Sie hierauf, um die digitale Signatur zu entfernen.

Weitere Informationen

Integration Services-Pakete (SSIS)
Sicherheitsübersicht (Integration Services)