데이터베이스 수준 역할

데이터베이스에서 사용 권한을 쉽게 관리하기 위해 SQL Server에서는 다른 보안 주체를 그룹화하는 보안 주체인 다양한 역할을 제공합니다. 역할은 Microsoft Windows 운영 체제의 그룹과 같습니다. 데이터베이스 수준 역할은 데이터베이스 측 사용 권한 범위에 속합니다. 

SQL Server의 데이터베이스 수준 역할로는 데이터베이스에 미리 정의된 고정 데이터베이스 역할과 사용자가 만들 수 있는 유연한 데이터베이스 역할의 두 가지 유형이 있습니다.

고정 데이터베이스 역할은 데이터베이스 수준에서 정의되며 각 데이터베이스에 존재합니다. db_ownerdb_securityadmin 데이터베이스 역할의 멤버는 고정 데이터베이스 역할 멤버 자격을 관리할 수 있습니다. 그러나 db_owner 데이터베이스 역할의 멤버는 db_owner 고정 데이터베이스 역할에 멤버를 추가할 수 있습니다. msdb 데이터베이스에는 몇 가지 특수한 용도의 고정 데이터베이스 역할도 있습니다.

데이터베이스 계정과 다른 SQL Server 역할을 데이터베이스 수준 역할에 추가할 수 있습니다. 고정 서버 역할의 각 멤버는 같은 역할에 다른 로그인을 추가할 수 있습니다.

중요 정보중요

유연한 데이터베이스 역할을 고정 역할의 멤버로 추가하지 마십시오. 이로 인해 원하지 않는 권한 상승이 설정될 수 있습니다.

다음 표에서는 고정 데이터베이스 수준 역할과 기능을 보여 줍니다. 이러한 역할은 모든 데이터베이스에 있습니다.

데이터베이스 수준 역할 이름

설명

db_owner

db_owner 고정 데이터베이스 역할의 멤버는 데이터베이스에서 모든 구성 및 유지 관리 작업을 수행할 수 있고 데이터베이스를 삭제할 수도 있습니다.

db_securityadmin

db_securityadmin 고정 데이터베이스 역할의 멤버는 역할 멤버 자격을 수정하고 사용 권한을 관리할 수 있습니다. 이 역할에 보안 주체를 추가하면 원하지 않는 권한 상승이 설정될 수 있습니다.

db_accessadmin

db_accessadmin 고정 데이터베이스 역할의 멤버는 Windows 로그인, Windows 그룹 및 SQL Server 로그인의 데이터베이스에 대한 액세스를 추가하거나 제거할 수 있습니다.

db_backupoperator

db_backupoperator 고정 데이터베이스 역할의 멤버는 데이터베이스를 백업할 수 있습니다.

db_ddladmin

db_ddladmin 고정 데이터베이스 역할의 멤버는 데이터베이스에서 모든 DDL(데이터 정의 언어) 명령을 실행할 수 있습니다.

db_datawriter

db_datawriter 고정 데이터베이스 역할의 멤버는 모든 사용자 테이블에서 데이터를 추가, 삭제 또는 변경할 수 있습니다.

db_datareader

db_datareader 고정 데이터베이스 역할의 멤버는 모든 사용자 테이블의 모든 데이터를 읽을 수 있습니다.

db_denydatawriter

db_denydatawriter 고정 데이터베이스 역할의 멤버는 데이터베이스 내의 사용자 테이블에 있는 데이터를 추가, 수정 또는 삭제할 수 없습니다.

db_denydatareader

db_denydatareader 고정 데이터베이스 역할의 멤버는 데이터베이스 내에 있는 사용자 테이블의 데이터를 읽을 수 없습니다.

데이터베이스 수준 고정 역할의 사용 권한에 대한 자세한 내용은 고정 데이터베이스 역할의 사용 권한(데이터베이스 엔진)을 참조하십시오.

msdb 역할

msdb 데이터베이스에는 다음 표에서 보여 주는 특수한 용도의 역할이 포함되어 있습니다.

msdb 역할 이름

설명

db_ssisadmin

db_ssisoperator

db_ssisltduser

이러한 데이터베이스 역할의 멤버는 SSIS를 관리 및 사용할 수 있습니다. 이전 버전에서 업그레이드된 SQL Server의 인스턴스에는 SSIS 대신 DTS(데이터 변환 서비스)를 사용하여 명명된 이전 버전의 역할이 포함될 수 있습니다. 자세한 내용은 Integration Services 역할 사용을 참조하십시오.

