Operações de manutenção do fornecedor de recursos SQL

Importante

A partir da compilação 2108 do Azure Stack Hub, os fornecedores de recursos DO SQL e MySQL são oferecidos a subscrições às quais 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 pedido 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 do SQL é executado numa máquina virtual (VM) bloqueada. Para ativar as operações de manutenção, tem de atualizar a segurança da VM. Para o fazer com o princípio de Privilégio Mínimo, utilize o ponto final de Administração Just Enough (JEA) do PowerShellDBAdapterMaintenance. O pacote de instalação do fornecedor de recursos inclui um script para esta ação.

Aplicação de patches e atualização

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

Para o RP V1 do SQL, quando é lançado um fornecedor de recursos SQL 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 SQL, os fornecedores de recursos são atualizados com a mesma funcionalidade de atualização utilizada para aplicar atualizações do Azure Stack Hub.

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

Atualizar a VM do fornecedor

O RP V1 do SQL é 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 do fornecedor de recursos ou atualizá-lo.

O RP V2 do SQL é executado num Windows Server gerido que está oculto. Não precisa de aplicar patches 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 RP V1 do SQL em execução nos Sistemas Integrados do Azure Stack Hub.

Para atualizar as definições de Windows Defender:

  1. Transfira a atualização de definições de Windows Defender a partir de Atualizações de informações de segurança para Windows Defender.

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

    Também pode utilizar esta ligação direta para transferir/executar o ficheiro de fpam-fe.exe.

  2. Crie uma sessão do PowerShell para o ponto final de manutenção da VM do fornecedor de recursos do SQL.

  3. Copie o ficheiro de atualização de definições para a VM 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 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 the Windows Defender update definitions file from https://www.microsoft.com/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 SQL

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

Diagnóstico do Azure extensão está instalada na VM do adaptador do fornecedor de recursos do SQL por predefinição. Os passos seguintes mostram como personalizar a extensão para recolher os registos de eventos operacionais do fornecedor de recursos SQL 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 DO SQL e selecione a VM.

  3. Em 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 SQL. Adicionar registos de eventos

  5. Para ativar a recolha 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 do SQL, os registos podem ser encontrados numa conta de armazenamento do sistema denominada sqladapterdiagaccount.

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

Atualizar as credenciais do SQL

É responsável por criar e manter contas sysadmin nos servidores SQL. O fornecedor de recursos precisa de uma conta com estes privilégios para gerir bases de dados para os utilizadores, mas não precisa de acesso aos dados dos utilizadores. Se precisar de atualizar as palavras-passe de sysadmin nos seus servidores SQL, pode utilizar a interface de administrador do fornecedor de recursos para alterar uma palavra-passe armazenada. Estas palavras-passe são armazenadas num Key Vault na instância do Azure Stack Hub.

Para modificar as definições, selecione ProcurarRECURSOS ADMINISTRATIVOS Inícios> de Sessão doSQL Hosting Servers> eselecione> um nome de utilizador. A alteração tem de ser feita primeiro na instância do SQL (e em quaisquer réplicas, se necessário.) Em Definições, selecione Palavra-passe.

Atualizar a palavra-passe de administrador do SQL

Rotação de segredos

Estas instruções aplicam-se apenas ao RP V1 do SQL em execução nos 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 do 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

Importante

A rotação de segredos com êxito requer a remoção de quaisquer versões existentes dos módulos do PowerShell do Azure Stack Hub, antes de executar o script abaixo.

Altere todos os segredos ao mesmo tempo.

.\SecretRotationSQLProvider.ps1 `
    -Privilegedendpoint $Privilegedendpoint `
    -CloudAdminCredential $cloudCreds `
    -AzCredential $adminCreds `
    -DiagnosticsUserPassword $passwd `
    -DependencyFilesLocalPath $certPath `
    -DefaultSSLCertificatePassword $certPasswd  `
    -VMLocalCredential $localCreds `
    -KeyVaultPfxPassword $keyvaultCertPasswd

Altere a palavra-passe de utilizador de diagnóstico.

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

Altere a palavra-passe da conta de administrador local da VM.

.\SecretRotationSQLProvider.ps1 `
    -Privilegedendpoint $Privilegedendpoint `
    -CloudAdminCredential $cloudCreds `
    -AzCredential $adminCreds `
    -VMLocalCredential $localCreds

Rodar o certificado SSL

.\SecretRotationSQLProvider.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 SecretRotationSQLProvider.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 estiver a utilizar um ID de Microsoft Entra da China, o AzureChinaCloud. Opcional
AzCredential Credencial da conta de administrador do serviço Azure Stack Hub. O script falhará se a conta que utiliza com o AzCredential exigir a autenticação multifator (MFA). Obrigatório
CloudAdminCredential Credencial da conta de domínio de administrador 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 Conta de administrador local na VM MySQLAdapter. Opcional
DefaultSSLCertificatePassword Palavra-passe de certificado SSL predefinida (*.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 SQL RP V2 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 do SQL pode ter um ID de produto de "microsoft.sqlrp".

  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.sqlrp
<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.sqlrp.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 do SQL pode ter um ID de produto do e da "microsoft.sqlrp"versão "2.0.0.2".

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

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

  1. 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
    
  2. 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 sqL 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 sqL 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 Fornecedor de Recursos do SQL 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

# Clean up the logs.
$cleanup = Invoke-Command -Session $session -ScriptBlock {Remove-AzsDBAdapterLog}
# Close the session.
$session | Remove-PSSession

Limitações conhecidas do fornecedor de recursos SQL 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 SQL Server servidores de alojamento