MSSQL SID 확인 명령어 - MSSQL SID hwag-in myeonglyeong-eo

MSSQL 서버 확인하기


@@SERVERNAME 으로 확인할 수 있습니다.

현재 접속해있는 서버를 반환합니다.

SELECT @@SERVERNAME

MSSQL 인스턴스 확인하기


@@SERVICENAME 으로 확인할 수 있습니다.

현재 접속해 있는 인스턴스를 반환합니다.

SELECT @@SERVICENAME

MSSQL 데이터베이스 확인하기


DB_NAME() 으로 확인할 수 있습니다.

현재 접속해 있는 데이터베이스를 반환합니다.

SELECT DB_NAME()

현재 접속한 서버 / 인스턴스 / 데이터베이스 확인


SELECT @@SERVERNAME, @@SERVICENAME, DB_NAME()

저작자표시비영리변경금지

'SQL Server > SQL Server 자주보는' 카테고리의 다른 글

[MSSQL] TempDB 를 사용하는 쿼리 찾기  (0) 2020.02.09
[MSSQL] 테이블 컬럼조회하기 (오라클의 DESC)  (0) 2019.03.28
[MSSQL] 모든 데이터베이스에 접속하여 쿼리를 날리는 방법  (0) 2019.03.26
[MsSQL] sp_readerrorlog, xp_readerrorlog 를 사용하여 구동 시점에서부터 오류만 뽑아오기  (0) 2019.03.20
[MsSQL] IF EXISTS 테이블 존재 유무 확인해서 없으면 생성하기  (0) 2019.02.18

주요 콘텐츠로 건너뛰기

이 브라우저는 더 이상 지원되지 않습니다.

최신 기능, 보안 업데이트, 기술 지원을 이용하려면 Microsoft Edge로 업그레이드하세요.

서비스 SID를 사용하여 SQL Server의 서비스에 사용 권한 부여

  • 아티클
  • 09/26/2022
  • 읽는 데 8분 걸림

이 문서의 내용

SQL Server는 서비스별 SID(보안 식별자)(서비스 보안 주체라고도 함)를 사용하여 사용 권한을 특정 서비스에 직접 부여할 수 있습니다. 이 메서드는 SQL Server 엔진 및 에이전트 서비스(각각 NT SERVICE\MSSQL$<InstanceName 및 NT SERVICE\SQLAGENT$<InstanceName>>)에 권한을 부여하는 데 사용됩니다. 이 메서드를 사용하면 해당 서비스는 서비스가 실행 중일 때만 데이터베이스 엔진에 액세스할 수 있습니다.

다른 서비스에 사용 권한을 부여할 때도 이와 동일한 메서드를 사용할 수 있습니다. 서비스 SID를 사용하면 서비스 계정 관리 및 유지의 오버헤드가 제거되고 시스템 리소스에 부여된 사용 권한을 보다 강력하고 세밀하게 제어할 수 있습니다.

서비스 SID를 사용할 수 있는 서비스의 예는 다음과 같습니다.

  • System Center Operations Manager 상태 서비스(NT SERVICE\HealthService)
  • WSFC(Windows Server 장애 조치(Failover) 클러스터링) 서비스(NT SERVICE\ClusSvc)

일부 서비스에는 기본적으로 서비스 SID가 없습니다. 서비스 SID는 SC.exe를 사용하여 만들어야 합니다. 이 메서드는 Microsoft System Center Operations Manager 관리자가 SQL 서버 내의 HealthService에 사용 권한을 부여하기 위해 채택했습니다.

서비스 SID가 만들어지고 확인되면 SQL Server 내에서 사용 권한을 부여받아야 합니다. 권한 부여는 SSMS(SQL Server Management Studio) 또는 쿼리를 사용하여 Windows 로그인을 생성하여 수행할 수 있습니다. 로그인이 생성되면 다른 로그인처럼 권한이 부여되고 역할에 추가되며 데이터베이스에 매핑될 수 있습니다.

Login failed for user 'NT AUTHORITY\SYSTEM' 오류가 수신되면 원하는 서비스에 대한 서비스 SID가 있는지, SQL Server에 서비스 SID 로그인이 생성되었는지, SQL Server의 서비스 SID에 적절한 사용 권한이 부여되었는지 확인합니다.

보안

서비스 계정 제거

일반적으로 서비스 계정을 사용하면 서비스가 SQL Server에 로그인할 수 있습니다. 서비스 계정은 서비스 계정 암호를 유지 관리하고 정기적으로 업데이트해야 하기 때문에 관리 복잡성을 가중시킵니다. 또한 서비스 계정 자격 증명은 인스턴스에서 작업을 수행할 때 해당 작업을 마스크하려는 개인이 사용할 수 있습니다.

시스템 계정에 대한 세부적인 사용 권한

시스템 계정은 지금까지 LocalSystem(en-us의 NT AUTHORITY\SYSTEM) 또는 NetworkService(en-us의 NT AUTHORITY\NETWORK SERVICE) 계정에 대한 로그인을 생성하고 해당 로그인 권한을 부여하여 사용 권한을 부여 받았습니다. 이 메서드는 시스템 계정으로 실행 중인 SQL에 모든 프로세스 또는 서비스 사용 권한을 부여합니다.

