Condividi tramite


Operazioni di manutenzione del provider di risorse MySQL nell'hub di Azure Stack

Importante

A partire dalla compilazione dell'hub di Azure Stack 2108, i provider di risorse SQL e MySQL vengono offerti alle sottoscrizioni a cui è stato concesso l'accesso. Se si vuole iniziare a usare questa funzionalità o se è necessario eseguire l'aggiornamento da una versione precedente, aprire un caso di supporto e i tecnici di supporto guideranno l'utente attraverso il processo di distribuzione o aggiornamento.

Il provider di risorse MySQL viene eseguito in una macchina virtuale bloccata. Per abilitare le operazioni di manutenzione, è necessario aggiornare la sicurezza della macchina virtuale. A tale scopo, è possibile usare il principio dei privilegi minimi (POLP), è possibile usare l'endpoint di PowerShell Just Enough Administration (JEA) DBAdapterMaintenance. Il pacchetto di installazione del provider di risorse include uno script per questa operazione.

Applicazione di patch e aggiornamenti

Il provider di risorse MySQL non è in servizio come parte dell'hub di Azure Stack perché è un componente aggiuntivo. Microsoft fornisce aggiornamenti al provider di risorse MySQL in base alle esigenze.

Per MySQL RP V1, quando viene rilasciato un provider di risorse MySQL Server aggiornato, viene fornito uno script per applicare l'aggiornamento. Questo script crea una nuova macchina virtuale del provider di risorse, eseguendo la migrazione dello stato della macchina virtuale del provider precedente alla nuova macchina virtuale.

Per MySQL RP V2, i provider di risorse vengono aggiornati usando la stessa funzionalità di aggiornamento usata per applicare gli aggiornamenti dell'hub di Azure Stack.

Per altre informazioni, vedere Aggiornare il provider di risorse MySQL.

Aggiornare la macchina virtuale del provider

MySQL RP V1 viene eseguito in una macchina virtuale utente , è necessario applicare le patch e gli aggiornamenti necessari al rilascio. È possibile installare un pacchetto Windows Update durante l'installazione di o l'aggiornamento a, il provider di risorse.

MySQL RP V2 viene eseguito in un server Windows gestito nascosto. Non è necessario applicare patch o aggiornare la macchina virtuale del provider di risorse. Verrà aggiornato automaticamente quando si aggiorna il rp.

Aggiornare le definizioni di Windows Defender vm

Queste istruzioni si applicano solo a SQL RP V1 in esecuzione in Sistemi integrati dell'hub di Azure Stack.

Per aggiornare le definizioni di Defender, seguire questa procedura:

  1. Scaricare l'aggiornamento delle definizioni di Windows Defender da Windows Defender Definizione.

    Nella pagina delle definizioni scorrere verso il basso fino a "Scaricare manualmente e installare le definizioni". Scaricare il file "Windows Defender Antivirus per Windows 10 e Windows 8.1" a 64 bit.

    In alternativa, usare questo collegamento diretto per scaricare/eseguire il file di fpam-fe.exe.

  2. Aprire una sessione di PowerShell all'endpoint di manutenzione della macchina virtuale della macchina virtuale del provider di risorse MySQL.

  3. Copiare il file di aggiornamento delle definizioni nella macchina virtuale dell'adapter del provider di risorse usando la sessione dell'endpoint di manutenzione.

  4. Nella sessione di Manutenzione di PowerShell eseguire il comando Update-DBAdapterWindowsDefenderDefinitions .

  5. Dopo aver installato le definizioni, è consigliabile eliminare il file di aggiornamento delle definizioni usando il comando Remove-ItemOnUserDrive .

Esempio di script di PowerShell per l'aggiornamento delle definizioni.

È possibile modificare ed eseguire lo script seguente per aggiornare le definizioni di Defender. Sostituire i valori nello script con valori dall'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

Configurare Diagnostica di Azure estensione per il provider di risorse MySQL

