SQL 리소스 공급자 유지 관리 작업SQL resource provider maintenance operations

SQL 리소스 공급자는 잠긴 VM (가상 머신)에서 실행 됩니다.The SQL resource provider runs on a locked down virtual machine (VM). 유지 관리 작업을 사용 하도록 설정 하려면 VM의 보안을 업데이트 해야 합니다.To enable maintenance operations, you need to update the VM's security. 최소 권한의 보안 주체를 사용 하 여이 작업을 수행 하려면 PowerShell의 충분 한 관리 (JEA) 끝점 dbadaptermaintenance 를 사용 합니다.To do this using the principal of Least Privilege, use PowerShell Just Enough Administration (JEA) endpoint DBAdapterMaintenance. 리소스 공급자 설치 패키지에는이 작업에 대 한 스크립트가 포함 되어 있습니다.The resource provider installation package includes a script for this action.

패치 및 업데이트Patching and updating

SQL 리소스 공급자는 추가 기능 구성 요소 이므로 Azure Stack 허브의 일부로 처리 되지 않습니다.The SQL resource provider isn't serviced as part of Azure Stack Hub because it's an add-on component. Microsoft는 필요에 따라 SQL 리소스 공급자에 대 한 업데이트를 제공 합니다.Microsoft provides updates to the SQL resource provider as necessary. 업데이트 된 SQL 어댑터가 릴리스되면 업데이트를 적용 하기 위한 스크립트가 제공 됩니다.When an updated SQL adapter is released, a script is provided to apply the update. 이 스크립트는 새 리소스 공급자 VM을 만들어 이전 공급자 VM의 상태를 새 VM으로 마이그레이션합니다.This script creates a new resource provider VM, migrating the state of the old provider VM to the new VM. 자세한 내용은 SQL 리소스 공급자 업데이트를 참조 하세요.For more information, see Update the SQL resource provider.

공급자 VMProvider VM

리소스 공급자는 사용자 VM에서 실행 되므로 필요한 패치와 업데이트를 해제 하는 경우 적용 해야 합니다.Because the resource provider runs on a user VM, you need to apply the required patches and updates when they're released. 패치 및 업데이트 주기의 일부로 제공 되는 Windows 업데이트 패키지를 사용 하 여 VM에 업데이트를 적용 합니다.Use the Windows update packages that are provided as part of the patch-and-update cycle to apply updates to the VM.

SQL 자격 증명 업데이트Updating SQL credentials

SQL server에서 sysadmin 계정을 만들고 유지 관리 하는 일을 담당 합니다.You're responsible for creating and maintaining sysadmin accounts on your SQL servers. 리소스 공급자는 사용자의 데이터베이스를 관리 하기 위해 이러한 권한이 있는 계정이 필요 하지만 사용자의 데이터에 액세스할 필요는 없습니다.The resource provider needs an account with these privileges to manage databases for users, but it doesn't need access to the users' data. SQL server에서 sysadmin 암호를 업데이트 해야 하는 경우 리소스 공급자의 관리자 인터페이스를 사용 하 여 저장 된 암호를 변경할 수 있습니다.If you need to update the sysadmin passwords on your SQL servers, you can use the resource provider's administrator interface to change a stored password. 이러한 암호는 Azure Stack 허브 인스턴스의 Key Vault에 저장 됩니다.These passwords are stored in a Key Vault on your Azure Stack Hub instance.

설정을 수정 하려면 > 관리 리소스 찾아보기 > sql 호스팅 서버 > sql 로그인 을 선택 하 고 사용자 이름을 선택 합니다.To modify the settings, select Browse > ADMINISTRATIVE RESOURCES > SQL Hosting Servers > SQL Logins and select a user name. SQL 인스턴스를 먼저 변경 해야 하며, 필요한 경우 모든 복제본을 변경 해야 합니다. 설정 아래에서 암호 를 선택 합니다.The change must be made on the SQL instance first (and any replicas, if necessary.) Under Settings, select Password.

SQL 관리자 암호 업데이트

비밀 회전Secrets rotation

이러한 지침은 Azure Stack 허브 통합 시스템에만 적용 됩니다.These instructions only apply to Azure Stack Hub Integrated Systems.

Azure Stack 허브 통합 시스템에서 SQL 및 MySQL 리소스 공급자를 사용 하는 경우 Azure Stack 허브 운영자는 다음 리소스 공급자 인프라 암호를 회전 하 여 만료 되지 않도록 합니다.When using the SQL and MySQL resource providers with Azure Stack Hub integrated systems, the Azure Stack Hub operator is responsible for rotating the following resource provider infrastructure secrets to ensure that they don't expire:

  • 배포 중에 제공 되는외부 SSL 인증서입니다.External SSL certificate provided during deployment.
  • 배포 중에 제공 된 리소스 공급자 VM 로컬 관리자 계정 암호입니다.The resource provider VM local admin account password provided during deployment.
  • Dbadapterdiag (리소스 공급자 진단 사용자) 암호입니다.Resource provider diagnostic user (dbadapterdiag) password.
  • (버전 >= 1.1.47.0) 배포 하는 동안 생성 된 인증서를 Key Vault 합니다.(version >= 1.1.47.0) Key Vault certificate generated during deployment.

