Rotieren einer kundenseitig verwalteten Schlüsseltabelle in SQL Managed Instance mit Azure Arc-Unterstützung
In diesem Artikel wird beschrieben, wie die kundenseitig verwaltete Schlüsseltabelle für eine von Azure Arc aktivierte SQL Managed Instance rotiert wird. Diese Schlüsseltabellen werden verwendet, um Active Directory-Anmeldungen für die verwaltete Instanz zu aktivieren.
Voraussetzungen:
Bevor Sie mit diesem Artikel fortfahren, müssen Sie über einen aktiven Verzeichnisconnector im Modus kundenseitig verwaltete Schlüsseltabelle und über eine von Azure Arc aktivierte SQL Managed Instance verfügen.
- Bereitstellen eines aktiven Verzeichnisconnector für eine kundenseitig verwaltete Schlüsseltabelle
- Bereitstellen und Verbinden einer von Azure Arc aktivierten SQL Managed Instance
So rotieren Sie kundenseitig verwaltete Schlüsseltabellen in einer verwalteten Instanz
Die folgenden Schritte müssen befolgt werden, um die Schlüsseltabelle zu rotieren:
- Rufen Sie den
kvno
-Wert für die aktuelle Generation von Anmeldeinformationen für das SQL MI Active Directory-Konto ab. - Erstellen Sie eine neue Schlüsseltabellendatei mit Einträgen für die aktuelle Generation von Anmeldeinformationen. Insbesondere sollte der
kvno
-Wert aus Schritt (1.) oben übereinstimmen. - Aktualisieren Sie die neue Schlüsseltabellendatei mit neuen Einträgen für die neuen Anmeldeinformationen für das SQL MI Active Directory-Konto.
- Erstellen Sie ein Kubernetes-Geheimnis, das die neuen Schlüsseltabelleninhalte im selben Namespace wie die SQL MI enthält.
- Bearbeiten Sie die SQL MI-Spezifikation, um die Einstellung für das Active Directory-Schlüsseltabellengeheimnis auf dieses neue Geheimnis zu verweisen.
- Ändern Sie das Kennwort in der Active Directory-Domäne.
Wir haben die folgenden PowerShell- und Bash-Skripts bereitgestellt, welche die Schritte 1 bis 5 für Sie erledigen:
rotate-sqlmi-keytab.sh
– Dieses Bash-Skript verwendetktutil
oderadutil
(wenn das--use-adutil
-Flag angegeben ist), um die neue Schlüsseltabelle für Sie zu generieren.rotate-sqlmi-keytab.ps1
– Dieses PowerShell-Skript verwendetktpass.exe
, um die neue Schlüsseltabelle für Sie zu generieren.
Das Ausführen des obigen Skripts würde zur folgenden Schlüsseltabellendatei für den Benutzer arcsqlmi@CONTOSO.COM
, das Geheimnis sqlmi-keytab-secret-kvno-2-3
und den Namespace test
führen:
KVNO Timestamp Principal
---- ------------------- ------------------------------------------------------
2 02/16/2023 17:12:05 arcsqlmiuser@CONTOSO.COM (aes256-cts-hmac-sha1-96)
2 02/16/2023 17:12:05 arcsqlmiuser@CONTOSO.COM (arcfour-hmac)
2 02/16/2023 17:12:05 MSSQLSvc/arcsqlmi.contoso.com@CONTOSO.COM (aes256-cts-hmac-sha1-96)
2 02/16/2023 17:12:05 MSSQLSvc/arcsqlmi.contoso.com@CONTOSO.COM (arcfour-hmac)
2 02/16/2023 17:12:05 MSSQLSvc/arcsqlmi.contoso.com:31433@CONTOSO.COM (aes256-cts-hmac-sha1-96)
2 02/16/2023 17:12:05 MSSQLSvc/arcsqlmi.contoso.com:31433@CONTOSO.COM (arcfour-hmac)
3 02/16/2023 17:13:41 arcsqlmiuser@CONTOSO.COM (aes256-cts-hmac-sha1-96)
3 02/16/2023 17:13:41 arcsqlmiuser@CONTOSO.COM (arcfour-hmac)
3 02/16/2023 17:13:41 MSSQLSvc/arcsqlmi.contoso.com@CONTOSO.COM (aes256-cts-hmac-sha1-96)
3 02/16/2023 17:13:41 MSSQLSvc/arcsqlmi.contoso.com@CONTOSO.COM (arcfour-hmac)
3 02/16/2023 17:13:41 MSSQLSvc/arcsqlmi.contoso.com:31433@CONTOSO.COM (aes256-cts-hmac-sha1-96)
3 02/16/2023 17:13:41 MSSQLSvc/arcsqlmi.contoso.com:31433@CONTOSO.COM (arcfour-hmac)
Und die folgende updated-secret.yaml-Spezifikation:
apiVersion: v1
kind: Secret
type: Opaque
metadata:
name: sqlmi-keytab-secret-kvno-2-3
namespace: test
data:
keytab:
<keytab-contents>
Ändern Sie schließlich das Kennwort für das arcsqlmi
Benutzerkonto im Domänencontroller für die Active Directory-Domäne contoso.com
:
Öffnen Sie Server-Manager auf dem Domänencontroller für die Active Directory-Domäne
contoso.com
. Sie können entweder nach Server-Manager suchen oder die Option über das Startmenü öffnen.Wechseln Sie zu Tools>Active Directory-Benutzer und -Computer
Wählen Sie den Benutzer aus, für den Sie das Kennwort ändern möchten. Klicken Sie mit der rechten Maustaste, um den Benutzer auszuwählen. Wählen Sie Kennwort zurücksetzen aus:
Geben Sie ein neues Kennwort ein, und wählen Sie
OK
.
Problembehandlung bei Fehlern nach der Rotation
Falls Fehler beim Versuch auftreten, die Active Directory-Authentifizierung nach Abschluss der Schlüsseltabellenrotation zu verwenden, sind die folgenden Dateien im arc-sqlmi
-Container im SQL MI-Pod ein guter Ausgangspunkt, um die Untersuchung der Grundursache zu beginnen:
security.log
-Datei gefunden unter/var/opt/mssql/log
– Diese Protokolldatei enthält Interaktionen von SQL mit der Active Directory-Domäne.errorlog
-Datei gefunden unter/var/opt/mssql/log
– Diese Protokolldatei enthält Protokolle von SQL Server, das auf dem Container ausgeführt wird.mssql.keytab
-Datei gefunden unter/var/run/secrets/managed/keytabs/mssql
– Überprüfen Sie, ob diese Schlüsseltabellendatei die neu aktualisierten Einträge enthält und mit der Schlüsseltabellendatei übereinstimmt, die mit den oben angegebenen Skripten erstellt wurde. Die Schlüsseltabellendatei kann mit demklist
-Befehl gelesen werden, d. h.klist -k mssql.keytab -e
Überprüfen Sie außerdem nach dem Abrufen des Kerberos Ticket-Granting Ticket (TGT) mithilfe des kinit
-Befehls, ob der kvno
des SQL-Benutzers mit der höchsten kvno
In der mssql.keytab
-Datei im arc-sqlmi
-Container übereinstimmt. Beispiel für den arcsqlmi@CONTOSO.COM
-Benutzer:
- Rufen Sie das Kerberos-TGT aus der Active Directory-Domäne ab, indem Sie
kinit arcsqlmi@CONTOSO.COM
ausführen. Dadurch wird ein Benutzer zur Eingabe des Kennworts für denarcsqlmi
-Benutzer aufgefordert. - Sobald dies erfolgreich ist, kann die
kvno
durch Ausführen vonkvno arcsqlmi@CONTOSO.COM
abgefragt werden.
Wir können auch die Debuggenprotokollierung für den kinit
-Befehl aktivieren, indem wir Folgendes ausführen: KRB5_TRACE=/dev/stdout kinit -V arcsqlmi@CONTOSO.COM
. Dies erhöht die Ausführlichkeit und gibt die Protokolle beim Ausführen des Befehls an stdout aus.