Operações de manutenção do provedor de recursos MySQL no Azure Stack Hub
Importante
A partir da compilação 2108 do Azure Stack Hub, os provedores de recursos SQL e MySQL são oferecidos para assinaturas às quais foi concedido acesso. Se você quiser começar a usar esse recurso, ou se precisar atualizar de uma versão anterior, abra um caso de suporte e nossos engenheiros de suporte irão guiá-lo através do processo de implantação ou atualização.
O provedor de recursos MySQL é executado em uma máquina virtual (VM) bloqueada. Para habilitar as operações de manutenção, você precisa atualizar a segurança da VM. Para fazer isso usando o princípio de menor privilégio (POLP), você pode usar PowerShell Just Enough Administration (JEA) endpoint DBAdapterMaintenance. O pacote de instalação do provedor de recursos inclui um script para esta operação.
Aplicação de patches e atualização
O provedor de recursos MySQL não é atendido como parte do Azure Stack Hub porque é um componente complementar. A Microsoft fornece atualizações para o provedor de recursos MySQL conforme necessário.
Para o MySQL RP V1, quando um provedor de recursos atualizado do MySQL Server é lançado, um script é fornecido para aplicar a atualização. Esse script cria uma nova VM do provedor de recursos, migrando o estado da VM do provedor antigo para a nova VM.
Para o MySQL RP V2, os provedores de recursos são atualizados usando o mesmo recurso de atualização usado para aplicar atualizações do Azure Stack Hub.
Para obter mais informações, consulte Atualização do provedor de recursos do MySQL.
Atualizar a VM do provedor
MySQL RP V1 é executado em um usuário VM, você precisa aplicar os patches e atualizações necessários quando eles são lançados. Você pode instalar um pacote do Windows Update durante a instalação do provedor de recursos ou ao atualizar para ele.
O MySQL RP V2 é executado em um Windows Server gerenciado que está oculto. Não é necessário corrigir ou atualizar a VM do provedor de recursos. Ele será atualizado automaticamente quando você atualizar o RP.
Atualizar as definições de VM do Windows Defender
Estas instruções aplicam-se apenas ao SQL RP V1 em execução nos Sistemas Integrados do Azure Stack Hub.
Para atualizar as definições do Defender, siga estas etapas:
Transfira a atualização de definições do Windows Defender a partir do de definições do Windows Defender .
Na página de definições, role para baixo até "Baixar e instalar manualmente as definições". Transfira o ficheiro de 64 bits do "Windows Defender Antivirus para Windows 10 e Windows 8.1".
Como alternativa, use este link direto para baixar/executar o arquivo fpam-fe.exe.
Abra uma sessão do PowerShell no ponto de extremidade de manutenção da VM do adaptador do fornecedor de recursos do MySQL.
Copie o ficheiro de atualização de definições para a VM do adaptador do fornecedor de recursos usando a sessão de ponto de manutenção.
Na sessão de manutenção do PowerShell, execute o comando Update-DBAdapterWindowsDefenderDefinitions.
Depois de instalar as definições, recomendamos que você exclua o arquivo de atualização de definições usando o comando Remove-ItemOnUserDrive).
exemplo de script do PowerShell para atualizar definições.
Você pode editar e executar o script a seguir para atualizar as definições do Defender. Substitua valores no script por valores do seu ambiente.
# Set credentials for the local admin on the resource provider VM.
$vmLocalAdminPass = ConvertTo-SecureString '<local admin user password>' -AsPlainText -Force
$vmLocalAdminUser = "<local admin user name>"
$vmLocalAdminCreds = New-Object System.Management.Automation.PSCredential `
($vmLocalAdminUser, $vmLocalAdminPass)
# Provide the public IP address for the adapter VM.
$databaseRPMachine = "<RP VM IP address>"
$localPathToDefenderUpdate = "C:\DefenderUpdates\mpam-fe.exe"
# Download Windows Defender update definitions file from https://www.microsoft.com/en-us/wdsi/definitions.
Invoke-WebRequest -Uri 'https://go.microsoft.com/fwlink/?LinkID=121721&arch=x64' `
-Outfile $localPathToDefenderUpdate
# Create a session to the maintenance endpoint.
$session = New-PSSession -ComputerName $databaseRPMachine `
-Credential $vmLocalAdminCreds -ConfigurationName DBAdapterMaintenance `
-SessionOption (New-PSSessionOption -Culture en-US -UICulture en-US)
# Copy the defender update file to the adapter VM.
Copy-Item -ToSession $session -Path $localPathToDefenderUpdate `
-Destination "User:\"
# Install the update definitions.
Invoke-Command -Session $session -ScriptBlock `
{Update-AzSDBAdapterWindowsDefenderDefinition -DefinitionsUpdatePackageFile "User:\mpam-fe.exe"}
# Cleanup the definitions package file and session.
Invoke-Command -Session $session -ScriptBlock `
{Remove-AzSItemOnUserDrive -ItemPath "User:\mpam-fe.exe"}
$session | Remove-PSSession
Configurar a extensão de Diagnóstico do Azure para o provedor de recursos MySQL
Estas instruções aplicam-se apenas ao SQL RP V1 em execução nos Sistemas Integrados do Azure Stack Hub.
A extensão de Diagnóstico do Azure é instalada na VM do adaptador do provedor de recursos MySQL por padrão. As etapas a seguir mostram como personalizar a extensão para coletar os logs de eventos operacionais do provedor de recursos MySQL e os logs do IIS para fins de solução de problemas e auditoria.
Entre no portal do administrador do Azure Stack Hub.
Selecione Máquinas virtuais no painel à esquerda, procure a VM do adaptador do provedor de recursos MySQL e selecione a VM.
Nas configurações de Diagnóstico da VM, vá para a guia Logs e escolha Personalizado para personalizar os logs de eventos que estão sendo recolhidos.
Adicione Microsoft-AzureStack-DatabaseAdapter/Operational!* para coletar logs de eventos operacionais do provedor de recursos MySQL.
Para habilitar a coleta de logs do IIS, verifique logs do IIS e Logs de solicitação com falha.
Por fim, selecione Salvar para salvar todas as configurações de diagnóstico.
Após a configuração dos logs de eventos e da coleta de logs do IIS para o provedor de recursos MySQL, os logs podem ser encontrados em uma conta de armazenamento do sistema chamada mysqladapterdiagaccount.
Para saber mais sobre a extensão de Diagnóstico do Azure, consulte O que é a extensão de Diagnóstico do Azure.
Rotação de segredos
Estas instruções aplicam-se apenas aos Sistemas Integrados do Azure Stack Hub.
Ao usar os provedores de recursos SQL e MySQL com sistemas integrados do Azure Stack Hub, o operador do Azure Stack Hub é responsável por atualizar os seguintes segredos de infraestrutura do provedor de recursos para garantir que eles não expirem:
- Certificado SSL Externo fornecido durante a implantação.
- A senha da conta de administrador local da VM do provedor de recursos fornecida durante a implantação.
- Senha do usuário de diagnóstico do provedor de recursos (dbadapterdiag).
- (versão >= 1.1.47.0) Certificado Key Vault gerado durante implantação.
Exemplos do PowerShell para rotação de segredos
Mude todos os segredos ao mesmo tempo:
.\SecretRotationMySQLProvider.ps1 `
-Privilegedendpoint $Privilegedendpoint `
-CloudAdminCredential $cloudCreds `
-AzCredential $adminCreds `
-DiagnosticsUserPassword $passwd `
-DependencyFilesLocalPath $certPath `
-DefaultSSLCertificatePassword $certPasswd `
-VMLocalCredential $localCreds `
-KeyVaultPfxPassword $keyvaultCertPasswd
Alterar a senha do usuário de diagnóstico:
.\SecretRotationMySQLProvider.ps1 `
-Privilegedendpoint $Privilegedendpoint `
-CloudAdminCredential $cloudCreds `
-AzCredential $adminCreds `
-DiagnosticsUserPassword $passwd
Alterar a senha da conta de administrador local da VM:
.\SecretRotationMySQLProvider.ps1 `
-Privilegedendpoint $Privilegedendpoint `
-CloudAdminCredential $cloudCreds `
-AzCredential $adminCreds `
-VMLocalCredential $localCreds
Rodar o certificado SSL
.\SecretRotationMySQLProvider.ps1 `
-Privilegedendpoint $Privilegedendpoint `
-CloudAdminCredential $cloudCreds `
-AzCredential $adminCreds `
-DependencyFilesLocalPath $certPath `
-DefaultSSLCertificatePassword $certPasswd
Girar o certificado do Key Vault
.\SecretRotationSQLProvider.ps1 `
-Privilegedendpoint $Privilegedendpoint `
-CloudAdminCredential $cloudCreds `
-AzCredential $adminCreds `
-KeyVaultPfxPassword $keyvaultCertPasswd
SecretRotationMySQLProvider.ps1 parâmetros
Parâmetro | Descrição | Comentar |
---|---|---|
AzureEnvironment | O ambiente do Azure da conta de administrador de serviço usada para implantar o Azure Stack Hub. Necessário apenas para implantações do Microsoft Entra. Os nomes de ambiente suportados são AzureCloud, AzureUSGovernmentou, se estiver usando uma ID do Microsoft Entra da China, AzureChinaCloud. | Opcional |
AzCredential | Credencial da conta de administrador do serviço Azure Stack Hub. O script falhará se a conta que você usa com AzCredential exigir autenticação multifator (MFA). | Obrigatório |
CloudAdminCredential | Credencial de conta de administrador de domínio de nuvem do Azure Stack Hub. | Obrigatório |
Ponto final privilegiado | Ponto de extremidade privilegiado para aceder Get-AzureStackStampInformation. | Obrigatório |
DiagnosticsUserPassword | Verificação da senha da conta do usuário. | Opcional |
VMLocalCredential | A conta de administrador local na VM MySQLAdapter. | Opcional |
DefaultSSLCertificatePassword | Senha padrão do Certificado SSL (*.pfx). | Opcional |
CaminhoLocalParaFicheirosDeDependência | Caminho local dos ficheiros de dependência. | Opcional |
KeyVaultPfxPassword | A palavra-passe usada para gerar o certificado do Key Vault para o adaptador de base de dados. | Opcional |
Estas instruções aplicam-se apenas ao MySQL RP V2 em execução nos Sistemas Integrados do Azure Stack Hub.
Observação
Atualmente, a rotação secreta para provedores de recursos (RPs) de valor agregado só é suportada via PowerShell.
Como a infraestrutura do Azure Stack Hub, os provedores de recursos de valor agregado usam segredos internos e externos. Como operador, você é responsável por:
Fornecendo segredos externos atualizados, como um novo certificado TLS usado para proteger os endpoints do fornecedor de recursos.
Gerenciando a rotação secreta do provedor de recursos regularmente.
Quando os segredos estão prestes a expirar, os alertas a seguir são gerados no portal do administrador. Completar a rotação secreta resolverá estes alertas:
Expiração de certificado interno pendente
Expiração de certificado externo pendente
Pré-requisitos
Em preparação para o processo de rotação:
Se ainda não o fez, Instalar o módulo Az do PowerShell para o Azure Stack Hub antes de continuar. A versão 2.0.2-preview ou posterior é necessária para a rotação de segredos do Azure Stack Hub. Para obter mais informações, consulte migrar do AzureRM para o Azure PowerShell Az no Azure Stack Hub.
Instale os módulos Azs.Deployment.Admin 1.0.0: Galeria do PowerShell | Azs.Deployment.Admin 1.0.0
Install-Module -Name Azs.Deployment.Admin
- Se o certificado externo estiver prestes a expirar, revise de requisitos de certificado de infraestrutura de chave pública (PKI) do Azure Stack Hub para obter informações importantes de pré-requisitos antes de adquirir/renovar seu certificado X509, incluindo detalhes sobre o formato PFX necessário. Analise também os requisitos especificados na seção dos certificados PaaS opcionais, para o seu fornecedor de recursos de valor acrescentado específico.
Preparar um novo certificado TLS para rotação de certificados externos
Observação
Se apenas o certificado interno estiver prestes a expirar, você poderá ignorar esta seção.
Em seguida, crie ou renove seu certificado TLS para proteger os pontos de extremidade do provedor de recursos de valor agregado:
Complete as etapas em Gerar pedidos de assinatura de certificado (CSRs) para renovação de certificado para o seu provedor de recursos. Aqui você usa a ferramenta Azure Stack Hub Readiness Checker para criar o CSR. Certifique-se de executar o cmdlet correto para seu provedor de recursos, na etapa "Gerar solicitações de certificado para outros serviços do Azure Stack Hub". Por exemplo,
New-AzsDbAdapterCertificateSigningRequest
é usado para RPs SQL e MySQL. Quando terminar, você envia o arquivo . REQ para sua Autoridade de Certificação (CA) para o novo certificado.Depois de receber o ficheiro de certificado da autoridade de certificação, complete os passos em Preparar certificados para implantação ou rotação. Você utiliza a ferramenta de verificação de prontidão novamente para processar o ficheiro retornado pela autoridade de certificação.
Por fim, conclua as etapas em Validação de certificados PKI do Azure Stack Hub. Use a ferramenta Verificador de prontidão mais uma vez para executar testes de validação em seu novo certificado.
Girar o certificado interno
Abra um console do PowerShell com privilégios elevados e conclua os seguintes passos para rodar as chaves secretas externas do provedor de recursos:
Entre em seu ambiente do Azure Stack Hub usando suas credenciais de operador. Veja Conectar ao Azure Stack Hub com o PowerShell para o script de início de sessão no PowerShell. Certifique-se de usar os cmdlets do PowerShell Az (em vez do AzureRM) e substituir todos os valores de espaço reservado, como URLs de ponto de extremidade e nome do locatário do diretório.
Determine a ID do produto do provedor de recursos. Execute o cmdlet
Get-AzsProductDeployment
para recuperar uma lista das implantações mais recentes do provedor de recursos. A coleção retornada de"value"
contém um elemento para cada provedor de recursos implantado. Encontre o provedor de recursos de interesse e anote os valores dessas propriedades:-
"name"
- contém a ID do produto do provedor de recursos no segundo segmento do valor.
Por exemplo, a implantação do MySQL RP pode ter um ID de produto de
"microsoft.mysqlrp"
.-
Execute o cmdlet
Invoke-AzsProductRotateSecretsAction
para girar o certificado interno:Invoke-AzsProductRotateSecretsAction -ProductId $productId
Girar o certificado externo
Você precisa primeiro anotar os valores para os seguintes parâmetros.
Marcador de posição | Descrição | Valor de exemplo |
---|---|---|
<product-id> |
O ID do produto da implementação mais recente do provedor de recursos. | microsoft.mysqlrp |
<installed-version> |
A versão da implantação mais recente do provedor de recursos. | 2.0.0.2 |
<package-id> |
O ID do pacote é criado ao concatenar o ID do produto e a versão instalada. | microsoft.mysqlrp.2.0.0.2 |
<cert-secret-name> |
O nome sob o qual o segredo do certificado é armazenado. | SSLCert |
<cert-pfx-file-path> |
O caminho para o ficheiro PFX do seu certificado. | C:\dir\dbadapter-cert-file.pfx |
<pfx-password> |
A palavra-passe atribuída ao seu arquivo PFX de certificado. | strong@CertSecret6 |
Abra um console do PowerShell com privilégios elevados e conclua as seguintes etapas:
Entre em seu ambiente do Azure Stack Hub usando suas credenciais de operador. Consulte Conectar-se ao Azure Stack Hub com o PowerShell para o script de início de sessão do PowerShell. Certifique-se de usar os cmdlets do PowerShell Az (em vez do AzureRM) e substitua todos os valores de espaço reservado, como URLs de ponto de extremidade e nome do locatário do diretório.
Obtenha o valor do parâmetro product-id. Execute o cmdlet
Get-AzsProductDeployment
para recuperar uma lista das implantações mais recentes do provedor de recursos. A coleção de"value"
retornada contém um elemento para cada provedor de recursos implantado. Encontre o provedor de recursos de interesse e anote os valores dessas propriedades:-
"name"
- contém a ID do produto do provedor de recursos no segundo segmento do valor. -
"properties"."deployment"."version"
- contém o número da versão atualmente implantada.
Por exemplo, a implantação do MySQL RP pode ter um ID de produto de
"microsoft.mysqlrp"
e versão"2.0.0.2"
.-
Crie a ID do pacote do provedor de recursos, concatenando a ID e a versão do produto do provedor de recursos. Por exemplo, usando os valores derivados na etapa anterior, a ID do pacote SQL RP é
microsoft.mysqlrp.2.0.0.2
.Usando a ID do pacote derivada na etapa anterior, execute
Get-AzsProductSecret -PackageId
para recuperar a lista de tipos secretos que estão sendo usados pelo provedor de recursos. Na coleção devalue
retornada, localize o elemento que contém um valor de"Certificate"
para a propriedade"properties"."secretKind"
. Este elemento contém propriedades para o segredo de certificado do RP. Anote o nome atribuído a este segredo de certificado, que é identificado pelo último segmento da propriedade"name"
, logo acima da"properties"
.Por exemplo, a coleção de segredos retornada para o SQL RP contém um segredo de
"Certificate"
chamadoSSLCert
.Utilize o cmdlet
Set-AzsProductSecret
para importar o seu novo certificado para o Azure Key Vault, que será usado pelo processo de rotação. Substitua devidamente os valores de espaço reservado da variável antes de executar o script.$productId = '<product-id>' $packageId = $productId + '.' + '<installed-version>' $certSecretName = '<cert-secret-name>' $pfxFilePath = '<cert-pfx-file-path>' $pfxPassword = ConvertTo-SecureString '<pfx-password>' -AsPlainText -Force Set-AzsProductSecret -PackageId $packageId -SecretName $certSecretName -PfxFileName $pfxFilePath -PfxPassword $pfxPassword -Force
Por fim, use o cmdlet
Invoke-AzsProductRotateSecretsAction
para rodar os segredos:Invoke-AzsProductRotateSecretsAction -ProductId $productId
Monitore o progresso da rotação secreta
Você pode monitorar o progresso da rotação secreta no console do PowerShell ou no portal do administrador selecionando o provedor de recursos no serviço do Marketplace:
Observação
O tempo de rotação secreto pode levar mais de 10 minutos. Depois de feito, o status do provedor de recursos mudará para "Instalado".
Coletar logs de diagnóstico
O Azure Stack Hub tem várias maneiras de coletar, salvar e enviar logs de diagnóstico para o Suporte da Microsoft. A partir da versão 1.1.93, o MySQL Resource Provider suporta a maneira padrão de coletar logs do seu ambiente do Azure Stack Hub. Para obter mais informações, consulte Coleta de log de diagnóstico.
A partir da versão 1.1.93, o MySQL Resource Provider suporta a maneira padrão de coletar logs do seu ambiente do Azure Stack Hub. Se você estiver usando uma versão mais antiga, é recomendável atualizar seu provedor de recursos MySQL para a versão mais recente.
Para coletar logs da VM bloqueada, use o DBAdapterDiagnostics do ponto de extremidade PowerShell Just Enough Administration (JEA). Este ponto de extremidade fornece os seguintes comandos:
Get-AzsDBAdapterLog. Este comando cria um pacote zip dos logs de diagnóstico do provedor de recursos e salva o arquivo na unidade de usuário da sessão. Você pode executar esse comando sem quaisquer parâmetros e as últimas quatro horas de logs são coletadas.
Remove-AzsDBAdapterLog. Este comando remove pacotes de log existentes na VM do provedor de recursos.
Requisitos e processo do endpoint
Quando um provedor de recursos é instalado ou atualizado, a conta de usuário dbadapterdiag é criada. Você usará essa conta para coletar logs de diagnóstico.
Observação
A senha da conta dbadapterdiag é a mesma usada para o administrador local na VM criada durante uma implantação ou atualização do provedor.
Para usar os comandos DBAdapterDiagnostics, crie uma sessão remota do PowerShell para a VM do provedor de recursos e execute o comando Get-AzsDBAdapterLog.
Você define o período de tempo para a coleta de logs usando os parâmetros FromDate e ToDate. Se você não especificar um ou ambos os parâmetros, os seguintes padrões serão usados:
- FromDate é quatro horas antes da hora atual.
- ToDate é a hora atual.
exemplo de script do PowerShell para coletar logs:
O script a seguir mostra como coletar logs de diagnóstico da VM do provedor de recursos.
# Create a new diagnostics endpoint session.
$databaseRPMachineIP = '<RP VM IP address>'
$diagnosticsUserName = 'dbadapterdiag'
$diagnosticsUserPassword = '<Enter Diagnostic password>'
$diagCreds = New-Object System.Management.Automation.PSCredential `
($diagnosticsUserName, (ConvertTo-SecureString -String $diagnosticsUserPassword -AsPlainText -Force))
$session = New-PSSession -ComputerName $databaseRPMachineIP -Credential $diagCreds `
-ConfigurationName DBAdapterDiagnostics -SessionOption (New-PSSessionOption -Culture en-US -UICulture en-US)
# Sample that captures logs from the previous hour.
$fromDate = (Get-Date).AddHours(-1)
$dateNow = Get-Date
$sb = {param($d1,$d2) Get-AzSDBAdapterLog -FromDate $d1 -ToDate $d2}
$logs = Invoke-Command -Session $session -ScriptBlock $sb -ArgumentList $fromDate,$dateNow
# Copy the logs to the user drive.
$sourcePath = "User:\{0}" -f $logs
$destinationPackage = Join-Path -Path (Convert-Path '.') -ChildPath $logs
Copy-Item -FromSession $session -Path $sourcePath -Destination $destinationPackage
# Cleanup the logs.
$cleanup = Invoke-Command -Session $session -ScriptBlock {Remove-AzsDBAdapterLog}
# Close the session.
$session | Remove-PSSession
Limitações conhecidas do provedor de recursos do MySQL Server Versão 1
Limitação:
Quando o script de implantação, atualização ou rotação secreta falha, alguns logs não podem ser coletados pelo mecanismo padrão de coleta de logs.
Solução alternativa:
Além de usar o mecanismo padrão de coleta de logs, vá para a pasta Logs na pasta extraída onde o script localiza, para encontrar mais logs.