비밀을 순환 하기 위한 PowerShell 예제PowerShell examples for rotating secrets

모든 암호를 동시에 변경 합니다.Change all the secrets at the same time.

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

진단 사용자 암호를 변경 합니다.Change the diagnostic user password.

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

VM 로컬 관리자 계정 암호를 변경 합니다.Change the VM local admin account password.

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

SSL 인증서 암호를 변경 합니다.Change the SSL certificate password.

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

Key Vault 인증서 암호를 변경 합니다.Change the Key Vault certificate password.

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

SecretRotationSQLProvider.ps1 매개 변수SecretRotationSQLProvider.ps1 parameters

매개 변수Parameter DescriptionDescription 주석Comment
AzureEnvironmentAzureEnvironment Azure Stack Hub를 배포 하는 데 사용 되는 서비스 관리자 계정의 Azure 환경입니다.The Azure environment of the service admin account used for deploying Azure Stack Hub. Azure AD 배포에만 필요 합니다.Required only for Azure AD deployments. 지원 되는 환경 이름은 Azurecloud, azureus정부 이거나 중국 Azure Active Directory AzureChinaCloud 를 사용 하는 경우입니다.Supported environment names are AzureCloud, AzureUSGovernment, or if using a China Azure Active Directory, AzureChinaCloud. 선택 사항Optional
AzCredentialAzCredential 허브 서비스 관리자 계정 자격 증명을 Azure Stack 합니다.Azure Stack Hub service admin account credential. AzCredential와 함께 사용 하는 계정에 MFA (multi-factor authentication)가 필요한 경우 스크립트가 실패 합니다.The script will fail if the account you use with AzCredential requires multi-factor authentication (MFA). 필수Mandatory
CloudAdminCredentialCloudAdminCredential 허브 클라우드 관리자 도메인 계정 자격 증명을 Azure Stack 합니다.Azure Stack Hub cloud admin domain account credential. 필수Mandatory
PrivilegedEndpointPrivilegedEndpoint AzureStackStampInformation에 액세스 하기 위한 권한 있는 끝점입니다.Privileged Endpoint to access Get-AzureStackStampInformation. 필수Mandatory
DiagnosticsUserPasswordDiagnosticsUserPassword 진단 사용자 계정 암호입니다.Diagnostics user account password. 선택 사항Optional
VMLocalCredentialVMLocalCredential MySQLAdapter VM의 로컬 관리자 계정.Local admin account on the MySQLAdapter VM. 선택 사항Optional
DefaultSSLCertificatePasswordDefaultSSLCertificatePassword 기본 SSL 인증서 (* .pfx) 암호입니다.Default SSL certificate (*.pfx) password. 선택 사항Optional
DependencyFilesLocalPathDependencyFilesLocalPath 종속성 파일 로컬 경로입니다.Dependency files local path. 선택 사항Optional
KeyVaultPfxPasswordKeyVaultPfxPassword 데이터베이스 어댑터에 대 한 Key Vault 인증서를 생성 하는 데 사용 되는 암호입니다.The password used for generating the Key Vault certificate for database adapter. 선택 사항Optional

알려진 문제Known issues

문제:Issue:
비밀 회전 로그.Secrets rotation logs. 비밀 회전 사용자 지정 스크립트가 실행 될 때 실패 하는 경우 비밀 회전 로그가 자동으로 수집 되지 않습니다.The logs for secrets rotation aren't automatically collected if the secret rotation custom script fails when it's run.

해결 방법:Workaround:
Get-AzsDBAdapterLogs cmdlet을 사용 하 여 C:\Logs.에 저장 된 AzureStack.DatabaseAdapter.SecretRotation.ps1_ * .log를 비롯 한 모든 리소스 공급자 로그를 수집 합니다.Use the Get-AzsDBAdapterLogs cmdlet to collect all resource provider logs, including AzureStack.DatabaseAdapter.SecretRotation.ps1_*.log, saved in C:\Logs.

VM 운영 체제 업데이트Update the VM operating system

