Partekatu honen bidez:


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.

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:

  1. Obtenga el valor kvno para la generación actual de credenciales para la cuenta de Active Directory de SQL MI.
  2. 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.
  3. Actualice el nuevo archivo keytab con nuevas entradas para las nuevas credenciales de la cuenta de Active Directory de SQL MI.
  4. Cree un secreto de Kubernetes que contenga el nuevo contenido del archivo keytab en el mismo espacio de nombres que SQL MI.
  5. Edite la especificación de SQL MI para que apunte la configuración del secreto keytab de Active Directory a este nuevo secreto.
  6. 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 usa ktutil o adutil (si se especifica la marca --use-adutil) para generar automáticamente la nueva tabla de claves.
  • rotate-sqlmi-keytab.ps1: este script de PowerShell usa ktpass.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:

  1. 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.

  2. Vaya a Herramientas>Usuarios y equipos de Active Directory

    Recorte de pantalla de Usuarios y equipos de Active Directory.

  3. 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:

    Recorte de pantalla del control para restablecer la contraseña de una cuenta de usuario de Active Directory.

  4. 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 comando klist, 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 usuario arcsqlmi.
  • Una vez que esto se realiza correctamente, se puede consultar el kvno ejecutando kvno 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.