Compartir a través de


Operaciones de mantenimiento del proveedor de recursos MySQL en Azure Stack Hub

Importante

A partir de la compilación 2108 de Azure Stack Hub, los proveedores de recursos SQL y MySQL se ofrecen a las suscripciones a las que se ha concedido acceso. Si desea empezar a usar esta característica o si necesita actualizar desde una versión anterior, abra un caso de soporte técnico y nuestros ingenieros le guiarán a través del proceso de implementación o actualización.

El proveedor de recursos MySQL se ejecuta en una máquina virtual (VM) bloqueada. Para habilitar las operaciones de mantenimiento, debe actualizar la seguridad de la VM. Para hacerlo con el principio de privilegio mínimo (POLP), puede usar el punto de conexión de JEA (Just Enough Administration) de PowerShell DBAdapterMaintenance. El paquete de instalación del proveedor de recursos incluye un script para esta operación.

Revisiones y actualizaciones

El proveedor de recursos MySQL no se suministra como parte de Azure Stack Hub porque es un componente complementario. Microsoft proporciona las actualizaciones para el proveedor de recursos MySQL según sea necesario.

En el caso del proveedor de recursos MySQL V1, cuando se publica un proveedor de recursos MySQL Server actualizado, se proporciona un script para aplicar la actualización. Este script crea una nueva VM de proveedor de recursos, que migra el estado de la VM del proveedor antigua a la VM nueva.

En el caso del proveedor de recursos MySQL V2, los proveedores de recursos se actualizan con la misma característica de actualización que se usa para aplicar las actualizaciones de Azure Stack Hub.

Para más información, consulte Actualización del proveedor de recursos MySQL.

Actualización de la máquina virtual del proveedor

El proveedor de recursos MySQL V1 se ejecuta en la máquina virtual de un usuario, debe aplicar las revisiones y actualizaciones necesarias cuando se publiquen. Puede instalar un paquete de Windows Update durante la instalación o actualización del proveedor de recursos.

El proveedor de recursos MySQL V2 se ejecuta en una instancia administrada de Windows Server que está oculta. No es necesario aplicar revisiones a la máquina virtual del proveedor de recursos ni actualizarla. Se actualizará automáticamente al actualizar el proveedor de recursos.

Actualización de las definiciones de Windows Defender de la VM

Estas instrucciones se aplican solo al proveedor de recursos SQL V1 que se ejecuta en sistemas integrados de Azure Stack Hub.

Siga estos pasos para actualizar las definiciones de Defender:

  1. Descargue la actualización de las definiciones de Windows Defender desde esta página.

    En la página de definiciones, desplácese a "Manually download and install the definitions" (Descargar e instalar manualmente las definiciones). Descargue el archivo "Windows Defender Antivirus for Windows 10 and Windows 8.1" de 64 bits.

    De forma alternativa, use este vínculo directo para descargar o ejecutar el archivo fpam-fe.exe.

  2. Abra una sesión de PowerShell en el punto de conexión de mantenimiento de la VM del adaptador del proveedor de recursos MySQL.

  3. Copie el archivo de actualización de definiciones en la máquina virtual del adaptador del proveedor de recursos mediante la sesión del punto de conexión de mantenimiento.

  4. En la sesión de PowerShell de mantenimiento, ejecute el comando Update-DBAdapterWindowsDefenderDefinitions.

  5. Después de instalar las definiciones, se recomienda eliminar el archivo de actualización de definiciones mediante el comando Remove-ItemOnUserDrive.

Ejemplo de script de PowerShell para actualizar definiciones.

Para actualizar las definiciones de Defender se puede editar y ejecutar el script siguiente. Reemplace los valores del script por los de su entorno.

# 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

Configure la extensión Azure Diagnostics para un proveedor de recursos de MySQL

Estas instrucciones se aplican solo al proveedor de recursos SQL V1 que se ejecuta en sistemas integrados de Azure Stack Hub.

La extensión Azure Diagnostics está instalada de manera predeterminada en la máquina virtual del adaptador del proveedor de recursos de MySQL. Los siguientes pasos muestran cómo personalizar la extensión para recopilar los registros de eventos de operaciones del proveedor de recursos de MySQL y los registros de IIS, con el fin de solucionar problemas o realizar auditorías.

  1. Inicie sesión en el Portal de administración de Azure Stack Hub.

  2. Select Máquinas virtuales en el panel de la izquierda, busque la máquina virtual del adaptador del proveedor de recursos de MySQL y selecciónela.

  3. En Configuración de diagnóstico de la máquina virtual, vaya a la pestaña Registros y elija Personalizado para personalizar los registros de eventos que se recopilan.

    Ir a la configuración de diagnóstico

  4. Agregue Microsoft-AzureStack-DatabaseAdapter/Operational!* para recopilar los registros de eventos operativos del proveedor de recursos de MySQL.

    Agregar registros de eventos

  5. Para habilitar la colección de registros de IIS, marque Registros de IIS y Error en registros de solicitudes.

    Agregar registros de IIS

  6. Por último, seleccione Guardar para guardar la configuración de diagnóstico.

