Operações de manutenção do fornecedor de recursos MySQL no Azure Stack Hub

Importante

A partir da compilação 2108 do Azure Stack Hub, os fornecedores de recursos SQL e MySQL são oferecidos às subscrições a quem foi concedido acesso. Se quiser começar a utilizar esta funcionalidade ou se precisar de atualizar a partir de uma versão anterior, abra um caso de suporte e os nossos engenheiros de suporte irão orientá-lo ao longo do processo de implementação ou atualização.

O fornecedor de recursos MySQL é executado numa máquina virtual (VM) bloqueada. Para ativar as operações de manutenção, tem de atualizar a segurança da VM. Para fazê-lo com o princípio do menor privilégio (POLP), pode utilizar o ponto final DBAdapterMaintenance do PowerShell Just Enough Administration (JEA ). O pacote de instalação do fornecedor de recursos inclui um script para esta operação.

Aplicação de patches e atualização

O fornecedor de recursos MySQL não é reparado como parte do Azure Stack Hub porque é um componente de suplemento. A Microsoft fornece atualizações para o fornecedor de recursos MySQL, conforme necessário.

Para o RP V1 do MySQL, quando é lançado um fornecedor de recursos do MySQL Server atualizado, é fornecido um script para aplicar a atualização. Este script cria uma nova VM do fornecedor de recursos, migrando o estado da VM do fornecedor antigo para a nova VM.

Para o RP V2 do MySQL, os fornecedores de recursos são atualizados com a mesma funcionalidade de atualização que é utilizada para aplicar atualizações do Azure Stack Hub.

Para obter mais informações, veja Atualizar o fornecedor de recursos MySQL.

Atualizar a VM do fornecedor

O RP V1 do MySQL é executado numa VM de utilizador , tem de aplicar os patches e atualizações necessários quando forem lançados. Pode instalar um pacote de Windows Update durante a instalação ou atualizar para o fornecedor de recursos.

O RP V2 do MySQL é executado num Windows Server gerido que está oculto. Não precisa de corrigir ou atualizar a VM do fornecedor de recursos. Será atualizado automaticamente quando atualizar o RP.

Atualizar as definições de Windows Defender da VM

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 estes passos:

  1. Transfira a atualização de definições de Windows Defender a partir do Windows Defender Definition.

    Na página de definições, desloque-se para baixo até "Transferir e instalar manualmente as definições". Transfira o ficheiro de 64 bits "Antivírus Windows Defender para Windows 10 e Windows 8.1".

    Em alternativa, utilize esta ligação direta para transferir/executar o ficheiro fpam-fe.exe.

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

  3. Copie o ficheiro de atualização de definições para a VM do adaptador do fornecedor de recursos com a sessão de ponto final 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 elimine o ficheiro de atualização de definições com o comando Remove-ItemOnUserDrive ).

Exemplo de script do PowerShell para atualizar definições.

Pode editar e executar o seguinte script para atualizar as definições do Defender. Substitua os valores no script pelos 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 fornecedor de recursos MySQL

Estas instruções aplicam-se apenas ao SQL RP V1 em execução nos Sistemas Integrados do Azure Stack Hub.

Por predefinição, a extensão Diagnóstico do Azure está instalada na VM do adaptador de fornecedor de recursos MySQL. Os passos seguintes mostram como personalizar a extensão para recolher os registos de eventos operacionais do fornecedor de recursos MySQL e os registos do IIS para fins de resolução de problemas e auditoria.

  1. Inicie sessão no portal de administrador do Azure Stack Hub.

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

  3. Nas definições de Diagnóstico da VM, aceda ao separador Registos e selecione Personalizado para personalizar os registos de eventos que estão a ser recolhidos.

    Aceder às definições de diagnóstico

  4. Adicione Microsoft-AzureStack-DatabaseAdapter/Operational!* para recolher registos de eventos operacionais do fornecedor de recursos MySQL.

    Adicionar registos de eventos

  5. Para ativar a coleção de registos do IIS, verifique os registos do IIS e os registos de pedidos falhados.

    Adicionar registos do IIS

  6. Por fim, selecione Guardar para guardar todas as definições de diagnóstico.

Assim que os registos de eventos e a coleção de registos do IIS estiverem configurados para o fornecedor de recursos MySQL, os registos podem ser encontrados numa conta de armazenamento do sistema com o nome mysqladapterdiagaccount.

Para saber mais sobre a extensão Diagnóstico do Azure, veja O que é Diagnóstico do Azure extensão.

Rotação de segredos

