서버 수준 역할

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

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

SQL Server 2019 및 이전 버전에서는 9개의 고정 서버 역할을 제공했습니다. 고정 서버 역할에 부여된 권한(공용 제외)은 변경할 수 없습니다. SQL Server 2012(11.x)부터 사용자 정의 서버 역할을 만들고 사용자 정의 서버 역할에 서버 수준 권한을 추가할 수 있습니다. SQL Server 2022(16.x)에는 최소 권한 원칙을 염두에 두고 특별히 설계된 10개의 추가 서버 역할이 제공됩니다. 여기에는 접두사와 ##MS_ 접미사가 ## 있어 사용자가 만든 다른 일반 보안 주체 및 사용자 지정 서버 역할과 구별할 수 있습니다. 이러한 새 역할에는 서버 범위에 적용되는 권한이 포함되어 있지만 개별 데이터베이스에 상속할 수도 있습니다(##MS_LoginManager## 서버 역할 제외).

SQL Server 온-프레미스와 마찬가지로 서버 권한은 계층적으로 구성됩니다. 이러한 서버 수준 역할이 보유한 권한은 데이터베이스 권한으로 전파될 수 있습니다. 사용 권한이 데이터베이스 수준에서 효과적으로 유용하려면 로그인이 서버 수준 역할 ##MS_Database커넥트or##(SQL Server 2022(16.x)부터)의 멤버이거나 모든 데이터베이스에 CONNECT 권한을 부여하거나 개별 데이터베이스에 사용자 계정이 있어야 합니다. 데이터베이스에도 적용됩니다 master . 다음 예제를 살펴보세요. 서버 수준 역할 ##MS_ServerStateReader##은 VIEW SERVER STATE 권한을 보유합니다. 이 역할의 멤버인 로그인에는 데이터베이스에 사용자 계정이 있습니다WideWorldImporters. master 그러면 이 사용자는 상속을 통해 해당 두 데이터베이스의 VIEW DATABASE STATE 권한도 갖게 됩니다.

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

고정 서버 수준 역할

참고 항목

SQL Server 2022(16.x) 이전에 도입된 이러한 서버 수준 역할은 Azure SQL Database 또는 Azure Synapse Analytics에서 사용할 수 없습니다. SQL Server 2022(16.x)에 도입된 서버 수준 역할과 동일한 권한 관리를 위한 특별한 Azure SQL Database 서버 역할이 있습니다. SQL Database에 대한 자세한 내용은 데이터베이스 액세스 제어 및 부여를 참조하세요.

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

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

중요: 데이터베이스 엔진 대한 액세스 권한을 부여하고 사용자 권한을 구성하는 기능을 사용하면 보안 관리자가 대부분의 서버 권한을 할당할 수 있습니다. securityadmin 역할은 sysadmin 역할과 동일하게 처리되어야 합니다. 또는 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 권한이 지원되지 않습니다. SQL Server on Linux의 경우 sysadmin만 대량 삽입을 수행할 수 있습니다.
diskadmin diskadmin 고정 서버 역할은 디스크 파일을 관리하는 데 사용됩니다.
dbcreator dbcreator 고정 서버 역할의 멤버는 데이터베이스를 만들고, 변경하고, 삭제하고, 복원할 수 있습니다.
public 모든 SQL Server 로그인은 공용 서버 역할에 속합니다. 서버 보안 주체가 보안 개체에 대한 특정 사용 권한을 부여하거나 거부하지 않은 경우 사용자는 해당 개체에 대해 공용으로 부여된 사용 권한을 상속합니다. 모든 사용자가 개체를 사용할 수 있도록 하려는 경우에만 모든 개체에 대한 공용 권한을 할당합니다. 공용 멤버 자격은 변경할 수 없습니다.

참고:public 은 다른 역할과 다르게 구현되며 공용 고정 서버 역할에서 권한을 부여, 거부 또는 취소할 수 있습니다.

Important

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

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

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

참고 항목

이러한 서버 수준 권한은 Azure SQL Managed Instance 또는 Azure Synapse Analytics에 사용할 수 없습니다. ##MS_PerformanceDefinitionReader##, ##MS_ServerPerformanceStateReader####MS_ServerSecurityStateReader### 은 SQL Server 2022(16.x)에서 도입되었으며 Azure SQL Database에서는 사용할 수 없습니다.

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

