Anmerkung
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Gilt für:SQL Server unter Linux
Abhängig von den bewährten Sicherheitsmethoden in Ihrer Organisation müssen Sie möglicherweise regelmäßig das Kennwort für das Windows Active Directory-Konto rotieren, das als network.privilegedadaccount in mssql.conf angegeben ist, bzw. für ein anderes Konto, das Besitzer der Dienstprinzipalnamen für den SQL Server-Dienst ist. In diesem Artikel ist die unterstützte Methode zum Ändern des Kennworts für das Konto dokumentiert. Die Kennwortänderung wird wirksam, ohne dass der SQL Server-Dienst unter Linux neu gestartet werden muss.
Die Schlüsseltabelle wird mithilfe des Tools adutil aktualisiert. Der adutil-Befehl muss auf einem Computer ausgeführt werden, der in die Domäne eingebunden ist. Weitere Informationen zu adutil sowie dazu, wie Sie das Tool herunterladen, finden Sie unter Einführung in adutil – Active Directory-Hilfsprogramm.
Vor der Aktualisierung in Active Directory muss das neue Kennwort in der Schlüsseltabelle mit der nächsten kvno-Nummer aktualisiert werden. Durch die Verwendung der nächsten kvno-Nummer wird verhindert, dass der SQL Server-Dienst nach der Kennwortänderung neu gestartet werden muss. Wenn Sie das Kennwort zuerst in Active Directory aktualisieren und dann die Schlüsseltabelle ändern, muss der SQL Server-Dienst für eine ordnungsgemäße Funktionsweise der Active Directory-Authentifizierung neu gestartet werden.
Szenario für die Rotation der Schlüsseltabelle
Wir sehen uns hierzu ein Beispiel an. Die Active Directory-Authentifizierung ist unter Linux bereits für SQL Server aktiviert. In der Datei mssql.conf müssen Sie network.privilegedadaccount auf sqluser festlegen. Das Konto sqluser@CONTOSO.COM wurde in Active Directory bereits erstellt, und die Schlüsseltabelle wurde ebenfalls am Standardspeicherort /var/opt/mssql/secrets/mssql.keytab erstellt. Nun soll das Kennwort für sqluser@CONTOSO.COM geändert werden. Führen Sie dazu folgende Schritte aus:
Installieren Sie adutil auf dem in der Domäne eingebundenen Computer.
Erwerben oder erneuern Sie das Kerberos-TGT (Ticket-Granting Ticket) mithilfe des
kinit-Befehls. Verwenden Sie ein privilegiertes Konto für denkinit-Befehl. Das Konto muss über die Berechtigung zum Herstellen einer Verbindung mit der Domäne verfügen. Außerdem sollte es in der Lage sein, Konten und Dienstprinzipalnamen in der Domäne zu erstellen. In diesem Fall verwenden Sie das Kontoprivilegeduser@CONTOSO.COM, das über die Berechtigung zum Erstellen von Konten und Dienstprinzipalnamen in der DomäneCONTOSO.COMverfügt.kinit privilegeduser@CONTOSO.COMNachdem Sie
kinitzum Abrufen bzw. Erneuern des TGT ausgeführt haben, fragen Sie die aktuelle kvno-Nummer vonnetwork.privilegedadaccountab. In diesem Fall ist diessqluser@CONTOSO.COM.kvno sqluser@CONTOSO.COM
Sie können die Schlüsseltabelle mithilfe von mssql-conf drehen oder mithilfe von adutil die Schlüsseltabelle manuell drehen.
Drehen der Schlüsseltabellen mit mssql-conf
Sie können adutil installieren und in mssql-conf integrieren. Dies bedeutet, dass Sie die Schlüsseltabelle mithilfe von mssql-conf drehen können.
Melden Sie sich als Stammbenutzer (Root) an, und wechseln Sie zum Benutzer
mssql.su mssqlErwerben oder erneuern Sie das Kerberos-TGT (Ticket-Granting Ticket) mithilfe des
kinit-Befehls. Verwenden Sie ein privilegiertes Konto für denkinit-Befehl. Das Konto muss über die Berechtigung zum Herstellen einer Verbindung mit der Domäne verfügen. Außerdem sollte es in der Lage sein, Konten und Dienstprinzipalnamen in der Domäne zu erstellen. In diesem Fall verwenden Sie das Kontoprivilegeduser@CONTOSO.COM, das über die Berechtigung zum Erstellen von Konten und Dienstprinzipalnamen in der DomäneCONTOSO.COMverfügt.kinit privilegeduser@CONTOSO.COMFühren Sie den Befehl mssql-conf aus, und geben Sie die SQL Server-Schlüsseltabelle und die Details zu
network.privilegedadaccountan. Derprivilegedadaccountist in diesem Beispielsqluser../mssql-conf setup-ad-keytab /var/opt/mssql/secrets/mssql.keytab sqluser --use-next-kvno'Wenn Sie zur Eingabe eines Kennworts aufgefordert werden, geben Sie ein neues Kennwort ein, das Sie verwenden möchten. Die Option
--use-next-kvnoordnet die aktuelle kvno + 1 zu.Optional: Sie können auch die Option
--kvnomit dem Befehlmssql-conf setup-ad-keytabverwenden, um eine bestimmte kvno bereitzustellen. Sie müssen sicherstellen, dass Sie zuerst die aktuelle kvno für den Benutzer abrufen, und dann die neue kvno entsprechend aktualisieren, die die aktuelle kvno +1 wäre.Sie können die Schlüssel der Schlüsseltabelle mit dem folgenden Befehl auflisten:
klist -kte /var/opt/mssql/secrets/mssql.keytabSie werden feststellen, dass die Schlüsseltabelle mit der nächsten kvno sowohl für die Benutzer- als auch für die SPN-Einträge aktualisiert wird.
Nun können Sie das Kennwort für den Benutzer
sqluserändern. Hier finden Sie ein Beispiel.Wichtig
Wenn Sie während dieses Schritts aufgefordert werden, SQL Server neu zu starten, können Sie dies ignorieren. Denken Sie daran, das Kennwort auch in Active Directory zu ändern.
bash-4.4$ kinit privilegedaccount@CONTOSO.COM Password for privilegedaccount@CONTOSO.COM: bash-4.4$ ./mssql-conf setup-ad-keytab /var/opt/mssql/secrets/mssql.keytab sqluser --use-next-kvno sqluser@contoso.com's password: Confirm sqluser@contoso.com's password: SQL Server needs to be restarted in order to adopt the new AD configuration. To restart, run `systemctl restart mssql-server.service`. bash-4.4$ klist -kte /var/opt/mssql/secrets/mssql.keytab Keytab name: FILE:/var/opt/mssql/secrets/mssql.keytab KVNO Timestamp Principal ---- ------------------- ------------------------------------------------------ 4 12/30/2021 14:02:08 sqluser@CONTOSO.COM (aes256-cts-hmac-sha1-96) 4 12/30/2021 14:02:08 MSSQLSvc/sql1.contoso.com:1433@CONTOSO.COM (aes256-cts-hmac-sha1-96) 4 12/30/2021 14:02:08 MSSQLSvc/sql1.contoso.com@CONTOSO.COM (aes256-cts-hmac-sha1-96) 4 12/30/2021 14:02:08 MSSQLSvc/sql1:1433@CONTOSO.COM (aes256-cts-hmac-sha1-96) 4 12/30/2021 14:02:08 MSSQLSvc/sql1@CONTOSO.COM (aes256-cts-hmac-sha1-96) 5 12/30/2021 20:06:34 sqluser@CONTOSO.COM (aes256-cts-hmac-sha1-96) 5 12/30/2021 20:06:34 MSSQLSvc/sql1.contoso.com:1433@CONTOSO.COM (aes256-cts-hmac-sha1-96) 5 12/30/2021 20:06:34 MSSQLSvc/sql1.contoso.com@CONTOSO.COM (aes256-cts-hmac-sha1-96) 5 12/30/2021 20:06:34 MSSQLSvc/sql1:1433@CONTOSO.COM (aes256-cts-hmac-sha1-96) 5 12/30/2021 20:06:34 MSSQLSvc/sql1@CONTOSO.COM (aes256-cts-hmac-sha1-96)
Manuelles Drehen der Schlüsseltabelle mit adutil
Wenn Sie die Schlüsseltabelle manuell mithilfe von adutil aktualisieren möchten, halten Sie sich an die folgenden Schritte.
Beim Aktualisieren der Schlüsseltabelle mithilfe von adutil wird ein Eintrag in die aktuelle Schlüsseltabelle eingefügt. Wenn die mit dem vorherigen Befehl abgerufene kvno-Nummer 2 lautet, verwenden Sie beim Aktualisieren der Schlüsseltabelle die kvno-Nummer 3. Nachfolgend sind die adutil-Befehle aufgeführt, die Sie ausführen müssen.
- Ändern Sie die Portnummer (
-p), den Hostnamen (-H), den Pfad zur Schlüsseltabelle (-k) und die kvno-Nummer in die Werte Ihrer Umgebung.
adutil keytab createauto -k /var/opt/mssql/secrets/mssql.keytab -p 1433 -H mssql.contoso.com --password '<newpassword>' -s MSSQLSvc --kvno 3
adutil keytab create -k /var/opt/mssql/secrets/mssql.keytab -p sqluser --password '<newpassword>' --kvno 3
| Parameter | Description |
|---|---|
-k |
Der Pfad zur aktuellen Schlüsseltabelle, die von SQL Server verwendet wird und mithilfe der Option network.kerberoskeytabfile in der mssql.conf Datei festgelegt wird. |
-H |
Der vollqualifizierte Domänenname des SQL Server-Hosts. |
-p |
Auf welchen Port der SQL Server-Dienst im ersten Befehl konfiguriert ist zu lauschen. Im zweiten Befehl steht -p für das network.privilegedadaccount, dessen Kennwort aktualisiert wird. |
kvno |
Der Wert muss der aktuelle kvno + 1 sein. Der aktuelle kvno-Wert wird in Schritt 3 abgerufen. |
Nachdem Sie die oben aufgeführten Befehle ausgeführt haben, müssen Sie den Verschlüsselungstyp für die Einträge in der Schlüsseltabelle angeben. Stellen Sie sicher, dass Sie den richtigen Verschlüsselungstyp für Ihre Umgebung auswählen.
Überprüfen der Einträge in der Schlüsseltabelle
Nachdem Sie die Schlüsseltabelle aktualisiert haben, sollten die Einträge in der Schlüsseltabelle für kvno 3 (neu) und kvno 2 (alt) für das Konto sqluser@CONTOSO.COM und die Dienstprinzipalnamen angezeigt werden. Sie können den folgenden Befehl klist ausführen, um die Einträge in der Schlüsseltabelle zu überprüfen:
klist -kte /var/opt/mssql/secrets/mssql.keytab
Ändern des Kontokennworts in Active Directory
Im letzten Schritt wird das Kennwort des Kontos network.privilegedadaccount bzw. des Kontos aktualisiert, das Besitzer der SQL Server-Dienstprinzipalnamen in Windows Active Directory ist. Im obigen Szenario muss das Kennwort für sqluser@CONTOSO.COM in Active Directory aktualisiert werden. Ändern Sie das Kennwort in den <newpassword>-Wert, den Sie in Schritt 3 im vorherigen Abschnitt angegeben haben. Die Active Directory-Authentifizierung sollte weiterhin funktionieren, ohne dass der SQL Server-Dienst neu gestartet werden muss.
Zugehöriger Inhalt
- Tutorial: Verwenden von adutil zum Konfigurieren der Active Directory-Authentifizierung mit SQL Server für Linux
- Tutorial: Konfigurieren der Active Directory-Authentifizierung mit SQL Server für Linux-Container
- Grundlegendes zur Active Directory-Authentifizierung für SQL Server für Linux und Container
- Problembehandlung für Active Directory-Authentifizierung für SQL Server für Linux und Container