Estas instruções aplicam-se apenas aos Sistemas Integrados do Azure Stack Hub.

Ao utilizar os fornecedores de recursos SQL e MySQL com sistemas integrados do Azure Stack Hub, o operador do Azure Stack Hub é responsável por rodar os seguintes segredos da infraestrutura do fornecedor de recursos para garantir que não expiram:

  • Certificado SSL Externo fornecido durante a implementação.
  • A palavra-passe da conta de administrador local da VM do fornecedor de recursos fornecida durante a implementação.
  • Palavra-passe de utilizador de diagnóstico do fornecedor de recursos (dbadapterdiag).
  • (versão >= 1.1.47.0) Key Vault certificado gerado durante a implementação.

Exemplos do PowerShell para rodar segredos

Altere 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 palavra-passe de utilizador de diagnóstico:

.\SecretRotationMySQLProvider.ps1 `
    -Privilegedendpoint $Privilegedendpoint `
    -CloudAdminCredential $cloudCreds `
    -AzCredential $adminCreds `
    -DiagnosticsUserPassword  $passwd

Altere a palavra-passe 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

Rodar o certificado de Key Vault

.\SecretRotationSQLProvider.ps1 `
    -Privilegedendpoint $Privilegedendpoint `
    -CloudAdminCredential $cloudCreds `
    -AzCredential $adminCreds `
    -KeyVaultPfxPassword $keyvaultCertPasswd

parâmetros de SecretRotationMySQLProvider.ps1

Parâmetro Description Comentário
AzureEnvironment O ambiente do Azure da conta de administrador de serviço utilizada para implementar o Azure Stack Hub. Necessário apenas para implementações Microsoft Entra. Os nomes de ambiente suportados são AzureCloud, AzureUSGovernment ou se utilizar um ID de Microsoft Entra da China, o AzureChinaCloud. Opcional
AzCredential Credencial de conta de administrador do serviço Azure Stack Hub. O script falhará se a conta que utiliza com o AzCredential necessitar de autenticação multifator (MFA). Obrigatório
CloudAdminCredential Credencial de conta de domínio de administração da cloud do Azure Stack Hub. Obrigatório
PrivilegedEndpoint Ponto Final Privilegiado para aceder a Get-AzureStackStampInformation. Obrigatório
DiagnosticsUserPassword Palavra-passe da conta de utilizador de diagnóstico. Opcional
VMLocalCredential A conta de administrador local na VM MySQLAdapter. Opcional
DefaultSSLCertificatePassword Palavra-passe predefinida do Certificado SSL (*.pfx). Opcional
DependencyFilesLocalPath Caminho local dos ficheiros de dependência. Opcional
KeyVaultPfxPassword A palavra-passe utilizada para gerar o certificado de Key Vault para o adaptador de base de dados. Opcional

Estas instruções aplicam-se apenas ao RP V2 do MySQL em execução nos Sistemas Integrados do Azure Stack Hub.

Nota

A rotação de segredos para fornecedores de recursos de valor acrescentado (RPs) é atualmente suportada apenas através do PowerShell.

Tal como a infraestrutura do Azure Stack Hub, os fornecedores de recursos de valor acrescentado utilizam segredos internos e externos. Como operador, é responsável por:

  • Fornecer segredos externos atualizados, como um novo certificado TLS utilizado para proteger pontos finais do fornecedor de recursos.

  • Gerir a rotação de segredos do fornecedor de recursos regularmente.

Quando os segredos estão prestes a expirar, os seguintes alertas são gerados no portal de administrador. A conclusão da rotação de segredos resolverá estes alertas:

  • Expiração do certificado interno pendente

  • Expiração do certificado externo pendente

Pré-requisitos

Em preparação para o processo de rotação:

  1. Se ainda não o fez, instale o módulo do PowerShell Az para o Azure Stack Hub antes de continuar. A versão 2.0.2-preview ou posterior é necessária para a rotação secreta do Azure Stack Hub. Para obter mais informações, veja Migrar do AzureRM para o Azure PowerShell Az no Azure Stack Hub.

  2. Instale Azs.Deployment. Administração módulos 1.0.0: Galeria do PowerShell | Azs.Deployment. Administração 1.0.0

Install-Module -Name Azs.Deployment.Admin
  1. Se o certificado externo estiver prestes a expirar, reveja os requisitos de certificado de infraestrutura de chave pública (PKI) do Azure Stack Hub para obter informações de pré-requisitos importantes antes de adquirir/renovar o certificado X509, incluindo detalhes sobre o formato PFX necessário. Reveja também os requisitos especificados na secção Certificados PaaS Opcionais para o seu fornecedor de recursos de valor acrescentado específico.

