Azure Stack Hub 中的 MySQL 資源提供者維護作業
重要
從 Azure Stack Hub 組建 2108 開始,SQL 和 MySQL 資源提供者會提供給已授與存取權的訂用帳戶。 如果您想要開始使用這項功能,或需要從舊版升級,開啟支援案例,我們的支援工程師會引導您完成部署或升級程式。
MySQL 資源提供者會在鎖定的虛擬機 (VM) 上執行。 若要啟用維護作業,您必須更新 VM 的安全性。 若要遵循最低許可權原則(POLP)來執行此動作,您可以使用 PowerShell Just Enough Administration (JEA) 端點 DBAdapterMaintenance。 資源提供者安裝套件包含此作業的腳本。
修補和更新
MySQL 資源提供者不會作為 Azure Stack Hub 的一部分提供服務,因為它是附加元件。 Microsoft 根據需要提供 MySQL 資源提供者的更新。
針對 MySQL RP V1,發行更新的 MySQL Server 資源提供者時,會提供腳本以套用更新。 此腳本會建立新的資源提供者 VM,並將舊提供者 VM 的狀態移轉至新的 VM。
針對 MySQL RP V2,資源提供者會使用用來套用 Azure Stack Hub 更新的相同更新功能來更新。
如需詳細資訊,請參閱 更新 MySQL 資源提供者。
更新提供者的虛擬機器
MySQL RP V1 會在 使用者 VM 上執行,您必須在發行時套用必要的修補程式和更新。 在安裝或更新資源提供者時,您可以安裝 Windows Update 套件。
MySQL RP V2 會在隱藏的受控 Windows Server 上執行。 您不需要修補或更新資源提供者 VM。 當您更新 RP 時,會自動更新它。
更新 VM Windows Defender 定義
這些指示僅適用於在 Azure Stack Hub 整合式系統上執行的 SQL RP V1。
若要更新 Defender 定義,請遵循下列步驟:
從 Windows Defender 定義下載定義更新檔。
在定義頁面上,向下捲動至 [手動下載並安裝定義]。 下載「適用於 Windows 10 和 Windows 8.1 的 Windows Defender 防病毒軟體」64 位檔案。
或者,請使用 此直接連結 下載/執行 fpam-fe.exe 檔案。
開啟 PowerShell 會話連接至 MySQL 資源提供者配接器 VM 的維護端點。
使用維護端點會話,將定義更新檔案複製到資源提供者配接器 VM。
在維護 PowerShell 會話上,執行 Update-DBAdapterWindowsDefenderDefinitions 命令。
安裝定義之後,建議您使用 Remove-ItemOnUserDrive) 命令來刪除定義更新檔案。
更新定義的PowerShell腳本範例。
您可以編輯並執行下列腳本來更新Defender定義。 以您環境中的值取代文稿中的值。
# 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
設定 MySQL 資源提供者的 Azure 診斷擴充功能
這些指示僅適用於在 Azure Stack Hub 整合式系統上執行的 SQL RP V1。
根據預設,Azure 診斷擴充功能會安裝在 MySQL 資源提供者配接器 VM 上。 下列步驟示範如何自訂擴充功能,以收集 MySQL 資源提供者的運行事件記錄和 IIS 日誌,以便進行故障排除和審核。
登入 Azure Stack Hub 系統管理員入口網站。
從左側窗格中選取 虛擬機,搜尋 MySQL 資源提供者適配器 VM,然後選取該 VM。
在 VM 的 [診斷設定] 中,移至 [記錄] 標籤,然後選擇 [自訂] 以自訂所收集的事件記錄。
新增 Microsoft-AzureStack-DatabaseAdapter/Operational!* 以收集 MySQL 資源提供者作業事件記錄。
若要開啟 IIS 記錄的收集,請檢查 IIS 記錄 和 失敗的請求記錄。
最後,選取 儲存 以儲存所有診斷設定。
為 MySQL 資源提供者設定事件記錄檔和 IIS 記錄收集之後,即可在名為 mysqladapterdiagaccount的系統記憶體帳戶中找到記錄。
若要深入瞭解 Azure 診斷擴充功能,請參閱 什麼是 Azure 診斷擴充功能。
秘密輪替
這些指示僅適用於 Azure Stack Hub 整合式系統。
搭配 Azure Stack Hub 整合系統使用 SQL 和 MySQL 資源提供者時,Azure Stack Hub作員會負責輪替下列資源提供者基礎結構秘密,以確保它們不會過期:
- 部署期間所提供的外部 SSL 憑證 。
- 部署期間所提供的資源提供者 VM 本機系統管理員帳戶密碼。
- 資源提供者診斷使用者 (dbadapterdiag) 密碼。
- (version >= 1.1.47.0)部署期間產生的 Key Vault 憑證。
PowerShell 旋轉機密的範例
同時變更所有私密資料:
.\SecretRotationMySQLProvider.ps1 `
-Privilegedendpoint $Privilegedendpoint `
-CloudAdminCredential $cloudCreds `
-AzCredential $adminCreds `
-DiagnosticsUserPassword $passwd `
-DependencyFilesLocalPath $certPath `
-DefaultSSLCertificatePassword $certPasswd `
-VMLocalCredential $localCreds `
-KeyVaultPfxPassword $keyvaultCertPasswd
變更診斷用戶密碼:
.\SecretRotationMySQLProvider.ps1 `
-Privilegedendpoint $Privilegedendpoint `
-CloudAdminCredential $cloudCreds `
-AzCredential $adminCreds `
-DiagnosticsUserPassword $passwd
變更 VM 本機系統管理員帳戶密碼:
.\SecretRotationMySQLProvider.ps1 `
-Privilegedendpoint $Privilegedendpoint `
-CloudAdminCredential $cloudCreds `
-AzCredential $adminCreds `
-VMLocalCredential $localCreds
更換 SSL 憑證
.\SecretRotationMySQLProvider.ps1 `
-Privilegedendpoint $Privilegedendpoint `
-CloudAdminCredential $cloudCreds `
-AzCredential $adminCreds `
-DependencyFilesLocalPath $certPath `
-DefaultSSLCertificatePassword $certPasswd
旋轉 Key Vault 證書
.\SecretRotationSQLProvider.ps1 `
-Privilegedendpoint $Privilegedendpoint `
-CloudAdminCredential $cloudCreds `
-AzCredential $adminCreds `
-KeyVaultPfxPassword $keyvaultCertPasswd
SecretRotationMySQLProvider.ps1 參數
參數 | 描述 | 評論 |
---|---|---|
AzureEnvironment | 用來部署 Azure Stack Hub 之服務管理員帳戶的 Azure 環境。 僅適用於 Microsoft Entra 部署。 支援的環境名稱 AzureCloud、AzureUSGovernment,或使用 China Microsoft Entra ID,AzureChinaCloud。 | 可選的 |
AzCredential | Azure Stack Hub 服務管理員帳戶認證。 如果您使用需要多因素驗證(MFA)的帳戶搭配 AzCredential,腳本將會失敗。 | 強制的 |
雲端管理員憑證 (CloudAdminCredential) | Azure Stack Hub 雲端管理員網域帳戶認證。 | 強制的 |
高權限端點 | 可存取 Get-AzureStackStampInformation 的特殊許可權端點。 | 強制性 |
診斷用戶密碼 | 用戶帳戶診斷密碼。 | 可選 |
VMLocalCredential | MySQLAdapter VM 上的本機系統管理員帳戶。 | 可選的 |
預設SSL證書密碼 (DefaultSSLCertificatePassword) | 默認 SSL 憑證 (*.pfx) 密碼。 | 選擇性 |
依賴檔案本地路徑 | 相依性檔案本機路徑。 | 自選 |
KeyVaultPfxPassword | 用於產生資料庫配接器之 Key Vault 憑證的密碼。 | 選擇性 |
這些指示僅適用於在 Azure Stack Hub 整合式系統上執行的 MySQL RP V2。
注意
加值資源提供者的秘密輪替目前僅透過PowerShell支援。
如同 Azure Stack Hub 基礎結構,增值資源提供者會同時使用內部和外部秘密。 身為操作員,您負責:
提供更新的外部秘密,例如用來保護資源提供者端點的新 TLS 憑證。
定期管理資源提供者秘密輪替。
當秘密即將到期時,會在系統管理員入口網站中產生下列警示。 完成秘密輪替將會解決下列警示:
即將到期的內部憑證
外部憑證即將到期
先決條件
為輪換程序做準備:
如果您尚未這麼做,請先 安裝適用於 Azure Stack Hub 的 PowerShell Az 模組,再繼續進行。 Azure Stack Hub 秘密輪替需要 2.0.2-preview 版或更高版本。 如需詳細資訊,請參閱 從 AzureRM 遷移至 Azure Stack Hub 中的 Azure PowerShell Az。
安裝 Azs.Deployment.Admin 1.0.0 模組:PowerShell 圖庫 | Azs.Deployment.Admin 1.0.0
Install-Module -Name Azs.Deployment.Admin
- 如果外部憑證即將到期,請在取得或更新您的 X509 憑證之前,檢閱 Azure Stack Hub 公鑰基礎設施(PKI)憑證需求,以了解重要的先決資訊,包括所需 PFX 格式的詳細數據。 另請檢閱 選擇性 PaaS 憑證一節中指定的需求,以供您的特定增值資源提供者使用。
準備新的 TLS 憑證以進行外部憑證輪替
注意
如果只有內部憑證即將到期,您可以略過本節。
接下來,建立或更新 TLS 憑證,以保護值新增資源提供者端點:
完成 為資源提供者產生憑證簽署要求(CSR)以更新憑證的步驟。 在這裡,您會使用 Azure Stack Hub 整備檢查程式工具來建立 CSR。 請務必為資源提供者執行正確的命令,在「為其他 Azure Stack Hub 服務產生憑證要求」的步驟中。 例如,
New-AzsDbAdapterCertificateSigningRequest
用於 SQL 和 MySQL RPS。 完成後,您需要將產生的 .REQ 檔案提交給您的憑證頒發機構(CA)以獲取新憑證。從 CA 收到憑證檔案之後,請完成 準備部署憑證或輪替中的步驟。 您再次使用 "Readiness Checker" 工具來處理從 CA 傳回的檔案。
最後,完成在 中的驗證 Azure Stack Hub PKI 憑證的步驟。 您可以再次使用整備檢查工具,在新的憑證上執行驗證測試。
更新內部憑證
開啟提升許可權的 PowerShell 控制台,並依下列步驟更新資源提供者的外部機密資訊:
使用作員認證登入 Azure Stack Hub 環境。 如需 PowerShell 登入腳本,請參閱 使用 PowerShell 連線到 Azure Stack Hub。 請務必使用PowerShell Az Cmdlet(而不是 AzureRM),並取代所有佔位元值,例如端點 URL 和目錄租用戶名稱。
判斷資源提供者的產品標識碼。 執行
Get-AzsProductDeployment
Cmdlet 來擷取最新的資源提供者部署清單。 傳回的"value"
集合包含每個已部署的資源供應者的一個元素。 尋找感興趣的資源提供者,並記下這些屬性的值:-
"name"
- 包含值第二個區段中的資源提供者產品識別碼。
例如,MySQL RP 部署可能有產品識別碼
"microsoft.mysqlrp"
。-
執行
Invoke-AzsProductRotateSecretsAction
Cmdlet 來輪替內部憑證:Invoke-AzsProductRotateSecretsAction -ProductId $productId
更新外部憑證
您必須先記下下列參數的值。
佔位符 | 描述 | 範例值 |
---|---|---|
<product-id> |
最新資源提供者部署的產品標識碼。 | microsoft.mysqlrp |
<installed-version> |
最新資源提供者部署的版本。 | 2.0.0.2 |
<package-id> |
套件ID是透過串接產品ID和安裝版本而建構的。 | microsoft.mysqlrp.2.0.0.2 |
<cert-secret-name> |
用來儲存憑證密碼的名稱。 | SSLCert |
<cert-pfx-file-path> |
憑證 PFX 檔案的路徑。 | C:\dir\dbadapter-cert-file.pfx |
<pfx-password> |
指派給您憑證 .PFX 檔案的密碼。 | strong@CertSecret6 |
開啟提升權限的 PowerShell 控制台,然後依照下列步驟完成操作:
使用作員認證登入 Azure Stack Hub 環境。 如需 PowerShell 登入腳本,請參閱 使用 PowerShell 連線到 Azure Stack Hub。 請務必使用 PowerShell Az Cmdlet (而不是 AzureRM),並替換所有佔位符值,例如端點 URL 和目錄租用戶名稱。
取得 product-id 參數值。 執行
Get-AzsProductDeployment
Cmdlet 來擷取最新的資源提供者部署清單。 傳回的"value"
集合包含每個已部署資源提供者的元素。 尋找感興趣的資源提供者,並記下這些屬性的值:-
"name"
- 包含值第二個區段中的資源提供者產品識別碼。 -
"properties"."deployment"."version"
- 包含目前部署的版本號碼。
例如,MySQL RP 部署可能具有
"microsoft.mysqlrp"
的產品識別碼,以及版本"2.0.0.2"
。-
串連資源提供者產品標識碼和版本,以建置資源提供者的套件識別碼。 例如,使用上一個步驟中衍生的值,SQL RP 套件識別碼會
microsoft.mysqlrp.2.0.0.2
。使用上一個步驟中衍生的套件標識符,執行
Get-AzsProductSecret -PackageId
來擷取資源提供者所使用的秘密類型清單。 在傳回的value
集合中,尋找包含"properties"."secretKind"
屬性之"Certificate"
值的 元素。 這個元素包含 RP 憑證的秘密屬性。 記下指派給此憑證密碼的名稱,此密碼是由"name"
屬性的最後一個區段所識別,就在"properties"
上方。例如,SQL RP 傳回的秘密集合中包含一個名為
SSLCert
的"Certificate"
秘密。使用
Set-AzsProductSecret
Cmdlet 將新的憑證匯入 Key Vault,此憑證將由輪替程式使用。 在執行腳本之前,請先替換變數佔位符的值。$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
最後,使用
Invoke-AzsProductRotateSecretsAction
Cmdlet 來輪替秘密:Invoke-AzsProductRotateSecretsAction -ProductId $productId
監視秘密輪替進度
您可以在 PowerShell 控制台或系統管理員入口網站中選取 Marketplace 服務中的資源提供者,來監視秘密輪替進度:
注意
祕密的換班時間可能會超過10分鐘。 完成後,資源提供者的狀態會變更為 「已安裝」。
收集診斷記錄
Azure Stack Hub 擁有多種方式,可用來收集、儲存和傳送診斷記錄,以便送至 Microsoft 支援。 從 1.1.93 版開始,MySQL 資源提供者支援從 Azure Stack Hub 環境收集記錄的標準方式。 如需詳細資訊,請參閱 診斷日誌收集。
從 1.1.93 版開始,MySQL 資源提供者支援從 Azure Stack Hub 環境收集記錄的標準方式。 如果您使用舊版,建議您將 MySQL 資源提供者更新為最新版本。
若要從鎖定的 VM 收集記錄,請使用 PowerShell Just Enough Administration (JEA) 端點 DBAdapterDiagnostics。 此端點提供下列命令:
Get-AzsDBAdapterLog。 此命令會建立資源提供者診斷記錄的 zip 套件,並將檔案儲存在工作階段的使用者磁碟驅動器上。 您可以在沒有任何參數的情況下執行此命令,並收集過去四個小時的記錄。
Remove-AzsDBAdapterLog。 此命令會移除資源提供者 VM 上現有的記錄套件。
端點需求和程式
安裝或更新資源提供者時,會建立 dbadapterdiag 用戶帳戶。 您將使用此帳戶來收集診斷記錄。
注意
dbadapterdiag 帳戶密碼與在提供者部署或更新期間所建立之 VM 上本機系統管理員所使用的密碼相同。
若要使用 DBAdapterDiagnostics 命令,請建立資源提供者 VM 的遠端 PowerShell 會話,並執行 Get-AzsDBAdapterLog 命令。
您可以使用fromDate 和 ToDate 參數來設定記錄收集的時間範圍。 如果您未指定其中一個或兩個參數,則會使用下列預設值:
- FromDate 是比目前時間早四小時。
- ToDate 是目前的時間。
收集記錄的PowerShell腳本範例:
下列腳本示範如何從資源提供者 VM 收集診斷記錄。
# 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
MySQL Server 資源提供者第 1 版的已知限制
限制:
當部署、升級或秘密輪替腳本失敗時,標準記錄收集機制無法收集某些記錄。
因應措施:
除了使用標準記錄收集機制,請移至腳本找到的解壓縮資料夾中的 Logs 資料夾,以尋找更多記錄。