Rotación de SQL Managed Instance habilitado por keytab administrado por el cliente de Azure Arc
En este artículo se describe cómo rotar las fichas clave administradas por el cliente para SQL Managed Instance habilitada por Azure Arc. Estas fichas clave se usan para habilitar los inicios de sesión de Active Directory para la instancia administrada.
Requisitos previos:
Antes de continuar con este artículo, debe tener un conector de Active Directory en modo keytab administrado por el cliente y una instancia administrada de SQL habilitada por Azure Arc.
- Implementación de un conector de Active Directory administrado por el clientetab
- Implementación y conexión de una instancia administrada de SQL habilitada por Azure Arc
Rotación de las pestañas de claves administradas por el cliente en una instancia administrada
Es necesario seguir los siguientes pasos para rotar la tabla de claves:
- Obtenga el valor
kvno
para la generación actual de credenciales para la cuenta de Active Directory de SQL MI. - Cree un nuevo archivo keytab con entradas para la generación actual de credenciales. En concreto, el valor
kvno
debe coincidir con el paso (1.) anterior. - Actualice el nuevo archivo keytab con nuevas entradas para las nuevas credenciales de la cuenta de Active Directory de SQL MI.
- Cree un secreto de Kubernetes que contenga el nuevo contenido del archivo keytab en el mismo espacio de nombres que SQL MI.
- Edite la especificación de SQL MI para que apunte la configuración del secreto keytab de Active Directory a este nuevo secreto.
- Cambie la contraseña en el dominio de Active Directory.
Hemos proporcionado los siguientes scripts de PowerShell y Bash que se encargarán de los pasos 1 a 5 automáticamente:
rotate-sqlmi-keytab.sh
: este script de Bash usaktutil
oadutil
(si se especifica la marca--use-adutil
) para generar automáticamente la nueva tabla de claves.rotate-sqlmi-keytab.ps1
: este script de PowerShell usaktpass.exe
para generar automáticamente la nueva tabla de claves.
La ejecución del script anterior daría como resultado el siguiente archivo keytab para el usuario arcsqlmi@CONTOSO.COM
, el secreto sqlmi-keytab-secret-kvno-2-3
y el espacio de nombres test
:
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)
Y las siguientes especificaciones updated-secret.yaml:
apiVersion: v1
kind: Secret
type: Opaque
metadata:
name: sqlmi-keytab-secret-kvno-2-3
namespace: test
data:
keytab:
<keytab-contents>
Por último, cambie la contraseña de la cuenta de usuario arcsqlmi
en el controlador de dominio del dominio de Active Directory contoso.com
:
Abra Administrador del servidor en el controlador de dominio para el dominio de Active Directory
contoso.com
. Puede buscar Administrador del servidor o abrirlo a través del menú Inicio.Vaya a Herramientas>Usuarios y equipos de Active Directory
Seleccione el usuario para el que desea cambiar la contraseña. Haga clic con el botón derecho para seleccionar el usuario. Seleccione Restablecer contraseña:
Escriba la nueva contraseña y seleccione
OK
.
Solución de errores después de la rotación
En caso de que haya errores al intentar usar la autenticación de Active Directory después de completar la rotación de keytab, los siguientes archivos del contenedor arc-sqlmi
en el pod de SQL MI son un buen lugar para empezar a investigar la causa principal:
- Archivo
security.log
ubicado en/var/opt/mssql/log
: este archivo de registro tiene registros para las interacciones de SQL con el dominio de Active Directory. - Archivo
errorlog
ubicado en/var/opt/mssql/log
: este archivo de registro contiene registros de SQL Server que se ejecutan en el contenedor. - Archivo
mssql.keytab
ubicado en/var/run/secrets/managed/keytabs/mssql
: compruebe que este archivo keytab contiene las entradas recién actualizadas y coincide con el archivo keytab creado mediante los scripts proporcionados anteriormente. El archivo keytab se puede leer mediante el comandoklist
, es decir,klist -k mssql.keytab -e
Además, después de obtener el vale de concesión de vales (TGT) de Kerberos mediante el comando kinit
, compruebe que el kvno
del usuario de SQL coincide con el kvno
más alto del archivo mssql.keytab
del contenedor arc-sqlmi
. Por ejemplo, para el usuario arcsqlmi@CONTOSO.COM
:
- Para obtener el TGT de Kerberos del dominio de Active Directory, ejecute
kinit arcsqlmi@CONTOSO.COM
. Esto solicitará a un usuario la entrada de la contraseña para el usuarioarcsqlmi
. - Una vez que esto se realiza correctamente, se puede consultar el
kvno
ejecutandokvno arcsqlmi@CONTOSO.COM
.
También podemos habilitar el registro de depuración para el comando kinit
ejecutando lo siguiente: KRB5_TRACE=/dev/stdout kinit -V arcsqlmi@CONTOSO.COM
. Esto aumenta el nivel de detalle y genera los registros en stdout a medida que se ejecuta el comando.