Girar as credenciais gerenciadas pelo serviço da Instância Gerenciada de SQL habilitada pelo Azure Arc (versão prévia)

Este artigo descreve como girar credenciais gerenciadas por serviço para a Instância Gerenciada de SQL habilitada pelo Azure Arc. Os serviços de dados Arc geram várias credenciais gerenciadas pelo serviço, como certificados e logons SQL usados para Monitoramento, Backup/Restauração, Alta Disponibilidade etc. Essas credenciais são consideradas credenciais de recurso personalizadas gerenciadas pelos serviços de dados do Azure Arc.

A rotação de credenciais gerenciadas pelo serviço é uma operação disparada pelo usuário que você inicia durante um problema de segurança ou quando a rotação periódica é necessária para conformidade.

Limitações

Considere as seguintes limitações ao girar as credenciais gerenciadas pelo serviço de instância gerenciada:

  • Não há suporte para grupos de failover do SQL Server.
  • Não há suporte para rotação pré-agendada automaticamente.
  • As chaves simétricas DPAPI gerenciadas pelo serviço, o keytab, as contas do active directory e as credenciais TDE gerenciadas pelo serviço não estão incluídos nessa rotação de credenciais.

Camada de Uso Geral

Durante a rotação de credenciais gerenciadas pelo serviço da Instância Gerenciada de SQL de Uso Geral, o pod do Kubernetes da instância gerenciada é encerrado e reprovisionado com credenciais giradas. Esse processo causa uma pequena quantidade de tempo de inatividade à medida que o novo pod de instância gerenciada é criado. Para lidar com a interrupção, crie resiliência em seu aplicativo, como lógica de repetição de conexão, para garantir uma interrupção mínima. Leia Visão geral do pilar de confiabilidade para obter mais informações sobre como arquitetar a resiliência e diretrizes de repetição para os Serviços do Azure.

Camada Comercialmente Crítico

Durante a rotação de credenciais gerenciadas por serviço da Instância Gerenciada de SQL Comercialmente Crítico com mais de uma réplica:

  • Os pods de réplica secundária são encerrados e reprovisionados com as credenciais gerenciadas pelo serviço giradas
  • Depois que as réplicas forem reprovisionadas, o primário fará failover para uma réplica reprovisionada
  • O pod primário anterior é encerrado e reprovisionado com as credenciais gerenciadas por serviço giradas e torna-se um secundário

Há um breve momento de inatividade quando o failover ocorre.

Pré-requisitos:

Antes de prosseguir com este artigo, você deve ter uma Instância Gerenciada de SQL habilitada pelo recurso do Azure Arc criado.

Como girar credenciais gerenciadas pelo serviço em uma instância gerenciada

As credenciais gerenciadas pelo serviço são associadas a uma geração dentro da instância gerenciada. Para girar todas as credenciais gerenciadas por serviço para uma instância gerenciada, a geração deve ser aumentada em 1.

Execute os comandos a seguir para obter a geração atual de credenciais gerenciadas pelo serviço da especificação e gerar a nova geração de credenciais gerenciadas pelo serviço. Essa ação dispara a rotação de credenciais gerenciadas pelo serviço.

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'} } }'

O managedCredentialsGeneration identifica a geração de destino para credenciais gerenciadas pelo serviço. O restante dos recursos, como a configuração e a topologia do Kubernetes, permanecem os mesmos.

Como reverter credenciais gerenciadas pelo serviço em uma instância gerenciada

Observação

A reversão é necessária quando a rotação de credenciais falha. A reversão para a geração de credenciais anteriores tem suporte apenas uma vez para n-1, em que n é a geração atual.

Se a reversão for disparada enquanto a rotação de credenciais estiver em andamento e todas as réplicas não tiverem sido reprovisionadas, a reversão poderá levar cerca de 30 minutos para ser concluída para que a instância gerenciada esteja em um estado Pronto.

Execute os dois comandos a seguir para obter a geração de credenciais gerenciadas pelo serviço atual de especificação e reversão para a geração anterior de credenciais gerenciadas pelo serviço:

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'} } }'

Disparar a reversão é o mesmo que disparar uma rotação de credenciais gerenciadas pelo serviço, exceto que a geração de destino é de geração anterior e não gera uma nova geração ou credenciais.