dc_admin

dc_operator

dc_proxy

이러한 데이터베이스 역할의 멤버는 데이터 수집기를 관리 및 사용할 수 있습니다. 자세한 내용은 데이터 수집기 보안을 참조하십시오.

PolicyAdministratorRole

db_ PolicyAdministratorRole 데이터베이스 역할의 멤버는 정책 기반 관리 정책 및 조건의 모든 구성 및 유지 관리 작업을 수행할 수 있습니다. 자세한 내용은 정책 기반 관리를 사용하여 서버 관리를 참조하십시오.

ServerGroupAdministratorRole

ServerGroupReaderRole

이러한 데이터베이스 역할의 멤버는 등록된 서버 그룹을 관리 및 사용할 수 있습니다. 자세한 내용은 서버 그룹 만들기를 참조하십시오.

dbm_monitor

데이터베이스 미러링 모니터에서 첫 번째 데이터베이스를 등록하면 msdb 데이터베이스에서 만들어집니다. dbm_monitor 역할은 시스템 관리자가 사용자를 할당할 때까지 멤버가 없습니다.

중요 정보중요

db_ssisadmin 및 dc_admin 역할의 멤버는 해당 권한을 sysadmin으로 승격할 수 있습니다. 이러한 권한 승격이 발생할 수 있는 것은 이러한 역할이 Integration Services 패키지를 수정할 수 있고 SQL Server에서 SQL Server 에이전트의 sysadmin 보안 컨텍스트를 사용하여 Integration Services 패키지를 실행할 수 있기 때문입니다. 유지 관리 계획, 데이터 컬렉션 집합 및 기타 Integration Services 패키지를 실행할 때 이러한 권한 상승이 발생하지 않도록 하려면 패키지를 실행하는 SQL Server 에이전트 작업이 제한된 권한을 갖는 프록시 계정을 사용하도록 구성하거나 db_ssisadmin 및 dc_admin 역할에 sysadmin 멤버만 추가합니다.

데이터베이스 수준 역할 작업

다음 표에서는 데이터베이스 수준 역할 작업을 위한 명령, 뷰 및 함수에 대해 설명합니다.

기능

유형

설명

sp_helpdbfixedrole(Transact-SQL)

메타데이터

고정 데이터베이스 역할의 목록을 반환합니다.

sp_dbfixedrolepermission(Transact-SQL)

메타데이터

고정 데이터베이스 역할에 대한 사용 권한을 표시합니다.

sp_helprole(Transact-SQL)

메타데이터

현재 데이터베이스의 역할에 관한 정보를 반환합니다.

sp_helprolemember(Transact-SQL)

메타데이터

현재 데이터베이스에 있는 역할의 멤버에 관한 정보를 반환합니다.

sys.database_role_members(Transact-SQL)

메타데이터

각 데이터베이스 역할의 각 멤버에 대해 행을 반환합니다.

IS_MEMBER(Transact-SQL)

메타데이터

현재 사용자가 지정된 Microsoft Windows 그룹 또는 Microsoft SQL Server 데이터베이스 역할의 멤버인지 여부를 표시합니다.

CREATE ROLE(Transact-SQL)

명령

현재 데이터베이스에 새 데이터베이스 역할을 만듭니다.

ALTER ROLE(Transact-SQL)

명령

데이터베이스 역할의 이름을 변경합니다.

DROP ROLE(Transact-SQL)

명령

데이터베이스에서 역할을 제거합니다.

sp_addrole(Transact-SQL)

명령

현재 데이터베이스에 새 데이터베이스 역할을 만듭니다.

sp_droprole(Transact-SQL)

명령

현재 데이터베이스에서 데이터베이스 역할을 제거합니다.

sp_addrolemember(Transact-SQL)

명령

현재 데이터베이스의 데이터베이스 역할에 데이터베이스 사용자, 데이터베이스 역할, Windows 로그인 또는 Windows 그룹을 추가합니다.

sp_droprolemember(Transact-SQL)

명령

현재 데이터베이스의 SQL Server 역할에서 보안 계정을 제거합니다.

public 데이터베이스 역할

모든 데이터베이스 사용자는 public 데이터베이스 역할에 속합니다. 사용자에게 보안 개체에 대한 특정 사용 권한이 부여되지 않았거나 거부된 경우 사용자는 해당 보안 개체에 대해 public으로 부여된 사용 권한을 상속 받습니다.