기본 사용자 권한이 제거된 후 SQL Server 설치 실패
이 문서는 보안을 강화한 후 Microsoft SQL Server를 설치하거나 업그레이드할 때 발생하는 문제를 해결하는 데 도움이 됩니다.
적용 대상: SQL Server
증상
Windows에서 Microsoft SQL Server를 실행하는 시나리오를 고려합니다. 보안을 강화하려면 로컬 관리자 그룹에서 일부 기본 사용자 권한을 제거합니다. 시스템에서 SQL Server를 설정하려면 로컬 관리자 그룹에 설치 계정을 추가합니다.
이 시나리오에서 SQL Server를 설치하거나 업그레이드하려고 하면 설치 프로세스가 실패하고 다음과 같이 나열된 메시지 중 하나와 유사한 오류 메시지가 표시될 수 있습니다.
시나리오 1: 새 설치에 실패하면 다음 오류 메시지가 표시됩니다.
Access is denied
Detail.txt 파일에서 다음과 유사한 오류 메시지가 표시될 수도 있습니다.
2009-01-02 13:00:17 SQLEngine: --SqlServerServiceSCM: Waiting for nt event 'Global\sqlserverRecComplete$NIIT' to be created 2009-01-02 13:00:20 SQLEngine: --SqlServerServiceSCM: Waiting for nt event 'Global\sqlserverRecComplete$NIIT' or sql process handle to be signaled 2009-01-02 13:00:20 Slp: Configuration action failed for feature SQL_Engine_Core_Inst during timing ConfigRC and scenario ConfigRC. 2009-01-02 13:00:20 Slp: Access is denied 2009-01-02 13:00:20 Slp: Configuration action failed for feature SQL_Engine_Core_Inst during timing ConfigRC and scenario ConfigRC. 2009-01-02 13:00:20 Slp: System.ComponentModel.Win32Exception: Access is denied 2009-01-02 13:00:20 Slp: at System.Diagnostics.ProcessManager.OpenProcess(Int32 processId, Int32 access, Boolean throwIfExited) 2009-01-02 13:00:20 Slp: at System.Diagnostics.Process.GetProcessHandle(Int32 access, Boolean throwIfExited) 2009-01-02 13:00:20 Slp: at System.Diagnostics.Process.OpenProcessHandle() 2009-01-02 13:00:20 Slp: at System.Diagnostics.Process.get_Handle() 2009-01-02 13:00:20 Slp: at Microsoft.SqlServer.Configuration.SqlEngine.SqlServerServiceBase.WaitSqlServerStart(Process processSql) 2009-01-02 13:00:20 Slp: at Microsoft.SqlServer.Configuration.SqlEngine.SqlServerServiceSCM.StartSqlServer(String[] parameters) 2009-01-02 13:00:20 Slp: at Microsoft.SqlServer.Configuration.SqlEngine.SqlServerStartup.StartSQLServerForInstall(String sqlCollation, String masterFullPath, Boolean isConfiguringTemplateDBs) 2009-01-02 13:00:20 Slp: at Microsoft.SqlServer.Configuration.SqlEngine.SqlEngineDBStartConfig.ConfigSQLServerSystemDatabases(EffectiveProperties properties, Boolean isConfiguringTemplateDBs, Boolean useInstallInputs) 2009-01-02 13:00:20 Slp: at Microsoft.SqlServer.Configuration.SqlEngine.SqlEngineDBStartConfig.DoCommonDBStartConfig(ConfigActionTiming timing) 2009-01-02 13:00:20 Slp: at Microsoft.SqlServer.Configuration.SqlEngine.SqlEngineDBStartConfig.Install(ConfigActionTiming timing, Dictionary<string, string> actionData, PublicConfigurationBase spcb) 2009-01-02 13:00:20 Slp: at Microsoft.SqlServer.Configuration.SqlConfigBase.PrivateConfigurationBase.Execute(ConfigActionScenario scenario, ConfigActionTiming timing, Dictionary<string, string> actionData, PublicConfigurationBase spcbCurrent) 2009-01-02 13:00:20 Slp: at Microsoft.SqlServer.Configuration.SqlConfigBase.SqlFeatureConfigBase.Execute(ConfigActionScenario scenario, ConfigActionTiming timing, Dictionary<string, string> actionData, PublicConfigurationBase spcbCurrent) 2009-01-02 13:00:20 Slp: at Microsoft.SqlServer.Configuration.SqlConfigBase.SlpConfigAction.ExecuteAction(String actionId) 2009-01-02 13:00:20 Slp: at Microsoft.SqlServer.Configuration.SqlConfigBase.SlpConfigAction.Execute(String actionId, TextWriter errorStream) 2009-01-02 13:00:20 Slp: Exception: System.ComponentModel.Win32Exception. 2009-01-02 13:00:20 Slp: Source: System. 2009-01-02 13:00:20 Slp: Message: Access is denied.
시나리오 2: Microsoft SQL Server 2012 또는 Microsoft SQL Server 2008 R2의 새 설치가 실패하면 다음 오류 메시지 중 하나가 표시됩니다.
Rule "Setup account privileges" failed. The account that is running SQL Server Setup doesn't have one or all of the following rights: the right to back up files and directories, the right to manage auditing and the security log and the right to debug programs. To continue, use an account with both of these rights.
시나리오 3: 백업 디렉터리 위치에 대한 UNC 경로(네트워크 공유)를 지정할 때 SQL Server 2012 이상 버전을 설치하지 못하면 다음 오류 메시지가 표시됩니다.
SQL Server setup account does not have the `SeSecurityPrivilege` on the specified file server in the path *\<UNC backup location>*. This privilege is required to set folder security in the SQL Server setup program. To grant this privilege, use the Local Security Policy console on this file server to add SQL Server setup account to **Manage auditing and security log** policy. This setting is available in the **User Rights Assignments** section under Local Policies in the Local Security Policy console.
참고 항목
이 문제는 SQL Server 설치 계정에 네트워크 공유를
SeSecurityPrivilege
호스트하는 파일 서버에 대한 권한이 없기 때문에 발생합니다.
원인
로컬 관리자로 설치 프로그램을 실행하는 경우 설치를 성공적으로 실행하려면 다음 사용자 권한이 필요합니다.
로컬 그룹 정책 개체 표시 이름 | 사용자 권한 |
---|---|
백업 파일 및 디렉터리 | SeBackupPrivilege |
프로그램 디버그 | SeDebugPrivilege |
감사 및 보안 로그 관리 | SeSecurityPrivilege |
참고 항목
SQL Server를 설치하는 데 필요한 권한에 대한 자세한 내용은 다음 문서의 "필수 구성 요소" 섹션을 참조하세요.
데이터 디렉터리 또는 다른 디렉터리(사용자 데이터베이스 디렉터리, 사용자 데이터베이스 로그 디렉터리, TempDB 디렉터리, TempDB 로그 디렉터리 또는 백업 디렉터리)에 대한 스토리지 옵션이 SMB 파일 공유를 사용하는 경우 설치 계정에는 SMB 파일 공유 스토리지를 사용하여 SQL Server 설치에 설명된 대로 SMB 파일 서버에 대한 다음과 같은 추가 권한이 필요합니다.
SMB 네트워크 공유 폴더 | 모든 권한 | SQL 설치 계정 |
---|---|---|
SMB 네트워크 공유 폴더 | 모든 권한 | SQL Server 및 SQL Server 에이전트 Service 계정 |
SMB 파일 서버 | SeSecurityPrivilege |
SQL 설정 계정 |
해결
설치 계정에 권한을 추가하려면 다음 단계를 수행합니다.
- 관리자로 로그온합니다.
- 실행 시작을>선택하고 Control admintools를 입력한 다음 확인을 선택합니다.
- 로컬 보안 정책을 두 번 클릭합니다.
- 로컬 보안 설정 대화 상자에서 로컬 정책을 선택하고 사용자 권한 할당을 연 다음 백업 파일 및 디렉터리를 두 번 클릭합니다.
- 백업 파일 및 디렉터리 속성 대화 상자에서 사용자 또는 그룹 추가를 선택합니다.
- 사용자 또는 그룹 선택 대화 상자에서 설치에 사용할 사용자 계정을 입력한 다음 확인을 두 번 선택합니다.
참고 항목
디버그 프로그램에 대한 사용자 계정을 추가하고 감사 및 보안 로그 정책을 관리하려면 1~6단계를 수행합니다.
- 파일 메뉴에서 로컬 보안 설정 대화 상자를 연 다음 종료를 선택하여 닫습니다.
FAQ(질문과 대답)
SeSecurityPrivilege
UNC 공유의 백업 디렉터리에 파일 서버가 필요한 이유는 무엇인가요?
이 권한은 SQL Server 서비스 계정에 폴더에 대한 모든 권한이 있는지 확인하기 위해 기본 백업 디렉터리에서 ACL(액세스 제어 목록)을 검색하는 데 필요합니다. 또한 서비스 계정은 디렉터리의 백업을 실행할 수 있도록 SQL 서비스 계정에 대한 권한이 누락된 경우 ACL을 설정합니다. 설치 프로그램은 기본 백업 디렉터리에 대한 이러한 검사를 실행하므로 설치 후 백업이 수행되는 경우 권한이 없어서 오류가 발생하지 않습니다.
참고 항목
SeSecurityPrivilege
는 디렉터리 및 하위 폴더에서 변경 get/set ACLs
해야 합니다. 디렉터리에 대한 FULL CONTROL 권한이 있는 사용자에게 디렉터리의 정보 및 감사 권한이 get/set OWNER
없는 경우에도 마찬가지입니다.
시나리오 3에 설명된 오류는 왜 Microsoft SQL Server 2012 이상 버전에서만 발생하나요?
SQL Server 2012부터 Microsoft는 SMB 파일 공유의 데이터 및 로그 파일을 지원합니다. 이러한 개선의 일환으로 설치 후 권한이 부족하여 고객이 오류 또는 문제가 발생하지 않도록 보안 검사를 강화하도록 설정 환경이 더욱 강화되었습니다. SQL Server 2012 이전 버전에서는 SQL 서비스 계정에 백업을 실행할 수 있는 권한이 없는 경우에도 사용자는 백업 디렉터리에 대한 네트워크 공유 경로를 설정할 수 있습니다. 그러나 이러한 사용자는 이 상황에서 설치 후 오류가 발생합니다. 네트워크 공유에서 SQL 2012 설치 검사를 시작할 때 이러한 시나리오는 이제 방지됩니다.
자세한 정보
현재 설정 계정과 연결된 권한 목록을 확인하려면 AccessChk.exe 도구를 사용합니다. 이 도구를 다운로드하려면 AccessChk v6.13을 참조하세요.
사용 현황:
accesschk.exe- a \<setup account> *
예:
c:\tools\accesschk.exe -a testdc\setupaccount *
Sample output: SeSecurityPrivilege SeBackupPrivilege SeRestorePrivilege SeSystemtimePrivilege SeShutdownPrivilege SeRemoteShutdownPrivilege SeTakeOwnershipPrivilege SeDebugPrivilege SeSystemEnvironmentPrivilege SeSystemProfilePrivilege SeProfileSingleProcessPrivilege SeIncreaseBasePriorityPrivilege SeLoadDriverPrivilege SeCreatePagefilePrivilege SeIncreaseQuotaPrivilege SeChangeNotifyPrivilege SeUndockPrivilege SeManageVolumePrivilege SeImpersonatePrivilege SeCreateGlobalPrivilege SeTimeZonePrivilege SeCreateSymbolicLinkPrivilege SeInteractiveLogonRight SeNetworkLogonRight SeBatchLogonRight SeRemoteInteractiveLogonRight
자세한 내용은 Windows 서비스 계정 및 권한 구성를 참조하세요.