다음 방법 중 하나를 사용 하 여 VM 운영 체제를 업데이트 합니다.Use one of the following methods to update the VM operating system.

  • 현재 패치 된 VM 이미지를 사용 하 여 최신 리소스 공급자 패키지를 설치 합니다.Install the latest resource provider package using a currently patched VM image.
  • 리소스 공급자를 설치 하거나 업데이트 하는 동안 Windows 업데이트 패키지를 설치 합니다.Install a Windows Update package during the installation of, or update to, the resource provider.

VM Windows Defender 정의 업데이트Update the VM Windows Defender definitions

Windows Defender 정의를 업데이트 하려면:To update the Windows Defender definitions:

  1. Windows defender 용 Security intelligence 업데이트에서 windows defender 정의 업데이트를 다운로드 합니다.Download the Windows Defender definitions update from Security intelligence updates for Windows Defender.

    정의 업데이트 페이지에서 "수동으로 업데이트 다운로드"로 스크롤합니다.On the definitions update page, scroll down to "Manually download the update". "Windows 10 용 Windows Defender 바이러스 백신 및 Windows 8.1" 64 비트 파일을 다운로드 합니다.Download the "Windows Defender Antivirus for Windows 10 and Windows 8.1" 64-bit file.

    이 직접 링크 를 사용 하 여 fpam-fe.exe 파일을 다운로드/실행할 수도 있습니다.You can also use this direct link to download/run the fpam-fe.exe file.

  2. SQL 리소스 공급자 어댑터 VM의 유지 관리 끝점에 대 한 PowerShell 세션을 만듭니다.Create a PowerShell session to the SQL resource provider adapter VM's maintenance endpoint.

  3. 유지 관리 끝점 세션을 사용 하 여 정의 업데이트 파일을 VM에 복사 합니다.Copy the definitions update file to the VM using the maintenance endpoint session.

  4. 유지 관리 PowerShell 세션에서 DBAdapterWindowsDefenderDefinitions 명령을 실행 합니다.On the maintenance PowerShell session, run the Update-DBAdapterWindowsDefenderDefinitions command.

  5. 정의를 설치한 후에는 제거-ItemOnUserDrive 명령을 사용 하 여 정의 업데이트 파일을 삭제 하는 것이 좋습니다.After you install the definitions, we recommend you delete the definitions update file by using the Remove-ItemOnUserDrive command.

정의 업데이트에 대 한 PowerShell 스크립트 예제PowerShell script example for updating definitions

다음 스크립트를 편집 하 고 실행 하 여 Defender 정의를 업데이트할 수 있습니다.You can edit and run the following script to update the Defender definitions. 스크립트의 값을 사용자 환경의 값으로 바꿉니다.Replace values in the script with values from your environment.

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

진단 데이터 수집Collect diagnostic logs

Azure Stack 허브에는 Microsoft 지원에 진단 로그를 수집, 저장 및 전송 하는 여러 가지 방법이 있습니다.Azure Stack Hub has multiple ways to collect, save, and send diagnostic logs to Microsoft Support. 1.1.93 버전부터 SQL 리소스 공급자는 Azure Stack 허브 환경에서 로그를 수집 하는 표준 방법을 지원 합니다.Starting from version 1.1.93, SQL Resource Provider supports the standard way of collecting logs from you Azure Stack Hub environment. 자세한 내용은 진단 로그 수집을 참조 하세요.For more information, see Diagnostic log collection.

1.1.93 버전부터 SQL 리소스 공급자는 Azure Stack 허브 환경에서 로그를 수집 하는 표준 방법을 지원 합니다.Starting from version 1.1.93, SQL Resource Provider supports the standard way of collecting logs from you Azure Stack Hub environment. 이전 버전을 사용 하는 경우 SQL 리소스 공급자를 최신 버전으로 업데이트 하는 것이 좋습니다.If you are using an older version, it is recommended to update your SQL Resource Provider to the latest version.

잠긴 VM에서 로그를 수집 하려면 PowerShell의 충분 한 관리 (JEA) 끝점 Dbadapterdiagnostics 를 사용 합니다.To collect logs from the locked down VM, use the PowerShell Just Enough Administration (JEA) endpoint DBAdapterDiagnostics. 이 끝점은 다음 명령을 제공 합니다.This endpoint provides the following commands:

  • AzsDBAdapterLog.Get-AzsDBAdapterLog. 이 명령은 리소스 공급자 진단 로그의 zip 패키지를 만들고 세션의 사용자 드라이브에 파일을 저장 합니다.This command creates a zip package of the resource provider diagnostics logs and saves the file on the session's user drive. 이 명령은 매개 변수 없이 실행할 수 있으며 마지막 4 시간 동안 로그가 수집 됩니다.You can run this command without any parameters and the last four hours of logs are collected.
  • AzsDBAdapterLog를 제거 합니다.Remove-AzsDBAdapterLog. 이 명령은 리소스 공급자 VM에서 기존 로그 패키지를 제거 합니다.This command removes existing log packages on the resource provider VM.