Una vez que la colección de registros de eventos y registros de IIS está configurada para el proveedor de recursos de MySQL, los registros se pueden encontrar en una cuenta de almacenamiento del sistema denominada mysqladapterdiagaccount.

Para más información acerca de la extensión Azure Diagnostics, consulte Qué es la extensión Azure Diagnostics.

Cambio de secretos

Estas instrucciones se aplican solo a sistemas integrados de Azure Stack Hub.

Al usar los proveedores de recursos SQL y MySQL con sistemas integrados de Azure Stack Hub, el operador de Azure Stack Hub se encarga de rotar los siguientes secretos de la infraestructura del proveedor de recursos para asegurarse de que no caduquen:

  • Certificado SSL externo proporcionado durante la implementación.
  • La contraseña de la cuenta de administrador local de la máquina virtual del proveedor de recursos proporcionada durante la implementación.
  • Contraseña de usuario de diagnóstico del proveedor de recursos (dbadapterdiag).
  • (Versión >= 1.1.47.0) Certificado de Key Vault generado durante la implementación.

Ejemplos de PowerShell de cambio de secretos

Cambio de todos los secretos al mismo tiempo:

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

Cambio de la contraseña de usuario de diagnóstico:

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

Cambio de la contraseña de la cuenta de administrador local de la VM:

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

Rotación del certificado SSL

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

Rotación del certificado de Key Vault

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

Parámetros de SecretRotationMySQLProvider.ps1

Parámetro Descripción Comentario
AzureEnvironment Entorno de Azure de la cuenta de administrador de servicios que se usó para la implementación de Azure Stack Hub. Solo se requiere para las implementaciones de Microsoft Entra. Los nombres de entorno admitidos son AzureCloud, AzureUSGovernment o si se usa un identificador de Microsoft Entra de China, AzureChinaCloud. Opcional
AzCredential Credencial de la cuenta de administrador de servicios de Azure Stack Hub. Se producirá un error en el script si la cuenta que usa con AzCredential requiere autenticación multifactor (MFA). Mandatory
CloudAdminCredential Credencial de la cuenta de dominio de administración en la nube de Azure Stack Hub. Mandatory
PrivilegedEndpoint Punto de conexión con privilegios para acceder a Get-AzureStackStampInformation. Mandatory
DiagnosticsUserPassword Contraseña de la cuenta de usuario de diagnóstico. Opcional
VMLocalCredential Cuenta de administrador local en la VM MySQLAdapter. Opcional
DefaultSSLCertificatePassword Contraseña del certificado SSL predeterminado (*.pfx). Opcional
DependencyFilesLocalPath Ruta de acceso local de los archivos de dependencia. Opcional
KeyVaultPfxPassword Contraseña que se usa para generar el certificado de Key Vault para el adaptador de la base de datos. Opcional

Estas instrucciones se aplican solo al proveedor de recursos MySQL V2 que se ejecuta en sistemas integrados de Azure Stack Hub.

Nota:

La rotación de secretos para proveedores de recursos de valor agregado solo se admite actualmente mediante PowerShell.

Al igual que la infraestructura de Azure Stack Hub, los proveedores de recursos de valor añadido usan tanto secretos internos como externos. Como operador, es responsable de:

  • Proporcionar secretos externos actualizados, como un nuevo certificado TLS que se usa para proteger los puntos de conexión del proveedor de recursos.

  • Administrar la rotación de secretos del proveedor de recursos de forma periódica.

Cuando se aproxime la expiración de los secretos, se generan las siguientes alertas en el portal de administración. La finalización de la rotación de secretos resolverá estas alertas:

  • Expiración de certificado interno pendiente

  • Expiración de certificado externo pendiente

Requisitos previos

Como preparación para el proceso de rotación:

  1. Si no lo ha hecho ya, instale el módulo Az de PowerShell para Azure Stack Hub antes de continuar. Es necesaria la versión 2.0.2-preview o posterior para la rotación de secretos de Azure Stack Hub. Consulte Migración desde AzureRM al módulo Az de Azure PowerShell en Azure Stack Hub para más información.

  2. Instale los módulos Azs.Deployment.Admin 1.0.0: Galería de PowerShell | Azs.Deployment.Admin 1.0.0

