서버 수준 역할

적용 대상:SQL ServerAzure SQL Managed InstanceAnalytics Platform System (PDW)

SQL Server는 서버의 권한을 관리하는 데 도움이 되는 서버 수준 역할을 제공합니다. 이러한 역할은 다른 보안 주체들을 하나로 묶는 보안 주체 역할을 합니다. 서버 수준 역할은 서버 측 사용 권한 범위에 속합니다. (역할은 Windows 운영 체제의 그룹과 같습니다.)

SQL Server 2019(15.x) 및 이전 버전에서는 9개의 고정 서버 역할을 제공했습니다. 고정된 서버 역할에 부여된 권한은 변경할 수 없습니다( 공개 역할 제외). SQL Server 2012(11.x)부터는 사용자 정의 서버 역할을 만들어 여기에 서버 수준 사용 권한을 추가할 수 있습니다.

SQL Server 2022 (16.x)에는 최소 권한 원칙을 염두에 두고 특별히 설계된 10개의 추가 서버 역할이 포함되어 있습니다. 이 역할들은 접두 ##MS_ 사와 접미사 ##를 붙여 일반 사용자 생성 프린시펄 및 커스텀 서버 역할과 구별합니다. 이 새로운 역할들은 서버 범위에 적용되는 권한을 포함하지만, 서버 역할 제외 ##MS_LoginManager## 의 개별 데이터베이스로도 상속될 수 있습니다.

SQL Server 온-프레미스와 마찬가지로 서버 권한은 계층적으로 구성됩니다. 이러한 서버 수준 역할이 보유한 권한은 데이터베이스 권한으로 전파될 수 있습니다. 사용 권한이 데이터베이스 수준에서 효과적으로 유용하려면 로그인이 모든 데이터베이스에 ##MS_DatabaseConnector## 권한을 부여하는 서버 수준 역할 CONNECT(SQL Server 2022(16.x)부터)의 멤버이거나 개별 데이터베이스에 사용자 계정이 있어야 합니다. 이 요구사항은 데이터베이스에도 master 적용됩니다.

다음 예제를 고려합니다. 서버 수준 역할 ##MS_ServerStateReader## 사용 권한 VIEW SERVER STATE보유합니다. 이 역할의 멤버인 로그인에는 masterWideWorldImporters 데이터베이스에 사용자 계정이 있습니다. 또한 이 사용자는 상속을 통해 해당 두 데이터베이스에서 VIEW DATABASE STATE 권한이 있습니다.

서버 수준 보안 주체(SQL Server 로그인, Windows 계정 및 Windows 그룹)를 서버 수준 역할에 추가할 수 있습니다. 고정 서버 역할의 각 구성원은 같은 역할에 다른 로그인을 추가할 수 있습니다. 사용자 정의 서버 역할의 멤버는 역할에 다른 서버 주체를 추가할 수 없습니다.

고정 서버 수준 역할

참고

이 역할들은 SQL Server 2022(16.x) 이전에 도입되었으며, Azure SQL Database나 Azure Synapse Analytics에서는 제공되지 않습니다. Azure SQL Database는 자체 서버 수준 역할을 가지고 있으며, 이는 SQL Server 2022 (16.x)에서 도입된 역할에 대응합니다. 자세한 내용은 Azure SQL Database 서버 역할에 관한 권한 관리 및 SQL Database, SQL Managed Instance, Azure Synapse Analytics에 대한 데이터베이스 접근 권한 권한 부여를 참조하세요.

다음 표에서는 고정 서버 수준 역할과 해당 기능을 보여 줍니다.

고정 서버 수준 역할 설명
sysadmin sysadmin 고정 서버 역할의 멤버는 서버에서 모든 활동을 수행할 수 있습니다. 중요: 이 역할의 멤버에게 권한을 거부할 수 없습니다.
serveradmin serveradmin 고정 서버 역할의 멤버는 서버 전체 구성 옵션을 변경하고 서버를 종료할 수 있습니다.
securityadmin securityadmin 고정 서버 역할의 멤버는 로그인 및 해당 속성을 관리합니다. 이러한 멤버는 서버 수준의 사용 권한을 GRANT, DENYREVOKE할 수 있습니다. 데이터베이스에 대한 액세스 권한이 있는 경우 데이터베이스 수준 사용 권한도 GRANTDENYREVOKE 사용할 수 있습니다. 또한 이 역할의 멤버는 SQL Server 로그인의 암호를 다시 설정할 수 있습니다.

