Important
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 サーバー リソース プロバイダーがリリースされると、更新プログラムを適用するためのスクリプトが提供されます。 このスクリプトでは、新しいリソース プロバイダー VM が作成され、古いプロバイダー VM の状態が新しい VM に移行されます。
MySQL RP V2 の場合、リソース プロバイダーは、Azure Stack Hub 更新プログラムの適用に使用されるのと同じ更新機能を使用して更新されます。
詳細については、「 MySQL リソース プロバイダーの更新」を参照してください。
プロバイダー VM を更新する
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 Defender 定義の更新プログラムをダウンロードします。
[定義] ページで、下にスクロールして [定義を手動でダウンロードしてインストールする] に移動します。 "Windows 10 および Windows 8.1 用 Windows Defender ウイルス対策" 64 ビット ファイルをダウンロードします。
または、 この直接リンク を使用して、fpam-fe.exe ファイルをダウンロードまたは実行します。
MySQL リソース プロバイダー アダプター VM のメンテナンス エンドポイントへの PowerShell セッションを開きます。
メンテナンス エンドポイント セッションを使用して、定義更新ファイルをリソース プロバイダー アダプター 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 Diagnostics 拡張機能を構成する
これらの手順は、Azure Stack Hub 統合システムで実行されている SQL RP V1 にのみ適用されます。
Azure Diagnostics 拡張機能は、既定で MySQL リソース プロバイダー アダプター VM にインストールされます。 次の手順では、MySQL リソース プロバイダーの操作イベント ログと IIS ログを収集するための拡張機能をカスタマイズして、トラブルシューティングと監査を行う方法を示します。
Azure Stack Hub 管理者ポータルにサインインします。
左側のウィンドウから [仮想マシン ] を選択し、MySQL リソース プロバイダー アダプター VM を検索し、VM を選択します。
VM の 診断設定 で、[ ログ ] タブに移動し、[ カスタム ] を選択して収集するイベント ログをカスタマイズします。
Microsoft-AzureStack-DatabaseAdapter/Operational!* を追加して、MySQL リソース プロバイダーの操作イベント ログを収集します。
IIS ログの収集を有効にするには、 IIS ログ と 失敗した要求ログを確認します。
最後に、[ 保存] を選択して、すべての診断設定を保存します。
MySQL リソース プロバイダー用にイベント ログと IIS ログの収集が構成されると、 mysqladapterdiagaccount という名前のシステム ストレージ アカウントでログが見つかります。
Azure Diagnostics 拡張機能の詳細については、「 Azure Diagnostics 拡張機能とは」を参照してください。
シークレットのローテーション
これらの手順は、Azure Stack Hub 統合システムにのみ適用されます。
Azure Stack Hub 統合システムで SQL および MySQL リソース プロバイダーを使用する場合、Azure Stack Hub オペレーターは、次のリソース プロバイダー インフラストラクチャ シークレットをローテーションして、有効期限が切れないようにする必要があります。
- デプロイ中に提供される外部 SSL 証明書。
- デプロイ時に指定されたリソース プロバイダー VM ローカル管理者アカウントのパスワード。
- リソース プロバイダー診断ユーザー (dbadapterdiag) パスワード。
- (バージョン >= 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 のパラメーター
| パラメーター | Description | コメント |
|---|---|---|
| AzureEnvironment | Azure Stack Hub のデプロイに使用されるサービス管理者アカウントの Azure 環境。 Microsoft Entra の展開にのみ必要です。 サポートされている環境名は 、AzureCloud、 AzureUSGovernment、または China Microsoft Entra ID、 AzureChinaCloud を使用している場合です。 | オプション |
| AzCredential | Azure Stack Hub サービス管理者アカウントの資格情報。 AzCredential で使用するアカウントに多要素認証 (MFA) が必要な場合、スクリプトは失敗します。 | Mandatory |
| CloudAdminCredential | Azure Stack Hub クラウド管理者ドメイン アカウントの資格情報。 | Mandatory |
| 特権エンドポイント | Get-AzureStackStampInformation にアクセスするための特権エンドポイント。 | Mandatory |
| 診断ユーザーパスワード | 診断ユーザー アカウントのパスワード。 | オプション |
| VMLocalCredential | MySQLAdapter VM 上のローカル管理者アカウント。 | オプション |
| DefaultSSLCertificatePassword | 既定の SSL 証明書 (*.pfx) パスワード。 | オプション |
| DependencyFilesLocalPath | 依存関係ファイルのローカル パス。 | オプション |
| KeyVaultPfxPassword | データベース アダプターの Key Vault 証明書を生成するために使用されるパスワード。 | オプション |
これらの手順は、Azure Stack Hub 統合システムで実行されている MySQL RP V2 にのみ適用されます。
注
現在、付加価値リソース プロバイダー (RP) のシークレット ローテーションは、PowerShell 経由でのみサポートされています。
Azure Stack Hub インフラストラクチャと同様に、付加価値リソース プロバイダーは内部シークレットと外部シークレットの両方を使用します。 オペレーターは、以下の責任を負います。
リソース プロバイダーのエンドポイントをセキュリティで保護するために使用される新しい TLS 証明書など、更新された外部シークレットを提供する。
リソース プロバイダーシークレットローテーションを定期的に管理する。
シークレットの有効期限が近付くと、管理者ポータルで次のアラートが生成されます。 シークレットローテーションを完了すると、次のアラートが解決されます。
内部証明書の有効期限が間近です
外部証明書の有効期限が保留中
[前提条件]
回転プロセスの準備中:
まだインストールしていない場合は、続行する前に 、Azure Stack Hub 用の PowerShell Az モジュールをインストール します。 Azure Stack Hub シークレットのローテーションには、バージョン 2.0.2-preview 以降が必要です。 詳細については、「 Azure Stack Hub で AzureRM から Azure PowerShell Az に移行する」を参照してください。
Azs.Deployment.Admin 1.0.0 モジュールのインストール: PowerShell ギャラリー |Azs.Deployment.Admin 1.0.0
Install-Module -Name Azs.Deployment.Admin
- 外部証明書の有効期限が近づいている場合は、必要な PFX 形式の詳細など、X509 証明書を取得または更新する前に、 Azure Stack Hub 公開キー 基盤 (PKI) 証明書の要件 に関する重要な前提条件を確認してください。 また、特定の付加価値リソース プロバイダーについて、 オプションの PaaS 証明書セクションで指定されている要件を確認します。
外部証明書のローテーション用に新しい TLS 証明書を準備する
注
内部証明書のみが期限切れ近くにある場合は、このセクションをスキップできます。
次に、付加価値リソース プロバイダー エンドポイントをセキュリティで保護するための TLS 証明書を作成または更新します。
リソース プロバイダーの 証明書の更新のための証明書署名要求 (CSP) の生成の 手順を完了します。 ここでは、Azure Stack Hub 適合性チェッカー ツールを使用して CSR を作成します。 「他の Azure Stack Hub サービスの証明書要求を生成する」の手順で、リソース プロバイダーに対して正しいコマンドレットを実行してください。 たとえば、
New-AzsDbAdapterCertificateSigningRequestは SQL および MySQL RP に使用されます。 完了したら、生成された .REQ ファイルを新しい証明書のために証明機関 (CA) に提出します。CA から証明書ファイルを受け取ったら、「 展開またはローテーションのために証明書を準備する」の手順を完了します。 再び適合性チェッカー ツールを使用して、CA から返されたファイルを処理します。
最後に、「 Azure Stack Hub PKI 証明書の検証」の手順を完了します。 準備チェッカー ツールをもう一度使用して、新しい証明書に対して検証テストを実行します。
内部証明書をローテーションする
管理者特権の PowerShell コンソールを開き、次の手順を実行して、リソース プロバイダーの外部シークレットをローテーションします。
オペレーターの資格情報を使用して Azure Stack Hub 環境にサインインします。 PowerShell サインイン スクリプトについては、 PowerShell を使用した Azure Stack Hub への接続 に関するページを参照してください。 必ず (AzureRM ではなく) PowerShell Az コマンドレットを使用し、エンドポイント URL やディレクトリ テナント名など、すべてのプレースホルダー値を置き換えてください。
リソース プロバイダーの製品 ID を決定します。
Get-AzsProductDeploymentコマンドレットを実行して、最新のリソース プロバイダーデプロイの一覧を取得します。 返される"value"コレクションには、デプロイされた各リソース プロバイダーの要素が含まれています。 対象のリソース プロバイダーを見つけ、これらのプロパティの値をメモします。-
"name"- 値の 2 番目のセグメントのリソース プロバイダー製品 ID が含まれます。
たとえば、MySQL RP のデプロイには、
"microsoft.mysqlrp"の製品 ID が含まれている場合があります。-
Invoke-AzsProductRotateSecretsActionコマンドレットを実行して、内部証明書をローテーションします。Invoke-AzsProductRotateSecretsAction -ProductId $productId
外部証明書をローテーションする
最初に、次のパラメーターの値を書き留める必要があります。
| Placeholder | Description | 値の例 |
|---|---|---|
<product-id> |
最新のリソース プロバイダーデプロイの製品 ID。 | microsoft.mysqlrp |
<installed-version> |
最新のリソース プロバイダーデプロイのバージョン。 | 2.0.0.2 |
<package-id> |
パッケージ ID は、製品 ID と installed-version を連結して構築されます。 | 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 への接続 に関するページを参照してください。 必ず (AzureRM ではなく) PowerShell Az コマンドレットを使用し、エンドポイント URL やディレクトリ テナント名など、すべてのプレースホルダー値を置き換えてください。
product-id パラメーター値を取得します。
Get-AzsProductDeploymentコマンドレットを実行して、最新のリソース プロバイダーデプロイの一覧を取得します。 返される"value"コレクションには、デプロイされた各リソース プロバイダーの要素が含まれています。 対象のリソース プロバイダーを見つけ、これらのプロパティの値をメモします。-
"name"- 値の 2 番目のセグメントのリソース プロバイダー製品 ID が含まれます。 -
"properties"."deployment"."version"- 現在デプロイされているバージョン番号が含まれています。
たとえば、MySQL RP のデプロイには、
"microsoft.mysqlrp"の製品 ID とバージョン"2.0.0.2"があります。-
リソース プロバイダーの製品 ID とバージョンを連結して、リソース プロバイダーのパッケージ ID をビルドします。 たとえば、前の手順で派生した値を使用すると、SQL RP パッケージ ID が
microsoft.mysqlrp.2.0.0.2されます。前の手順で派生したパッケージ ID を使用して、
Get-AzsProductSecret -PackageId実行して、リソース プロバイダーによって使用されているシークレットの種類の一覧を取得します。 返されたvalueコレクションで、"Certificate"プロパティの"properties"."secretKind"の値を含む要素を検索します。 この要素には、RP の証明書シークレットのプロパティが含まれています。 この証明書シークレットに割り当てられた名前を書き留めます。この名前は、"name"のすぐ上にある"properties"プロパティの最後のセグメントで識別されます。たとえば、SQL RP に対して返されるシークレット コレクションには、
"Certificate"という名前のSSLCertシークレットが含まれています。Set-AzsProductSecretコマンドレットを使用して、新しい証明書を 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コマンドレットを使用してシークレットをローテーションします。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 パッケージを作成し、セッションのユーザー ドライブにファイルを保存します。 パラメーターを指定せずにこのコマンドを実行すると、過去 4 時間のログが収集されます。
Remove-AzsDBAdapterLog。 このコマンドは、リソース プロバイダー VM 上の既存のログ パッケージを削除します。
エンドポイントの要件とプロセス
リソース プロバイダーがインストールまたは更新されると、dbadapterdiag ユーザー アカウントが作成されます。 このアカウントを使用して診断ログを収集します。
注
dbadapterdiag アカウントのパスワードは、プロバイダーのデプロイまたは更新中に作成された VM のローカル管理者に使用されるパスワードと同じです。
DBAdapterDiagnostics コマンドを使用するには、リソース プロバイダー VM へのリモート PowerShell セッションを作成し、Get-AzsDBAdapterLog コマンドを実行します。
FromDate パラメーターと ToDate パラメーターを使用して、ログ収集の期間を設定します。 これらのパラメーターの一方または両方を指定しない場合は、次の既定値が使用されます。
- FromDate は現在の時刻の 4 時間前です。
- 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 サーバー リソース プロバイダー バージョン 1 の既知の制限事項
制限事項:
デプロイ、アップグレード、またはシークレット ローテーション スクリプトが失敗した場合、一部のログは標準のログ収集メカニズムでは収集できません。
対処法:
標準のログ収集メカニズムを使用するだけでなく、スクリプトが配置されている抽出フォルダーの Logs フォルダーに移動して、さらに多くのログを見つけます。