Install-Module -Name Azs.Deployment.Admin
  1. Si el certificado externo se encuentra cerca de su fecha de expiración, consulte Requisitos de certificados de la infraestructura de clave pública (PKI) de Azure Stack Hub para obtener información importante sobre los requisitos previos antes de adquirir o renovar el certificado X509, incluidos los detalles sobre el formato PFX requerido. Revise también los requisitos especificados en la sección Certificados de PaaS opcionales para su proveedor de recursos de valor añadido específico.

Preparación de un nuevo certificado TLS para la rotación de certificados externos

Nota

Si solo el certificado interno está a punto de expirar, puede omitir esta sección.

A continuación, cree o renueve el certificado TLS para proteger los puntos de conexión del proveedor de recursos de valor añadido:

  1. Complete los pasos descritos en Generación de solicitudes de firma de certificados para la renovación de certificados para el proveedor de recursos. Aquí se usa la herramienta Readiness Checker de Azure Stack Hub para crear la CSR. Asegúrese de ejecutar el cmdlet correcto para el proveedor de recursos, en el paso "generar solicitudes de certificado para otros servicios de Azure Stack Hub". Por ejemplo, New-AzsDbAdapterCertificateSigningRequest se usa para los proveedores de recursos SQL y MySQL. Cuando termine, envíe el archivo .REQ generado a la entidad de certificación (CA) para el nuevo certificado.

  2. Una vez que haya recibido el archivo de certificado de la CA, complete los pasos que se describen en el artículo sobre la preparación de certificados para la implementación o rotación. Se utiliza de nuevo la herramienta Readiness Checker para procesar el archivo devuelto por la CA.

  3. Por último, complete los pasos descritos en Validación de los certificados PKI de Azure Stack Hub. Utilice una vez más la herramienta Readiness Checker para realizar pruebas de validación en el nuevo certificado.

Rotación de los certificados internos

Abra una consola de PowerShell con privilegios elevados y complete los pasos siguientes para rotar los secretos externos del proveedor de recursos:

  1. Inicie sesión en el entorno de Azure Stack Hub con sus credenciales de operador. Consulte Conexión a Azure Stack Hub con PowerShell para el script de inicio de sesión de PowerShell. Asegúrese de usar los cmdlets Az de PowerShell (en lugar de AzureRM) y reemplazar todos los valores de marcador de posición, como las direcciones URL del punto de conexión y el nombre de inquilino del directorio.

  2. Determine el product-id del proveedor de recursos. Ejecute el cmdlet Get-AzsProductDeployment para recuperar una lista de las implementaciones más recientes del proveedor de recursos. La colección "value" devuelta contiene un elemento para cada proveedor de recursos implementado. Busque el proveedor de recursos de interés y tome nota de los valores de estas propiedades:

    • "name": contiene el identificador de producto del proveedor de recursos en el segundo segmento del valor.

    Por ejemplo, la implementación del proveedor de recursos MySQL puede tener un identificador de producto "microsoft.mysqlrp".

  3. Ejecute el cmdlet Invoke-AzsProductRotateSecretsAction para rotar el certificado interno:

    Invoke-AzsProductRotateSecretsAction -ProductId $productId
    

Rotación de los certificados externos

Primero debe tomar nota de los valores de los parámetros siguientes.

Marcador de posición Descripción Valor de ejemplo
<product-id> Identificador de producto de la última implementación del proveedor de recursos. microsoft.mysqlrp
<installed-version> Versión de la última implementación del proveedor de recursos. 2.0.0.2
<package-id> El identificador del paquete se basa en la concatenación del product-id y installed-version. microsoft.mysqlrp.2.0.0.2
<cert-secret-name> Nombre con el que se almacena el secreto del certificado. SSLCert
<cert-pfx-file-path> Ruta de acceso al archivo PFX del certificado. C:\dir\dbadapter-cert-file.pfx
<pfx-password> Contraseña asignada al archivo .PFX del certificado. strong@CertSecret6