서비스 SID를 사용하면 특정 서비스에 사용 권한을 부여할 수 있습니다. 이 서비스는 실행 중일 때 권한이 부여된 리소스에만 액세스할 수 있습니다. 예를 들어 HealthServiceLocalSystem으로 실행 중이고 View Server State가 부여된 경우 LocalSystem 계정은 HealthService의 컨텍스트에서 실행 중일 때 View Server State에 대한 권한만 가집니다. 다른 프로세스가 SQL의 서버 상태에 LocalSystem으로 액세스하려고 하면 액세스가 거부됩니다.

예제

A. 서비스 SID 만들기

다음 PowerShell 명령은 System Center Operations Manager 상태 서비스에서 서비스 SID를 만듭니다.

sc.exe --% sidtype "HealthService" unrestricted

중요

--%는 나머지 명령 구문 분석을 중지하도록 PowerShell에 지시합니다. 이는 레거시 명령 및 애플리케이션을 사용할 때 유용합니다.

B. 서비스 SID 쿼리

서비스 SID를 확인하거나 서비스 SID가 있는지 확인하려면 PowerShell에서 다음 명령을 실행합니다.

sc.exe --% qsidtype "HealthService"

중요

--%는 나머지 명령 구문 분석을 중지하도록 PowerShell에 지시합니다. 이는 레거시 명령 및 애플리케이션을 사용할 때 유용합니다.

C. 새로 만든 서비스 SID를 로그인으로 추가

다음 예제에서는 T-SQL을 사용하여 System Center Operations Manager 상태 서비스에 대한 로그인을 만듭니다.

CREATE LOGIN [NT SERVICE\HealthService] FROM WINDOWS
GO

D. 기존 서비스 SID를 로그인으로 추가

다음 예제에서는 T-SQL을 사용하여 클러스터 서비스에 대한 로그인을 만듭니다. 클러스터 서비스에 대한 사용 권한을 직접 부여하면 SYSTEM 계정에 과도한 사용 권한을 부여할 필요가 없습니다.

CREATE LOGIN [NT SERVICE\ClusSvc] FROM WINDOWS
GO

E. 서비스 SID에 사용 권한 부여

가용성 그룹을 관리하는 데 필요한 권한을 클러스터 서비스에 부여합니다.

GRANT ALTER ANY AVAILABILITY GROUP TO [NT SERVICE\ClusSvc]
GO

GRANT CONNECT SQL TO [NT SERVICE\ClusSvc]
GO

GRANT VIEW SERVER STATE TO [NT SERVICE\ClusSvc]
GO

참고

서비스 SID 로그인을 제거하거나 sysadmin 서버 역할에서 제거하면 SQL Server 데이터베이스 엔진에 연결되는 SQL Server의 다양한 구성 요소에 문제가 발생할 수 있습니다. 몇 가지 문제는 다음과 같습니다.

  • SQL Server 에이전트가 시작할 수 없거나 SQL Server 서비스에 연결할 수 없습니다.
  • SQL Server 설치 프로그램에서 다음 Microsoft 기술 자료 문서에 설명된 문제가 발생합니다. https://mskb.pkisolutions.com/kb/955813

SQL Server의 기본 인스턴스인 경우 다음 Transact-SQL 명령을 사용하여 서비스 SID를 추가하여 이 문제를 해결할 수 있습니다.

CREATE LOGIN [NT SERVICE\MSSQLSERVER] FROM WINDOWS WITH DEFAULT_DATABASE=[master], DEFAULT_LANGUAGE=[us_english]

ALTER ROLE sysadmin ADD MEMBER [NT SERVICE\MSSQLSERVER]

CREATE LOGIN [NT SERVICE\SQLSERVERAGENT] FROM WINDOWS WITH DEFAULT_DATABASE=[master], DEFAULT_LANGUAGE=[us_english]

ALTER ROLE sysadmin ADD MEMBER [NT SERVICE\SQLSERVERAGENT]

SQL Server의 명명된 인스턴스를 사용하려면 다음 Transact-SQL 명령을 사용하세요.

CREATE LOGIN [NT SERVICE\MSSQL$SQL2019] FROM WINDOWS WITH DEFAULT_DATABASE=[master], DEFAULT_LANGUAGE=[us_english]

ALTER ROLE sysadmin ADD MEMBER [NT SERVICE\MSSQL$SQL2019]

CREATE LOGIN [NT SERVICE\SQLAgent$SQL2019] FROM WINDOWS WITH DEFAULT_DATABASE=[master], DEFAULT_LANGUAGE=[us_english]

ALTER ROLE sysadmin ADD MEMBER [NT SERVICE\SQLAgent$SQL2019]

이 예제에서 SQL2019는 SQL Server의 인스턴스 이름입니다.

다음 단계

서비스 sid 구조에 대한 자세한 내용은 SERVICE_SID_INFO 구조를 참조하세요.

로그인을 만들 때 사용할 수 있는 추가 옵션에 대해 읽어보세요.

서비스 SID와 함께 역할 기반 보안을 사용하려면 SQL Server에서 역할 만들기에 대해 읽어보세요.

SQL Server의 서비스 SID에 권한을 부여하는 다양한 방법을 읽어보세요.

SQL Server에 대한 서비스 계정을 구성하는 방법에 대한 자세한 내용은 Windows 서비스 계정 및 권한 구성을 참조하세요.