Preparar um novo certificado TLS para a rotação de certificados externos

Nota

Se apenas o certificado interno estiver prestes a expirar, pode ignorar esta secção.

Em seguida, crie ou renove o certificado TLS para proteger os pontos finais do fornecedor de recursos de valor acrescentado:

  1. Conclua os passos em Gerar pedidos de assinatura de certificados (CSRs) para renovação de certificados para o seu fornecedor de recursos. Aqui, vai utilizar a ferramenta Verificador de Preparação do Azure Stack Hub para criar o CSR. Certifique-se de que executa o cmdlet correto para o seu fornecedor de recursos, no passo "Gerar pedidos de certificado para outros serviços do Azure Stack Hub". Por exemplo New-AzsDbAdapterCertificateSigningRequest , é utilizado para SQL e MySQL RPs. Quando terminar, submeta o . Ficheiro REQ à Autoridade de Certificação (AC) para o novo certificado.

  2. Depois de receber o ficheiro de certificado da AC, conclua os passos em Preparar certificados para implementação ou rotação. Utilize novamente a ferramenta Verificador de Preparação para processar o ficheiro devolvido a partir da AC.

  3. Por fim, conclua os passos em Validar certificados PKI do Azure Stack Hub. Utilize a ferramenta Verificador de Preparação mais uma vez para realizar testes de validação no seu novo certificado.

Rodar o certificado interno

Abra uma consola elevada do PowerShell e conclua os seguintes passos para rodar os segredos externos do fornecedor de recursos:

  1. Inicie sessão no ambiente do Azure Stack Hub com as credenciais do operador. Veja Ligar ao Azure Stack Hub com o script de início de sessão do PowerShell para PowerShell. Certifique-se de que utiliza os cmdlets do PowerShell Az (em vez do AzureRM) e substitui todos os valores de marcador de posição, como URLs de ponto final e nome do inquilino do diretório.

  2. Determine o ID do produto do fornecedor de recursos. Execute o Get-AzsProductDeployment cmdlet para obter uma lista das implementações mais recentes do fornecedor de recursos. A coleção devolvida "value" contém um elemento para cada fornecedor de recursos implementado. Localize o fornecedor de recursos de interesse e tome nota dos valores destas propriedades:

    • "name" - contém o ID de produto do fornecedor de recursos no segundo segmento do valor.

    Por exemplo, a implementação do RP MySQL pode ter um ID de produto de "microsoft.mysqlrp".

  3. Execute o Invoke-AzsProductRotateSecretsAction cmdlet para rodar o certificado interno:

    Invoke-AzsProductRotateSecretsAction -ProductId $productId
    

Rodar o certificado externo

Primeiro, tem de tomar nota dos valores dos seguintes parâmetros.

Marcador de posição Description Valor de exemplo
<product-id> O ID do produto da implementação mais recente do fornecedor de recursos. microsoft.mysqlrp
<installed-version> A versão da implementação mais recente do fornecedor de recursos. 2.0.0.2
<package-id> O ID do pacote é criado concatenando o id de produto e a versão instalada. microsoft.mysqlrp.2.0.0.2
<cert-secret-name> O nome no qual o segredo do certificado é armazenado. SSLCert
<cert-pfx-file-path> O caminho para o ficheiro PFX do certificado. C:\dir\dbadapter-cert-file.pfx
<pfx-password> A palavra-passe atribuída ao certificado . Ficheiro PFX. strong@CertSecret6

