Partilhar via


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:

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

  2. Abra uma sessão do PowerShell no ponto de extremidade de manutenção da VM do adaptador do fornecedor de recursos do MySQL.

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

  4. Na sessão de manutenção do PowerShell, execute o comando Update-DBAdapterWindowsDefenderDefinitions.

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

  1. Entre no portal do administrador do Azure Stack Hub.

  2. Selecione Máquinas virtuais no painel à esquerda, procure a VM do adaptador do provedor de recursos MySQL e selecione a VM.

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

    Vá para as configurações de diagnóstico

  4. Adicione Microsoft-AzureStack-DatabaseAdapter/Operational!* para coletar logs de eventos operacionais do provedor de recursos MySQL.

    Adicionar logs de eventos

  5. Para habilitar a coleta de logs do IIS, verifique logs do IIS e Logs de solicitação com falha.

    Adicionar logs do IIS

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

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

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

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

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

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

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

  2. 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".

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

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

  2. 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".

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

  4. 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 de value 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" chamado SSLCert.

  5. 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
    
  6. 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:

Ecrã de rotação secreta em andamento.

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.

Próximos passos

Adicionar servidores de hospedagem do MySQL Server