중요: 데이터베이스 엔진에 대한 액세스 권한을 부여하고 사용자 권한을 구성하는 기능을 통해 보안 관리자는 대부분의 서버 권한을 할당할 수 있습니다. securityadmin 역할을 시스템 관리자 역할과 동등하게 취급하세요. 대안으로 SQL Server 2022(16.x)부터는 새로운 고정 서버 역할 ##MS_LoginManager##를 사용하는 것이 좋습니다.
processadmin processadmin 고정 서버 역할의 멤버는 SQL Server 인스턴스에서 실행 중인 프로세스를 종료할 수 있습니다.
setupadmin setupadmin 고정 서버 역할의 멤버는 Transact-SQL 문을 사용하여 연결된 서버를 추가 및 제거할 수 있습니다. (Management Studio를 사용할 때는 sysadmin 멤버십이 필요합니다.)
bulkadmin bulkadmin 고정 서버 역할의 멤버는 BULK INSERT 문을 실행할 수 있습니다. 이 역할의 멤버는 특정 조건에서 잠재적으로 권한을 상승시킬 수 있습니다. 이 역할을 할당할 때 최소 권한 원칙을 적용하고 멤버가 수행하는 모든 활동을 모니터링합니다.

Sql Server on Linux에서는 bulkadmin 역할 또는 ADMINISTER BULK OPERATIONS 권한이 지원되지 않습니다.

Microsoft Entra 인증 기반 로그인에는 리눅스나 Windows에서 벌크 연산(BULK INSERT문장)이 지원되지 않습니다. 이 시나리오에서는 sysadmin 역할의 멤버만 SQL Server에 대해 대량 삽입을 수행할 수 있습니다.
diskadmin diskadmin 고정 서버 역할의 멤버는 디스크 파일을 관리할 수 있습니다.
dbcreator dbcreator 고정 서버 역할의 멤버는 데이터베이스를 생성, 변경, 삭제 및 복원할 수 있습니다.
public 모든 SQL Server 로그인은 공용 서버 역할에 속합니다. 서버 보안 주체에 보안 개체에 대한 특정 권한이 부여되거나 거부되지 않으면 사용자는 해당 개체에 대한 공용에게 부여된 권한을 상속합니다. 모든 사용자가 개체를 사용할 수 있도록 하려는 경우에만 모든 개체에 대한 공용 권한을 할당합니다. 공용멤버 자격을 변경할 수 없습니다.

참고:공공 업무는 다른 직무와 다르게 작동합니다. 공개 고정 서버 역할에 대해 권한을 부여하거나 거부하거나 취소할 수 있습니다.

중요

다음 서버 역할에서 제공하는 대부분의 권한은 Azure Synapse Analytics에는 적용되지 않습니다: processadmin, serveradmin, setupadmin, diskadmin.

SQL Server 2022에 도입된 고정 서버 수준 역할

다음 표에서는 SQL Server 2022(16.x)에 도입된 고정 서버 수준 역할 및 해당 기능을 보여 줍니다.

참고

Azure SQL Database와 Azure SQL Managed Instance는 이러한 역할을 지원합니다. Azure Synapse Analytics는 그렇지 않습니다.

서버에 어떤 역할이 있는지 확인하려면 type_descSERVER_ROLE인 행에 대해 sys.server_principals를 쿼리하세요.

고정 서버 수준 역할 설명
##MS_DatabaseConnector## ##MS_DatabaseConnector## 고정 서버 역할의 멤버는 데이터베이스의 사용자 계정을 연결하지 않고도 모든 데이터베이스에 연결할 수 있습니다.