Abra uma consola elevada do PowerShell e conclua os seguintes passos:

  1. Inicie sessão no ambiente do Azure Stack Hub com as credenciais do operador. Veja Ligar ao Azure Stack Hub com o script de início de sessão do PowerShell para PowerShell. Certifique-se de que utiliza os cmdlets do PowerShell Az (em vez do AzureRM) e substitui todos os valores de marcador de posição, como URLs de ponto final e nome do inquilino do diretório.

  2. Obtenha o valor do parâmetro product-id. Execute o Get-AzsProductDeployment cmdlet para obter uma lista das implementações mais recentes do fornecedor de recursos. A coleção devolvida "value" contém um elemento para cada fornecedor de recursos implementado. Localize o fornecedor de recursos de interesse e tome nota dos valores destas propriedades:

    • "name" - contém o ID de produto do fornecedor de recursos no segundo segmento do valor.
    • "properties"."deployment"."version" - contém o número de versão atualmente implementado.

    Por exemplo, a implementação do RP MySQL pode ter um ID de produto do e da "microsoft.mysqlrp"versão "2.0.0.2".

  3. Crie o ID do pacote do fornecedor de recursos ao concatenar o ID e a versão do produto do fornecedor de recursos. Por exemplo, com os valores derivados no passo anterior, o ID do pacote de RP do SQL é microsoft.mysqlrp.2.0.0.2.

  4. Com o ID do pacote derivado no passo anterior, execute Get-AzsProductSecret -PackageId para obter a lista de tipos secretos que estão a ser utilizados pelo fornecedor de recursos. Na coleção devolvida value , localize o elemento que contém um valor de "Certificate" para a "properties"."secretKind" propriedade. Este elemento contém propriedades para o segredo do certificado do RP. Anote o nome atribuído a este segredo de certificado, que é identificado pelo último segmento da "name" propriedade, imediatamente acima "properties"de .

    Por exemplo, a coleção de segredos devolvida para o RP do SQL contém um "Certificate" segredo com o nome SSLCert.

  5. Utilize o cmdlet para importar o Set-AzsProductSecret novo certificado para Key Vault, que será utilizado pelo processo de rotação. Substitua os valores do marcador de posição da variável em conformidade 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, utilize o Invoke-AzsProductRotateSecretsAction cmdlet para rodar os segredos:

    Invoke-AzsProductRotateSecretsAction -ProductId $productId
    

Monitorizar o progresso da rotação de segredos

Pode monitorizar o progresso da rotação de segredos na consola do PowerShell ou no portal de administrador ao selecionar o fornecedor de recursos no serviço Marketplace:

Ecrã de rotação secreta em curso.

Nota

O tempo de rotação do segredo pode custar mais de 10 minutos. Depois de concluído, o Estado do fornecedor de recursos será alterado para "Instalado".

Recolher registos de diagnóstico

O Azure Stack Hub tem várias formas de recolher, guardar e enviar registos de diagnóstico para Suporte da Microsoft. A partir da versão 1.1.93, o Fornecedor de Recursos MySQL suporta a forma padrão de recolher registos do ambiente do Azure Stack Hub. Para obter mais informações, veja Recolha de registos de diagnósticos.

A partir da versão 1.1.93, o Fornecedor de Recursos MySQL suporta a forma padrão de recolher registos do ambiente do Azure Stack Hub. Se estiver a utilizar uma versão mais antiga, recomenda-se que atualize o Seu Fornecedor de Recursos MySQL para a versão mais recente.

Para recolher registos da VM bloqueada, utilize o ponto final DBAdapterDiagnostics do PowerShell Just Enough Administration (JEA). Este ponto final fornece os seguintes comandos:

  • Get-AzsDBAdapterLog. Este comando cria um pacote zip dos registos de diagnóstico do fornecedor de recursos e guarda o ficheiro na unidade de utilizador da sessão. Pode executar este comando sem parâmetros e as últimas quatro horas de registos são recolhidas.

  • Remove-AzsDBAdapterLog. Este comando remove os pacotes de registo existentes na VM do fornecedor de recursos.

Requisitos e processos de ponto final

Quando um fornecedor de recursos é instalado ou atualizado, é criada a conta de utilizador dbadapterdiag. Irá utilizar esta conta para recolher registos de diagnóstico.

Nota

A palavra-passe da conta dbadapterdiag é a mesma que a palavra-passe utilizada para o administrador local na VM criada durante a implementação ou atualização do fornecedor.

Para utilizar os comandos DBAdapterDiagnostics , crie uma sessão remota do PowerShell para a VM do fornecedor de recursos e execute o comando Get-AzsDBAdapterLog .

Defina o intervalo de tempo para a coleção de registos com os parâmetros FromDate e ToDate . Se não especificar um ou ambos os parâmetros, são utilizadas as seguintes predefinições:

  • FromDate é quatro horas antes da hora atual.
  • ToDate é a hora atual.

Exemplo de script do PowerShell para recolher registos:

O script seguinte mostra como recolher registos de diagnóstico da VM do fornecedor 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 fornecedor de recursos do MySQL Server Versão 1

Limitação:
Quando o script de implementação, atualização ou rotação secreta falhou, alguns registos não podem ser recolhidos pelo mecanismo de recolha de registos padrão.

Solução:
Além de utilizar o mecanismo de recolha de registos padrão, aceda à pasta Registos na pasta extraída onde o script se localiza, para encontrar mais registos.

Passos seguintes

Adicionar servidores de alojamento do Servidor MySQL