Queste istruzioni si applicano solo a SQL RP V1 in esecuzione in Sistemi integrati dell'hub di Azure Stack.

L'estensione Diagnostica di Azure è installata nella macchina virtuale dell'adattatore del provider di risorse MySQL per impostazione predefinita. La procedura seguente illustra come personalizzare l'estensione per raccogliere i log eventi operativi del provider di risorse MySQL e i log IIS per la risoluzione dei problemi e il controllo.

  1. Accedere al portale dell'amministratore dell'hub di Azure Stack.

  2. Selezionare Macchine virtuali nel riquadro a sinistra, cercare la macchina virtuale dell'adapter del provider di risorse MySQL e selezionare la macchina virtuale.

  3. Nelle impostazioni di diagnostica della macchina virtuale passare alla scheda Log e scegliere Personalizzato per personalizzare i log eventi raccolti.

    Passare alle impostazioni di diagnostica

  4. Aggiungere Microsoft-AzureStack-DatabaseAdapter/Operational!* per raccogliere i log eventi operativi del provider di risorse MySQL.

    Aggiungere i log eventi

  5. Per abilitare la raccolta dei log IIS, controllare i log iis e i log delle richieste non riusciti.

    Aggiungere log IIS

  6. Infine, selezionare Salva per salvare tutte le impostazioni di diagnostica.

Una volta configurati i log eventi e la raccolta log IIS per il provider di risorse MySQL, i log sono disponibili in un account di archiviazione di sistema denominato mysqladapterdiagaccount.

Per altre informazioni sull'estensione Diagnostica di Azure, vedere Informazioni sull'estensione Diagnostica di Azure.

Rotazione dei segreti

Queste istruzioni si applicano solo ai sistemi integrati dell'hub di Azure Stack.

Quando si usano i provider di risorse SQL e MySQL con i sistemi integrati dell'hub di Azure Stack, l'operatore hub di Azure Stack è responsabile della rotazione dei segreti dell'infrastruttura del provider di risorse seguenti per assicurarsi che non scadano:

  • Certificato SSL esterno fornito durante la distribuzione.
  • Password dell'account amministratore locale della macchina virtuale del provider di risorse fornita durante la distribuzione.
  • Password dell'utente di diagnostica del provider di risorse (dbadapterdiag).
  • (versione >= 1.1.47.0) Key Vault certificato generato durante la distribuzione.

Esempi di PowerShell per la rotazione dei segreti

Modificare tutti i segreti contemporaneamente:

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

Modificare la password utente di diagnostica:

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

Modificare la password dell'account amministratore locale della macchina virtuale:

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

Ruotare il certificato SSL