특정 데이터베이스에 대한 CONNECT 권한을 거부하기 위해 사용자는 데이터베이스에서 이 로그인에 대해 일치하는 사용자 계정을 만든 다음 데이터베이스 사용자에게 DENY 권한을 CONNECT 수 있습니다. 이 DENY 권한은 해당 역할에서 오는 GRANT CONNECT 권한을 재정의합니다.
##MS_LoginManager## ##MS_LoginManager## 고정 서버 역할의 멤버는 로그인을 만들고 삭제하고 수정할 수 있습니다. 이전 고정 서버 역할 securityadmin과 달리 이 역할은 멤버의 GRANT 권한을 허용하지 않습니다. 최소 권한 원칙을 준수하는 데 도움이 되는 더 제한된 역할입니다.
##MS_DatabaseManager## 고정 서버 역할의 멤버는 ##MS_DatabaseManager## 데이터베이스를 만들고 소유한 데이터베이스를 삭제할 수 있습니다. 데이터베이스를 만드는 ##MS_DatabaseManager## 역할의 멤버는 해당 데이터베이스의 소유자가 되므로 해당 사용자가 해당 데이터베이스에 dbo 사용자로 연결할 수 있습니다. dbo 사용자는 데이터베이스의 모든 데이터베이스 권한을 갖습니다. 이 역할의 멤버는 특정 조건에서 잠재적으로 권한을 상승시킬 수 있습니다. 이 역할을 할당할 때 최소 권한 원칙을 적용하고 멤버가 수행하는 모든 활동을 모니터링합니다. Azure SQL Database에서는 에 있는 master 고정 데이터베이스 역할 대신 이 서버 역할을 사용합니다.
##MS_ServerStateManager## ##MS_ServerStateManager## 고정 서버 역할의 멤버는 ##MS_ServerStateReader## 역할과 동일한 권한을 갖습니다. 이 역할에는 또한 ALTER SERVER STATE 권한이 있으며, 이 권한을 통해 DBCC FREEPROCCACHE, DBCC FREESYSTEMCACHE ('ALL'), DBCC SQLPERF()와 같은 여러 관리 작업에 액세스할 수 있습니다.
##MS_ServerStateReader## ##MS_ServerStateReader## 고정 서버 역할의 구성원은 VIEW SERVER STATE에서 다루는 모든 동적 관리 뷰(DMV) 및 함수를 읽을 수 있습니다. 회원들은 사용자 계정을 가진 모든 데이터베이스에 대한 권한도 보유합니다 VIEW DATABASE STATE .
##MS_ServerPerformanceStateReader## ##MS_ServerPerformanceStateReader## 고정 서버 역할의 구성원은 VIEW SERVER PERFORMANCE STATE에서 다루는 모든 동적 관리 뷰(DMV) 및 함수를 읽을 수 있습니다. 회원들은 사용자 계정을 가진 모든 데이터베이스에 대한 권한도 보유합니다 VIEW DATABASE PERFORMANCE STATE . 이 역할은 의 부분집합 ##MS_ServerStateReader##으로, 최소 특권 원칙을 준수하는 데 도움을 줍니다.
##MS_ServerSecurityStateReader## ##MS_ServerSecurityStateReader## 고정 서버 역할의 구성원은 VIEW SERVER SECURITY STATE에서 다루는 모든 동적 관리 뷰(DMV) 및 함수를 읽을 수 있습니다. 회원들은 사용자 계정을 가진 모든 데이터베이스에 대한 권한도 보유합니다 VIEW DATABASE SECURITY STATE . 이 역할은 의 작은 부분집합 ##MS_ServerStateReader##으로, 최소 특권 원칙을 준수하는 데 도움을 줍니다.
##MS_DefinitionReader## ##MS_DefinitionReader## 고정 서버 역할의 멤버는 VIEW ANY DEFINITION에서 다루는 모든 카탈로그 뷰를 읽을 수 있습니다. 회원들은 사용자 계정을 가진 모든 데이터베이스에 대한 권한도 보유합니다 VIEW DEFINITION .
##MS_PerformanceDefinitionReader## ##MS_PerformanceDefinitionReader## 고정 서버 역할의 멤버는 VIEW ANY PERFORMANCE DEFINITION에 포함되는 모든 카탈로그 뷰를 읽을 수 있습니다. 회원들은 사용자 계정을 가진 모든 데이터베이스에 대한 권한도 보유합니다 VIEW PERFORMANCE DEFINITION . 이 역할은 ##MS_DefinitionReader##의 부분 집합입니다.
##MS_SecurityDefinitionReader## ##MS_SecurityDefinitionReader## 고정 서버 역할의 구성원은 VIEW ANY SECURITY DEFINITION이 적용되는 모든 카탈로그 뷰를 읽을 수 있습니다. 회원들은 사용자 계정을 가진 모든 데이터베이스에 대한 권한도 보유합니다 VIEW SECURITY DEFINITION . 이 역할은 의 작은 부분집합 ##MS_DefinitionReader##으로, 최소 특권 원칙을 준수하는 데 도움을 줍니다.

