Rotar SQL Managed Instance habilitada por las credenciales administradas por el servicio Azure Arc (versión preliminar)

En este artículo se describe cómo rotar las credenciales administradas por el servicio para SQL Managed Instance habilitado por Azure Arc. Los servicios de datos de Arc generan varias credenciales administradas por el servicio, como certificados e inicios de sesión de SQL usados para la supervisión, copia de seguridad y restauración, alta disponibilidad, etc. Estas credenciales se consideran credenciales de recursos personalizadas administradas por los servicios de datos de Azure Arc.

La rotación de credenciales administradas por el servicio es una operación desencadenada por el usuario que se inicia durante un problema de seguridad o cuando se requiere rotación periódica para el cumplimiento.

Limitaciones

Tenga en cuenta las siguientes limitaciones al rotar las credenciales administradas por el servicio de instancia administrada:

  • No se admiten grupos de conmutación por error de SQL Server.
  • No se admite la rotación programada previamente de forma automática.
  • Las claves simétricas de API de protección de datos administradas por el servicio, keytab, las cuentas de Active Directory y las credenciales de TDE administradas por el servicio no se incluyen en esta rotación de credenciales.

Nivel Uso general

Durante la rotación de credenciales administradas por el servicio SQL Managed Instance De uso general, el pod de Kubernetes de instancia administrada finaliza y se vuelve a aprovisionar con credenciales rotadas. Este proceso provoca una breve cantidad de tiempo de inactividad a medida que se crea el nuevo pod de instancia administrada. Para garantizar una interrupción mínima, cree resistencia en la aplicación, por ejemplo, en la lógica de reintentos de conexión. Lea Información general sobre el fundamento de confiabilidad para obtener más información sobre cómo diseñar resistencia y la Guía de reintentos para los servicios de Azure.

Nivel Crítico para la empresa

Durante la rotación de credenciales administradas por el servicio SQL Managed Instance Crítico para la empresa con más de una réplica:

  • Los pods de réplica secundaria finalizan y se vuelven a aprovisionar con las credenciales administradas por el servicio rotado
  • Después de volver a aprovisionar las réplicas, la réplica principal conmutará por error a una réplica que se haya vuelto a aprovisionar
  • El pod principal anterior finaliza, se vuelve a aprovisionar con las credenciales administradas por el servicio rotado y pasa a ser secundario

Hay un breve momento de tiempo de inactividad cuando se produce la conmutación por error.

Requisitos previos:

Antes de continuar con este artículo, deberá tener habilitada una instancia de SQL Managed Instance por el recurso de Azure Arc creado.

Procedimiento para rotar las credenciales administradas por el servicio en una instancia administrada

Las credenciales administradas por el servicio están asociadas a una generación dentro de la instancia administrada. Para rotar todas las credenciales administradas por el servicio para una instancia administrada, la generación debe aumentarse en 1.

Ejecute los comandos siguientes para obtener la generación de credenciales administradas por el servicio actual a partir de la especificación y llevar a cabo la nueva generación de credenciales administradas por el servicio. Esta acción desencadena la rotación de credenciales administradas por el servicio.

rotateCredentialGeneration=$(($(kubectl get sqlmi <sqlmi-name> -o jsonpath='{.spec.update.managedCredentialsGeneration}' -n <namespace>) + 1))
kubectl patch sqlmi <sqlmi-name> --namespace <namespace> --type merge --patch '{ "spec": { "update": { "managedCredentialsGeneration": '$rotateCredentialGeneration'} } }'

El managedCredentialsGeneration identifica la generación de destino para las credenciales administradas por el servicio. El resto de las características, como la configuración y la topología de Kubernetes, siguen siendo las mismas.

Procedimiento para revertir las credenciales administradas por el servicio en una instancia administrada

Nota:

La reversión es necesaria cuando se produce un error en la rotación de credenciales. La reversión a la generación de credenciales anteriores solo se admite una vez en n-1, donde n es la generación actual.

Si la reversión se desencadena mientras la rotación de credenciales está en curso y no se han vuelto a aprovisionar todas las réplicas, la reversión podría tardar unos 30 minutos en completarse para que la instancia administrada esté en un estado de Listo.

Ejecute los dos comandos siguientes para obtener la generación de credenciales administradas por el servicio actual a partir de la especificación y la reversión a la generación anterior de credenciales administradas por el servicio:

rotateCredentialGeneration=$(($(kubectl get sqlmi <sqlmi-name> -o jsonpath='{.spec.update.managedCredentialsGeneration}' -n <namespace>) - 1))
kubectl patch sqlmi <sqlmi-name> --namespace <namespace> --type merge --patch '{ "spec": { "update": { "managedCredentialsGeneration": '$rotateCredentialGeneration'} } }'

La reversión del desencadenador es lo mismo que la activación de una rotación de credenciales administradas por el servicio, excepto que la generación de destino es anterior y no genera una nueva generación o credenciales.