Girar a Instância Gerenciada SQL habilitada pelas credenciais gerenciadas pelo serviço Azure Arc (visualização)
Este artigo descreve como alternar credenciais gerenciadas por serviço para a Instância Gerenciada SQL habilitada pelo Azure Arc. Os serviços de dados Arc geram várias credenciais gerenciadas por serviços, como certificados e logins 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 por serviço é uma operação acionada 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 alternar as credenciais gerenciadas pelo serviço de instância gerenciada:
- Não há suporte para grupos de failover do SQL Server.
- A rotação pré-agendada automaticamente não é suportada.
- As chaves simétricas DPAPI gerenciadas por serviço, keytab, contas do Ative Directory e credenciais TDE gerenciadas por serviço não estão incluídas nessa rotação de credenciais.
Escalão Fins Gerais
Durante a rotação de credenciais gerenciadas pelo serviço da Instância Gerenciada SQL de Uso Geral, o pod Kubernetes da instância gerenciada é encerrado e reprovisionado com credenciais rotativas. Esse processo causa um curto período 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 o mínimo de interrupção. Leia Visão geral do pilar de confiabilidade para obter mais informações sobre como arquitetar orientações de resiliência e repetição para os Serviços do Azure.
Escalão Crítico para a Empresa
Durante a rotação de credenciais gerenciadas pelo serviço da Instância Gerenciada SQL Crítica para os Negócios com mais de uma réplica:
- Os pods de réplica secundários são encerrados e reprovisionados com as credenciais giradas gerenciadas pelo serviço
- Depois que as réplicas forem reprovisionadas, o principal fará failover para uma réplica reprovisionada
- O pod primário anterior é encerrado e reprovisionado com as credenciais gerenciadas pelo serviço giradas e se torna 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 do SQL habilitada pelo recurso Azure Arc criado.
Como alternar credenciais gerenciadas por serviço em uma instância gerenciada
As credenciais gerenciadas por serviço são associadas a uma geração dentro da instância gerenciada. Para alternar 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 a partir das especificações e gerar a nova geração de credenciais gerenciadas pelo serviço. Essa ação aciona 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 por serviço. O resto dos recursos, como a configuração e a topologia do kubernetes, permanecem os mesmos.
Como reverter credenciais gerenciadas por serviço em uma instância gerenciada
Nota
A reversão é necessária quando a rotação de credenciais falha. A reversão para a geração anterior de credenciais é suportada apenas uma vez para n-1, onde n é a geração atual.
Se a reversão for acionada 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 no estado Pronto .
Execute os dois comandos a seguir para obter a geração atual de credenciais gerenciadas pelo serviço a partir da especificação e a 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'} } }'
Acionar a reversão é o mesmo que acionar uma rotação de credenciais gerenciadas pelo serviço, exceto que a geração de destino é da geração anterior e não gera uma nova geração ou credenciais.