고정 서버 역할에 대한 사용 권한

각 고정 서버 역할에는 특정 권한이 할당되어 있습니다.

SQL Server 2022의 새 고정 서버 역할 권한

다음 표는 서버 수준 역할에 할당된 권한을 보여 줍니다. 또한 사용자가 개별 데이터베이스에 연결할 수 있는 경우 상속된 데이터베이스 수준 권한도 보여 줍니다.

고정 서버 수준 역할 서버 수준 사용 권한 데이터베이스 수준 사용 권한
##MS_DatabaseConnector## - CONNECT ANY DATABASE - CONNECT
##MS_LoginManager## - CREATE LOGIN
- ALTER ANY LOGIN
해당 없음
##MS_DatabaseManager## - CREATE ANY DATABASE
- ALTER ANY DATABASE
- ALTER
##MS_ServerStateManager## - ALTER SERVER STATE
- VIEW SERVER STATE
- VIEW SERVER PERFORMANCE STATE
- VIEW SERVER SECURITY STATE
- VIEW DATABASE STATE
- VIEW DATABASE PERFORMANCE STATE
- VIEW DATABASE SECURITY STATE
##MS_ServerStateReader## - VIEW SERVER STATE
- VIEW SERVER PERFORMANCE STATE
- VIEW SERVER SECURITY STATE
- VIEW DATABASE STATE
- VIEW DATABASE PERFORMANCE STATE
- VIEW DATABASE SECURITY STATE
##MS_ServerPerformanceStateReader## - VIEW SERVER PERFORMANCE STATE - VIEW DATABASE PERFORMANCE STATE
##MS_ServerSecurityStateReader## - VIEW SERVER SECURITY STATE - VIEW DATABASE SECURITY STATE
##MS_DefinitionReader## - VIEW ANY DATABASE
- VIEW ANY DEFINITION
- VIEW ANY PERFORMANCE DEFINITION
- VIEW ANY SECURITY DEFINITION
- VIEW DEFINITION
- VIEW PERFORMANCE DEFINITION
- VIEW SECURITY DEFINITION
##MS_PerformanceDefinitionReader## - VIEW ANY PERFORMANCE DEFINITION - VIEW PERFORMANCE DEFINITION
##MS_SecurityDefinitionReader## - VIEW ANY SECURITY DEFINITION - VIEW SECURITY DEFINITION

SQL Server 2019 및 이전 버전의 서버 역할 권한

다음 그래픽은 레거시 서버 역할(SQL Server 2019(15.x) 및 이전 버전)에 할당된 사용 권한을 보여 줍니다.

고정 서버 역할 권한을 보여 주는 다이어그램

CONTROL SERVER 권한은 비슷하지만 sysadmin 고정 서버 역할과 동일하지 않습니다. CONTROL SERVER 권한이 있는 보안 주체는 특정 사용 권한을 거부할 수 있습니다. 보안 관점에서, CONTROL SERVER를 가진 보안 주체를 sysadmin 멤버와 동일하게 간주합니다. 이는 여러 가지 방법으로 CONTROL SERVER에서 전체 sysadmin으로 권한을 상승시킬 수 있기 때문입니다. 여러 DBCC 명령과 많은 시스템 프로시저에는 sysadmin 고정 서버 역할의 멤버 자격이 필요합니다.

서버 수준 사용 권한

서버 수준 권한만 사용자 정의 서버 역할에 추가할 수 있습니다. 서버 수준 사용 권한을 나열하려면 다음 문을 실행하세요. 서버 수준 사용 권한은 다음과 같습니다.

SELECT *
FROM sys.fn_builtin_permissions('SERVER')
ORDER BY permission_name;

사용 권한에 대한 자세한 내용은 권한(데이터베이스 엔진)sys.fn_builtin_permissions참조하세요.