Abra una consola de PowerShell con privilegios elevados y complete los pasos siguientes:

  1. Inicie sesión en el entorno de Azure Stack Hub con sus credenciales de operador. Consulte Conexión a Azure Stack Hub con PowerShell para el script de inicio de sesión de PowerShell. Asegúrese de usar los cmdlets Az de PowerShell (en lugar de AzureRM) y reemplazar todos los valores de marcador de posición, como las direcciones URL del punto de conexión y el nombre de inquilino del directorio.

  2. Obtenga el valor del parámetro product-id. Ejecute el cmdlet Get-AzsProductDeployment para recuperar una lista de las implementaciones más recientes del proveedor de recursos. La colección "value" devuelta contiene un elemento para cada proveedor de recursos implementado. Busque el proveedor de recursos de interés y tome nota de los valores de estas propiedades:

    • "name": contiene el identificador de producto del proveedor de recursos en el segundo segmento del valor.
    • "properties"."deployment"."version": contiene el número de versión implementado actualmente.

    Por ejemplo, la implementación del proveedor de recursos MySQL puede tener un identificador de producto "microsoft.mysqlrp" y la versión "2.0.0.2".

  3. Construya el identificador de paquete del proveedor de recursos mediante la concatenación del identificador de producto y la versión del proveedor de recursos. Por ejemplo, con los valores que se derivan del paso anterior, el identificador de paquete del proveedor de recursos SQL es microsoft.mysqlrp.2.0.0.2.

  4. Con el identificador de paquete derivado del paso anterior, ejecute Get-AzsProductSecret -PackageId para recuperar la lista de tipos de secreto utilizados por el proveedor de recursos. En la colección value devuelta, busque el elemento que contiene el valor "Certificate" para la propiedad "properties"."secretKind". Este elemento contiene las propiedades del secreto del certificado del proveedor de recursos. Anote el nombre asignado a este secreto del certificado, que se identifica mediante el último segmento de la propiedad "name", justo encima de "properties".

    Por ejemplo, la colección de secretos devuelta para el proveedor de recursos SQL contiene un secreto "Certificate" llamado SSLCert.

  5. Use el cmdlet Set-AzsProductSecret para importar el nuevo certificado en Key Vault, que se usará en el proceso de rotación. Reemplace los valores de marcador de posición de las variables como corresponda antes de ejecutar el 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 último, use el cmdlet Invoke-AzsProductRotateSecretsAction para rotar los secretos:

    Invoke-AzsProductRotateSecretsAction -ProductId $productId
    

Supervisión del progreso de la rotación de secretos

Puede supervisar el progreso de la rotación de secretos en la consola de PowerShell o en el portal de administración; para ello, seleccione el proveedor de recursos en el servicio Marketplace:

Pantalla de rotación de secretos en curso.

Nota

El tiempo de rotación de secretos puede durar más de 10 minutos. Una vez hecho esto, el estado del proveedor de recursos cambiará a "Instalado".

Recopilación de registros de diagnóstico

Azure Stack Hub tiene varias maneras de recopilar, guardar y enviar registros de diagnóstico a Soporte técnico de Microsoft. A partir de la versión 1.1.93, el proveedor de recursos de MySQL admite la manera estándar de recopilar registros de su entorno de Azure Stack Hub. Para obtener más información, consulte Recopilación de registros de diagnóstico.

A partir de la versión 1.1.93, el proveedor de recursos de MySQL admite la manera estándar de recopilar registros de su entorno de Azure Stack Hub. Si usa una versión anterior, se recomienda que actualice el proveedor de recursos de MySQL a la versión más reciente.

Para recopilar registros de la VM bloqueada, se puede usar el punto de conexión DBAdapterDiagnostics de JEA (Just Enough Administration) de PowerShell. Este punto de conexión proporciona los comandos siguientes:

  • Get-AzsDBAdapterLog. Este comando crea un paquete ZIP con los registros de diagnóstico del proveedor de recursos y guarda el archivo en la unidad del usuario de la sesión. Este comando se puede ejecutar sin ningún parámetro y se recopilan los registros de las últimas cuatro horas.

  • Remove-AzsDBAdapterLog. Este comando quita los paquetes de registros existentes en la máquina virtual del proveedor de recursos.

Requisitos y proceso del punto de conexión

Cuando se instala o actualiza un proveedor de recursos, se crea la cuenta de usuario dbadapterdiag. Esta cuenta se usará para recopilar registros de diagnóstico.

Nota:

La contraseña de la cuenta dbadapterdiag es la misma que se usa para el administrador local en la VM creada durante la implementación o actualización de un proveedor.

Para usar los comandos DBAdapterDiagnostics, cree una sesión remota de PowerShell para la VM del proveedor de recursos y ejecute el comando Get-AzsDBAdapterLog.

Establezca el intervalo de tiempo para la recopilación de registros mediante los parámetros FromDate y ToDate. Si no se especifica uno de estos parámetros (o ambos), se utilizan los valores predeterminados siguientes:

  • FromDate es cuatro horas antes de la hora actual.
  • ToDate es la hora actual.

Ejemplo de script de PowerShell para recopilar registros:

El siguiente script muestra cómo recopilar registros de diagnóstico de la máquina virtual del proveedor 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

Limitaciones conocidas de la versión 1 del proveedor de recursos MySQL Server

Limitación:
Cuando haya un error en el script de implementación, actualización o rotación de secretos, el mecanismo estándar de recopilación de registros no puede recopilar algunos registros.

Solución alternativa:
Además de usar el mecanismo estándar de recopilación de registros, vaya a la carpeta Logs de la carpeta extraída donde se encuentra el script para buscar más registros.

Pasos siguientes

Adición de servidores de hospedaje de MySQL Server