.\SecretRotationMySQLProvider.ps1 `
    -Privilegedendpoint $Privilegedendpoint `
    -CloudAdminCredential $cloudCreds `
    -AzCredential $adminCreds `
    -DependencyFilesLocalPath $certPath `
    -DefaultSSLCertificatePassword $certPasswd

Ruotare il certificato di Key Vault

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

parametri SecretRotationMySQLProvider.ps1

Parametro Descrizione Comment
AzureEnvironment Ambiente di Azure dell'account amministratore del servizio usato per la distribuzione dell'hub di Azure Stack. Obbligatorio solo per le distribuzioni di Microsoft Entra. I nomi di ambiente supportati sono AzureCloud, AzureUSGovernment o se si usa un ID cina Microsoft Entra, AzureChinaCloud. Facoltativo
AzCredential Credenziali dell'account amministratore del servizio hub di Azure Stack. Lo script avrà esito negativo se l'account usato con AzCredential richiede l'autenticazione a più fattori ( MFA). Obbligatorio
CloudAdminCredential Credenziali dell'account di dominio amministratore cloud di Azure Stack Hub. Obbligatorio
PrivilegedEndpoint Endpoint con privilegi per accedere a Get-AzureStackStampInformation. Obbligatorio
DiagnosticsUserPassword Password dell'account utente di diagnostica. Facoltativo
VMLocalCredential Account amministratore locale nella macchina virtuale MySQLAdapter. Facoltativo
DefaultSSLCertificatePassword Password del certificato SSL predefinito (*.pfx). Facoltativo
DependencyFilesLocalPath Percorso locale dei file di dipendenza. Facoltativo
KeyVaultPfxPassword Password usata per generare il certificato di Key Vault per la scheda di database. Facoltativo

Queste istruzioni si applicano solo a MySQL RP V2 in esecuzione in Sistemi integrati dell'hub di Azure Stack.

Nota

La rotazione dei segreti per i provider di risorse aggiuntivi (RPS) è attualmente supportata solo tramite PowerShell.

Come l'infrastruttura dell'hub di Azure Stack, anche i provider di risorse a valore aggiunto usano segreti interni ed esterni. Agli operatori vengono affidate le seguenti responsabilità:

  • Fornire segreti esterni aggiornati, ad esempio un nuovo certificato TLS per proteggere gli endpoint del provider di risorse.

  • Gestione della rotazione dei segreti del provider di risorse su base regolare.

Quando i segreti si avvicinano alla scadenza, gli avvisi seguenti vengono generati nel portale di amministrazione. Completando la rotazione dei segreti sarà possibile risolvere gli avvisi:

  • In attesa di scadenza del certificato interno

  • In attesa di scadenza del certificato esterno

Prerequisiti

In preparazione del processo di rotazione:

  1. Se non è già stato fatto, installare il modulo Az di PowerShell per l'hub di Azure Stack prima di continuare. Per la rotazione dei segreti dell'hub di Azure Stack è necessaria la versione 2.0.2-preview o successiva. Per altre informazioni, vedere Eseguire la migrazione da AzureRM ad Azure PowerShell Az nell'hub di Azure Stack.

  2. Installare Azs.Deployment. moduli Amministrazione 1.0.0: PowerShell Gallery | Azs.Deployment. Amministrazione 1.0.0

Install-Module -Name Azs.Deployment.Admin
  1. Se il certificato esterno si avvicina alla scadenza, esaminare i requisiti del certificato dell'infrastruttura pubblica pkI (Public Key Infrastructure) dell'hub di Azure Stack per informazioni importanti sui prerequisiti prima di acquisire/rinnovare il certificato X509, inclusi i dettagli sul formato PFX richiesto. Consultare i requisiti specificati nella sezione sui certificati PaaS facoltativi per il provider di risorse a valore aggiunto specifico.

Preparare un nuovo certificato TLS per la rotazione del certificato esterno

Nota

Se solo il certificato interno è vicino alla scadenza, è possibile ignorare questa sezione.

Creare o rinnovare quindi il certificato TLS per proteggere gli endpoint del provider di risorse a valore aggiunto:

  1. Completare la procedura illustrata in Generare richieste di firma del certificato per il rinnovo del certificato per il provider di risorse interessato. In questo caso si userà lo strumento Controllo conformità dell'hub di Azure Stack per creare la richiesta di firma del certificato. Assicurarsi di eseguire il cmdlet corretto per il provider di risorse, come specificato in "Generare richieste di certificato per altri servizi dell'hub di Azure Stack". Ad esempio New-AzsDbAdapterCertificateSigningRequest , viene usato per gli indirizzi IP SQL e MySQL. Al termine, si invia l'oggetto generato. File REQ nell'autorità di certificazione (CA) per il nuovo certificato.

  2. Dopo aver ricevuto il file di certificato dall'autorità di certificazione, completare la procedura descritta in Preparare i certificati per la distribuzione o la rotazione. Per elaborare il file restituito dall'autorità di certificazione, si userà nuovamente lo strumento Controllo conformità.

  3. Completare infine la procedura illustrata in Convalida dei certificati PKI dell'hub di Azure Stack. Per eseguire i test di convalida del nuovo certificato, si userà ancora una volta lo strumento Controllo conformità.

Ruotare il certificato interno

Aprire una console di PowerShell con privilegi elevati e completare i passaggi seguenti per ruotare i segreti esterni del provider di risorse:

  1. Accedere all'ambiente dell'hub di Azure Stack usando le credenziali di operatore. Vedere Connettersi all'hub di Azure Stack con PowerShell per lo script di accesso di PowerShell. Assicurarsi di usare i cmdlet di PowerShell Az (anziché di AzureRM) e sostituire tutti i valori segnaposto, ad esempio gli URL dell'endpoint e il nome del tenant della directory.

  2. Determinare l'ID prodotto del provider di risorse. Eseguire il cmdlet Get-AzsProductDeployment per recuperare un elenco delle distribuzioni più recenti del provider di risorse. Nella raccolta "value" restituita è contenuto un elemento per ogni provider di risorse distribuito. Trovare il provider di risorse di interesse e prendere nota dei valori delle proprietà seguenti:

    • "name" - Contiene l'ID prodotto del provider di risorse nel secondo segmento del valore.

    Ad esempio, la distribuzione di MySQL RP può avere un ID prodotto di "microsoft.mysqlrp".

  3. Eseguire il cmdlet per ruotare il Invoke-AzsProductRotateSecretsAction certificato interno:

    Invoke-AzsProductRotateSecretsAction -ProductId $productId
    

Ruotare il certificato esterno

È prima necessario prendere nota dei valori per i parametri seguenti.

Segnaposto Descrizione Valore di esempio
<product-id> ID prodotto della distribuzione più recente del provider di risorse. microsoft.mysqlrp
<installed-version> Versione della distribuzione più recente del provider di risorse. 2.0.0.2
<package-id> L'ID pacchetto viene compilato concatenando l'ID prodotto e la versione installata. microsoft.mysqlrp.2.0.0.2
<cert-secret-name> Nome in cui viene archiviato il segreto del certificato. SSLCert
<cert-pfx-file-path> Percorso del file PFX del certificato. C:\dir\dbadapter-cert-file.pfx
<pfx-password> Password assegnata al certificato . File PFX. strong@CertSecret6

Aprire una console di PowerShell con privilegi elevati e completare la procedura seguente:

  1. Accedere all'ambiente dell'hub di Azure Stack usando le credenziali di operatore. Vedere Connettersi all'hub di Azure Stack con PowerShell per lo script di accesso di PowerShell. Assicurarsi di usare i cmdlet di PowerShell Az (anziché di AzureRM) e sostituire tutti i valori segnaposto, ad esempio gli URL dell'endpoint e il nome del tenant della directory.

  2. Ottenere il valore del parametro product-id. Eseguire il cmdlet Get-AzsProductDeployment per recuperare un elenco delle distribuzioni più recenti del provider di risorse. Nella raccolta "value" restituita è contenuto un elemento per ogni provider di risorse distribuito. Trovare il provider di risorse di interesse e prendere nota dei valori delle proprietà seguenti:

    • "name" - Contiene l'ID prodotto del provider di risorse nel secondo segmento del valore.
    • "properties"."deployment"."version" - Contiene il numero di versione attualmente distribuito.

    Ad esempio, la distribuzione di MySQL RP può avere un ID prodotto di "microsoft.mysqlrp"e versione "2.0.0.2".

  3. Compilare l'ID pacchetto del provider di risorse concatenando l'ID prodotto e la versione del provider di risorse. Ad esempio, usando i valori derivati nel passaggio precedente, l'ID pacchetto RP SQL è microsoft.mysqlrp.2.0.0.2.

  4. Usando l'ID pacchetto ottenuto nel passaggio precedente, eseguire Get-AzsProductSecret -PackageId per recuperare l'elenco di tipi segreti usati dal provider di risorse. Nella raccolta value restituita individuare l'elemento contenente il valore "Certificate" per la proprietà "properties"."secretKind". Questo elemento conterrà le proprietà relative al segreto del certificato del provider di risorse. Annotare il nome assegnato al segreto del certificato, identificato dall'ultimo segmento della proprietà "name", appena sopra "properties".

    Ad esempio, la raccolta segreti restituita per l'RP SQL contiene un "Certificate" segreto denominato SSLCert.

  5. Usare il cmdlet Set-AzsProductSecret per importare in Key Vault il nuovo certificato, che verrà usato dal processo di rotazione. Sostituire i valori segnaposto delle variabili di conseguenza prima di eseguire lo 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. Infine, usare il Invoke-AzsProductRotateSecretsAction cmdlet per ruotare i segreti:

    Invoke-AzsProductRotateSecretsAction -ProductId $productId
    

Monitorare lo stato di rotazione del segreto

È possibile monitorare lo stato di avanzamento della rotazione dei segreti nella console di PowerShell o nel portale di amministrazione selezionando il provider di risorse interessato nel servizio Marketplace:

Schermata della rotazione del segreto in corso.

Nota

Il tempo di rotazione del segreto potrebbe costare più di 10 minuti. Al termine, lo stato del provider di risorse verrà modificato in "Installato".

Raccogliere i log di diagnostica

L'hub di Azure Stack offre diversi modi per raccogliere, salvare e inviare log di diagnostica a supporto tecnico Microsoft. A partire dalla versione 1.1.93, Il provider di risorse MySQL supporta il modo standard di raccolta dei log dall'ambiente hub di Azure Stack. Per altre informazioni, vedere Raccolta log di diagnostica.

A partire dalla versione 1.1.93, Il provider di risorse MySQL supporta il modo standard di raccolta dei log dall'ambiente hub di Azure Stack. Se si usa una versione precedente, è consigliabile aggiornare il provider di risorse MySQL alla versione più recente.

Per raccogliere i log dalla macchina virtuale bloccata, usare l'endpoint DBAdapterDiagnostics (PowerShell Just Enough Administration). Questo endpoint fornisce i comandi seguenti:

  • Get-AzsDBAdapterLog. Questo comando crea un pacchetto zip dei log di diagnostica del provider di risorse e salva il file nell'unità utente della sessione. È possibile eseguire questo comando senza parametri e vengono raccolte le ultime quattro ore di log.

  • Remove-AzsDBAdapterLog. Questo comando rimuove i pacchetti di log esistenti nella macchina virtuale del provider di risorse.

Requisiti e processi degli endpoint

Quando viene installato o aggiornato un provider di risorse, viene creato l'account utente dbadapterdiag. Si userà questo account per raccogliere i log di diagnostica.

Nota

La password dell'account dbadapterdiag corrisponde alla password usata per l'amministratore locale nella macchina virtuale creata durante una distribuzione o un aggiornamento del provider.

Per usare i comandi DBAdapterDiagnostics , creare una sessione remota di PowerShell nella macchina virtuale del provider di risorse ed eseguire il comando Get-AzsDBAdapterLog .

Per impostare l'intervallo di tempo per la raccolta di log, usare i parametri FromDate e ToDate . Se non si specifica uno o entrambi questi parametri, vengono usate le impostazioni predefinite seguenti:

  • FromDate è quattro ore prima dell'ora corrente.
  • ToDate è l'ora corrente.

Esempio di script di PowerShell per la raccolta dei log:

Lo script seguente illustra come raccogliere i log di diagnostica dalla macchina virtuale del provider di risorse.

# 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

Limitazioni note del provider di risorse mySQL Server versione 1

Limitazione:
Quando lo script di distribuzione, aggiornamento o rotazione dei segreti non è riuscito, alcuni log non possono essere raccolti dal meccanismo di raccolta dei log standard.

Soluzione alternativa:
Oltre a usare il meccanismo di raccolta dei log standard, passare alla cartella Logs nella cartella estratta in cui si trova lo script, per trovare altri log.

Passaggi successivi

Aggiungere server di hosting di MySQL Server