끝점 요구 사항 및 프로세스Endpoint requirements and process

리소스 공급자를 설치 하거나 업데이트 하면 dbadapterdiag 사용자 계정이 만들어집니다.When a resource provider is installed or updated, the dbadapterdiag user account is created. 이 계정을 사용 하 여 진단 로그를 수집 합니다.You'll use this account to collect diagnostic logs.

참고

Dbadapterdiag 계정 암호는 공급자 배포 또는 업데이트 중에 만들어진 VM의 로컬 관리자에 사용 되는 암호와 동일 합니다.The dbadapterdiag account password is the same as the password used for the local admin on the VM that's created during a provider deployment or update.

Dbadapterdiagnostics 명령을 사용 하려면 리소스 공급자 VM에 대 한 원격 PowerShell 세션을 만들고 AzsDBAdapterLog 명령을 실행 합니다.To use the DBAdapterDiagnostics commands, create a remote PowerShell session to the resource provider VM and run the Get-AzsDBAdapterLog command.

FromDateToDate 매개 변수를 사용 하 여 로그 수집에 대 한 시간 범위를 설정 합니다.You set the time span for log collection by using the FromDate and ToDate parameters. 이러한 매개 변수 중 하나 또는 둘 다를 지정 하지 않으면 다음 기본값이 사용 됩니다.If you don't specify one or both of these parameters, the following defaults are used:

  • FromDate은 현재 시간 이전 4 시간입니다.FromDate is four hours before the current time.
  • ToDate은 현재 시간입니다.ToDate is the current time.

로그 수집을 위한 PowerShell 스크립트 예제PowerShell script example for collecting logs

다음 스크립트는 리소스 공급자 VM에서 진단 로그를 수집 하는 방법을 보여 줍니다.The following script shows how to collect diagnostic logs from the resource provider 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

# 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

SQL 리소스 공급자에 대 한 Azure 진단 확장 구성Configure Azure Diagnostics extension for SQL resource provider

Azure 진단 확장은 기본적으로 SQL 리소스 공급자 어댑터 VM에 설치 됩니다.Azure Diagnostics extension is installed on the SQL resource provider adapter VM by default. 다음 단계에서는 문제 해결 및 감사 목적으로 SQL 리소스 공급자 작업 이벤트 로그 및 IIS 로그를 수집 하기 위한 확장을 사용자 지정 하는 방법을 보여 줍니다.The following steps show how to customize the extension for gathering the SQL resource provider operational event logs and IIS logs for troubleshooting and auditing purpose.

  1. Azure Stack Hub 관리자 포털에 로그인합니다.Sign in to the Azure Stack Hub administrator portal.

  2. 왼쪽 창에서 Virtual machines 를 선택 하 고 SQL 리소스 공급자 어댑터 vm을 검색 한 다음 vm을 선택 합니다.Select Virtual machines from the pane on the left, search for the SQL resource provider adapter VM and select the VM.

  3. VM의 진단 설정 에서 로그 탭으로 이동 하 고 사용자 지정 을 선택 하 여 수집 되는 이벤트 로그를 사용자 지정 합니다.In Diagnostics settings of the VM, go to the Logs tab and choose Custom to customize event logs being collected. 진단 설정으로 이동Go to diagnostics settings

  4. *Microsoft-AzureStack-DatabaseAdapter/Operational를 추가 * 합니다. _ SQL 리소스 공급자 작업 이벤트 로그를 수집 합니다.Add *Microsoft-AzureStack-DatabaseAdapter/Operational!* _ to collect SQL resource provider operational event logs. 이벤트 로그 추가Add event logs

  5. IIS 로그의 컬렉션을 사용 하도록 설정 하려면 _ iis 로그* 및 실패 한 요청 로그 를 확인 합니다.To enable the collection of IIS logs, check _ IIS logs* and Failed request logs. IIS 로그 추가Add IIS logs

  6. 마지막으로 저장 을 선택 하 여 모든 진단 설정을 저장 합니다.Finally select Save to save all the Diagnostics settings.

SQL 리소스 공급자에 대 한 이벤트 로그 및 IIS 로그 수집이 구성 되 면 sqladapterdiagaccount 이라는 시스템 저장소 계정에서 로그를 찾을 수 있습니다.Once the event logs and IIS logs collection are configured for SQL resource provider, the logs can be found in a system storage account named sqladapterdiagaccount.

Azure 진단 확장에 대해 자세히 알아보려면 Azure 진단 확장명 이란?을 참조 하세요.To learn more about Azure Diagnostics extension, please see What is Azure Diagnostics extension.

다음 단계Next steps

SQL Server 호스팅 서버 추가Add SQL Server hosting servers