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:
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.
Abra uma sessão do PowerShell no ponto final de manutenção da VM do fornecedor de recursos MySQL.
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.
Na sessão de manutenção do PowerShell, execute o comando Update-DBAdapterWindowsDefenderDefinitions .
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.
Inicie sessão no portal de administrador do Azure Stack Hub.
Selecione Máquinas virtuais no painel à esquerda, procure a VM do adaptador do fornecedor de recursos MySQL e selecione a VM.
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.
Adicione Microsoft-AzureStack-DatabaseAdapter/Operational!* para recolher registos de eventos operacionais do fornecedor de recursos MySQL.
Para ativar a coleção de registos do IIS, verifique os registos do IIS e os registos de pedidos falhados.
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:
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.
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
- 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:
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.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.
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:
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.
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"
.-
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:
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.
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"
.-
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
.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 devolvidavalue
, 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 nomeSSLCert
.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
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:
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.