서버 역할 수준에서 작업하기

다음 표에서는 서버 수준 역할로 작업하는 데 사용할 수 있는 명령, 보기 및 함수에 대해 설명합니다.

기능 유형 설명
sp_helpsrvrole 메타데이터 서버 수준 역할 목록을 반환합니다.
sp_helpsrvrolemember 메타데이터 서버 수준 역할의 멤버에 대한 정보를 반환합니다.
sp_srvrolepermission 메타데이터 서버 수준 역할의 사용 권한을 표시합니다.
IS_SRVROLEMEMBER 메타데이터 SQL Server 로그인이 지정된 서버 수준 역할의 멤버인지 여부를 나타냅니다.
sys.server_role_members 메타데이터 각 서버 수준 역할의 각 구성원에 대해 하나의 행을 반환합니다.
CREATE SERVER ROLE 명령어 사용자 정의 서버 역할을 만듭니다.
ALTER SERVER ROLE 명령어 서버 역할의 멤버 자격을 변경하거나 사용자 정의 서버 역할의 이름을 변경합니다.
DROP SERVER ROLE 명령어 사용자 정의 서버 역할을 제거합니다.
sp_addsrvrolemember 명령어 서버 수준 역할에 로그인 멤버를 추가합니다. 더 이상 권장되지 않음. ALTER SERVER ROLE를 대신 사용하세요.
sp_dropsrvrolemember 명령어 서버 수준 역할에서 SQL Server 로그인 또는 Windows 사용자 또는 그룹을 제거합니다. 더 이상 권장되지 않음. ALTER SERVER ROLE를 대신 사용하세요.

Azure Arc에서 사용하도록 설정된 SQL Server와 관련된 역할

비최소 권한 모드에서 SQL Server Azure 확장을 설치하는 경우 설치에는 다음이 포함됩니다:

  1. 서버 수준 역할을 만듭니다. SQLArcExtensionServerRole
  2. 데이터베이스 수준 역할을 만듭니다. SQLArcExtensionUserRole
  3. NT AUTHORITY\SYSTEM 각 역할에 계정을 추가합니다.
  4. 각 데이터베이스의 데이터베이스 수준에서 매핑 NT AUTHORITY\SYSTEM
  5. 활성화된 기능에 대한 최소 권한 부여

또는 Azure Arc 사용하도록 설정된 SQL Server 최소 권한 모드에서 실행되도록 구성할 수 있습니다. 자세한 내용은 Azure Arc로 설정된 최소 권한 SQL Server 운영을 참조하세요.

또한 SQL Server Azure 확장은 특정 기능에 더 이상 필요하지 않은 경우 이러한 역할에 대한 권한을 취소합니다.

참고

앞서 설명한 작업을 수행하려면 배포자가 SQL Server에 NT AUTHORITY\SYSTEM로 연결해야 합니다. NT AUTHORITY\SYSTEM 로그인이 제거되거나, CONNECT SQL 권한이 비활성화 또는 거부되면, 배포자는 이 작업들을 수행할 수 없으며 Azure SQL Server 확장이 프로비전하는 데 실패합니다. 이 로그인을 확인하고 복원하는 단계는 필수 구성 요소를 참조하세요.

SqlServerExtensionPermissionProvider은 Windows 작업입니다. SQL Server에서 권한을 부여하거나 취소하기 위해 특정 조건이 감지될 때 Deployer.exe를 실행합니다.

  • 호스트에 새 SQL Server 인스턴스가 설치됨
  • 호스트에서 SQL Server 인스턴스를 제거합니다.
  • 인스턴스 수준 기능을 사용하거나 사용하지 않도록 설정하거나 설정이 업데이트됨
  • 확장 서비스가 다시 시작됨
  • JIT(Just-In-Time) 권한이 사용 또는 사용 안 함

참고

2024년 7월 릴리스 SqlServerExtensionPermissionProvider 이전에는 매시간 실행되는 예약된 작업이었습니다.

자세한 내용은 SQL Server용 Azure 확장에 대한 Windows 서비스 계정 및 사용 권한 구성을 검토하세요.

SQL Server Azure 확장을 제거하면 서버 수준 및 데이터베이스 수준 역할이 제거됩니다.

사용 권한은 사용 권한을 검토하세요.