특정 데이터베이스에 대한 CONNECT 권한을 거부하려면 사용자는 데이터베이스에서 이 로그인을 위한 일치하는 사용자 계정을 만든 다음 데이터베이스 사용자에 대한 CONNECT 권한을 DENY할 수 있습니다. 이 DENY 권한은 이 역할에서 비롯된 GRANT CONNECT 권한을 무효화합니다.
##MS_LoginManager## ##MS_LoginManager## 고정 서버 역할의 멤버는 로그인을 만들고 삭제하고 수정할 수 있습니다. 이전 고정 서버 역할 securityadmin과 달리 이 역할은 멤버의 GRANT 권한을 허용하지 않습니다. 최소 권한의 원칙을 준수하는 데 도움이 되는 더 제한된 역할입니다.
##MS_DatabaseManager## ##MS_DatabaseManager## 고정 서버 역할의 멤버는 데이터베이스를 만들고 삭제할 수 있습니다. 데이터베이스를 만드는 ##MS_DatabaseManager## 역할의 멤버는 해당 데이터베이스 소유자가 되어 사용자가 dbo 사용자로 데이터베이스에 연결할 수 있도록 허용합니다. dbo 사용자는 데이터베이스의 모든 데이터베이스 권한을 갖습니다. ##MS_DatabaseManager## 역할의 멤버는 소유하지 않은 데이터베이스에 액세스하는 권한이 없을 수도 있습니다. 이 서버 역할은 SQL Server의 dbcreator 역할과 동일한 권한을 가지지만, 이 역할은 Azure SQL Database에도 존재하므로 다른 환경에서 동일한 스크립트를 사용하는 데 도움이 되므로 이전보다 이 새 역할을 사용하는 것이 좋습니다.
##MS_ServerStateManager## ##MS_ServerStateManager## 고정 서버 역할의 멤버는 ##MS_ServerStateReader## 역할과 동일한 권한을 갖습니다. 또한 다음과 같은 DBCC FREEPROCCACHEDBCC FREESYSTEMCACHE ('ALL')여러 관리 작업에 액세스할 수 있는 ALTER SERVER STATE 권한을 보유합니다.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
변경
##MS_ServerStateManager## ALTER SERVER STATE
VIEW SERVER STATE
서버 성능 상태 보기
서버 보안 상태 보기
데이터베이스 상태 보기
데이터베이스 성능 상태 보기
데이터베이스 보안 상태 보기
##MS_ServerStateReader## VIEW SERVER STATE
서버 성능 상태 보기
서버 보안 상태 보기
데이터베이스 상태 보기
데이터베이스 성능 상태 보기
데이터베이스 보안 상태 보기
##MS_ServerPerformanceStateReader## 서버 성능 상태 보기 데이터베이스 성능 상태 보기
##MS_ServerSecurityStateReader## 서버 보안 상태 보기 데이터베이스 보안 상태 보기
##MS_DefinitionReader## VIEW ANY DATABASE
VIEW ANY DEFINITION
성능 정의 보기
모든 보안 정의 보기
VIEW DEFINITION
성능 정의 보기
보안 정의 보기
##MS_PerformanceDefinitionReader## 성능 정의 보기 성능 정의 보기
##MS_SecurityDefinitionReader## 모든 보안 정의 보기 보안 정의 보기

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

다음 그래픽에서는 레거시 서버 역할(SQL Server 2019 및 이전 버전)에 할당된 사용 권한을 보여 줍니다.
Diagram showing fixed server role permissions.

Important

CONTROL SERVER 권한은 sysadmin 고정 서버 역할과 유사하지만 동일하지는 않습니다. 사용 권한은 역할 멤버 자격을 의미하지 않으며 역할 멤버 자격은 권한을 부여하지 않습니다. (예: CONTROL SERVER는 sysadmin 고정 서버 역할의 멤버 자격을 의미하지 않습니다.) 그러나 역할과 동등한 권한 간에 가장할 수 있는 경우도 있습니다. 대부분의 DBCC 명령 및 많은 시스템 절차를 수행하려면 sysadmin 고정 서버 역할의 멤버 자격이 필요합니다.

서버 수준 사용 권한

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

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

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

서버 수준 역할 작업

다음 표에서는 서버 수준 역할을 사용하는 데 사용할 수 있는 명령, 뷰 및 함수에 대해 설명합니다.

기능 Type 설명
sp_helpsrvrole(Transact-SQL) 메타데이터 서버 수준 역할 목록을 반환합니다.
sp_helpsrvrolemember(Transact-SQL) 메타데이터 서버 수준 역할의 멤버에 대한 정보를 반환합니다.
sp_srvrolepermission(Transact-SQL) 메타데이터 서버 수준 역할의 사용 권한을 표시합니다.
IS_SRVROLEMEMBER(Transact-SQL) 메타데이터 SQL Server 로그인이 지정된 서버 수준 역할의 멤버인지 여부를 나타냅니다.
sys.server_role_members(Transact-SQL) 메타데이터 각 서버 수준 역할의 각 멤버에 대해 하나의 행을 반환합니다.
CREATE SERVER ROLE(Transact-SQL) 명령 사용자 정의 서버 역할을 만듭니다.
ALTER SERVER ROLE(Transact-SQL) 명령 서버 역할의 멤버 자격을 변경하거나 사용자 정의 서버 역할의 이름을 변경합니다.
DROP SERVER ROLE(Transact-SQL) 명령 사용자 정의 서버 역할을 제거합니다.
sp_addsrvrolemember(Transact-SQL) 명령 로그인을 서버 수준 역할의 멤버로 추가합니다. 사용되지 않음. 대신 ALTER SERVER ROLE을 사용합니다.
sp_dropsrvrolemember(Transact-SQL) 명령 서버 수준 역할에서 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. 사용 가능한 기능에 대한 최소 사용 권한 부여

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

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

사용 권한은 사용 권한을 검토 합니다.