데이터베이스 수준 역할Database-Level Roles

이 항목은 다음에 적용됩니다. 예SQL Server(2008부터 시작)예Azure SQL Database예Azure SQL Data Warehouse 예병렬 데이터 웨어하우스 THIS TOPIC APPLIES TO: yesSQL Server (starting with 2008)yesAzure SQL DatabaseyesAzure SQL Data Warehouse yesParallel Data Warehouse

데이터베이스에서 사용 권한을 쉽게 관리하기 위해 SQL ServerSQL Server 에서는 다른 보안 주체를 그룹핑하는 보안 주체인 다양한 역할 을 제공합니다.To easily manage the permissions in your databases, SQL ServerSQL Server provides several roles which are security principals that group other principals. 역할은 Windows 운영 체제의 그룹 MicrosoftMicrosoft 과 같습니다.They are like groups in the MicrosoftMicrosoft Windows operating system. 데이터베이스 수준 역할은 데이터베이스 측 사용 권한 범위에 속합니다.Database-level roles are database-wide in their permissions scope.

데이터베이스 역할에 사용자를 추가하고 제거하려면 ADD MEMBER ALTER ROLE DROP MEMBER 문의 옵션을 사용합니다.To add and remove users to a database role, use the ADD MEMBER and DROP MEMBER options of the ALTER ROLE statement. 병렬 데이터 웨어하우스Parallel Data Warehouse 에서는 이 ALTER ROLE사용을 지원하지 않습니다. does not support this use of ALTER ROLE. 대신 기존의 sp_addrolemembersp_droprolemember 프로시저를 사용합니다.Use the older sp_addrolemember and sp_droprolemember procedures instead.

데이터베이스 수준 역할로는 데이터베이스에 미리 정의된 고정 데이터베이스 역할 과 사용자가 만들 수 있는 사용자 정의 데이터베이스 역할 의 두 가지 유형이 있습니다.There are two types of database-level roles: fixed-database roles that are predefined in the database and user-defined database roles that you can create.

고정 데이터베이스 역할은 데이터베이스 수준에서 정의되며 각 데이터베이스에 존재합니다.Fixed-database roles are defined at the database level and exist in each database. db_owner 데이터베이스 역할의 멤버는 고정 데이터베이스 역할 멤버 자격을 관리할 수 있습니다.Members of the db_owner database role can manage fixed-database role membership. msdb 데이터베이스에는 몇 가지 특수한 용도의 데이터베이스 역할도 있습니다.There are also some special-purpose database roles in the msdb database.

데이터베이스 계정과 다른 SQL ServerSQL Server 역할을 데이터베이스 수준 역할에 추가할 수 있습니다.You can add any database account and other SQL ServerSQL Server roles into database-level roles. 고정 데이터베이스 역할의 각 멤버는 같은 역할에 다른 사용자를 추가할 수 있습니다.Each member of a fixed-database role can add other users to that same role.

사용자 정의 데이터베이스 역할을 고정 역할의 멤버로 추가하지 마세요.Do not add user-defined database roles as members of fixed roles. 이로 인해 원하지 않는 권한 상승이 설정될 수 있습니다.This could enable unintended privilege escalation.

사용자 정의 데이터베이스 역할에 부여된 권한은 GRANT, DENY 및 REVOKE 문을 사용하여 사용자 지정할 수 있습니다.The permissions of user-defined database roles can be customized by using the GRANT, DENY, and REVOKE statements. 자세한 내용은 사용 권한(데이터베이스 엔진)을 참조하세요.For more information, see Permissions (Database Engine).

모든 사용 권한 목록을 보려면 데이터베이스 엔진 권한 포스터를 참조하세요.For a list of all the permissions, see the Database Engine Permissions poster. (서버 수준 사용 권한은 데이터베이스 역할에 부여할 수 없습니다.(Server-level permissions cannot be granted to database roles. 로그인 및 기타 서버 수준 보안 주체(예: 서버 역할)는 데이터베이스 역할에 추가할 수 없습니다.Logins and other server-level principals (such as server roles) cannot be added to database roles. SQL ServerSQL Server의 서버 수준 보안을 위해서는 대신 [서버 역할](../../../relational-databases/security/authentication-access/server-level-roles.md) 을 사용하세요.For server-level security in SQL ServerSQL Server, use server roles instead. 서버 수준 사용 권한은 SQL 데이터베이스SQL DatabaseSQL 데이터 웨어하우스SQL Data Warehouse에서 역할을 통해 부여할 수 없습니다.Server-level permissions cannot be granted through roles in SQL 데이터베이스SQL Database and SQL 데이터 웨어하우스SQL Data Warehouse.)

고정 데이터베이스 역할Fixed-Database Roles

다음 표에서는 고정 데이터베이스 역할과 기능을 보여 줍니다.The following table shows the fixed-database roles and their capabilities. 이러한 역할은 모든 데이터베이스에 있습니다.These roles exist in all databases. 제외 하 고는 공용 고정 데이터베이스 역할에 할당 된 사용 권한을 데이터베이스 역할을 변경할 수 없습니다.Except for the public database role, the permissions assigned to the fixed-database roles cannot be changed.

고정 데이터베이스 역할 이름Fixed-Database role name DescriptionDescription
db_ownerdb_owner db_owner 고정 데이터베이스 역할의 멤버는 데이터베이스에서 모든 구성 및 유지 관리 작업을 수행할 수 있고 SQL ServerSQL Server에서 데이터베이스를 삭제할 수도 있습니다.Members of the db_owner fixed database role can perform all configuration and maintenance activities on the database, and can also drop the database in SQL ServerSQL Server. SQL 데이터베이스SQL DatabaseSQL 데이터 웨어하우스SQL Data Warehouse에서 일부 유지 관리 작업은 서버 수준 권한이 필요하여 db_owners으로 수행할 수 없습니다.(In SQL 데이터베이스SQL Database and SQL 데이터 웨어하우스SQL Data Warehouse, some maintenance activities require server-level permissions and cannot be performed by db_owners.)
db_securityadmindb_securityadmin db_securityadmin 고정 데이터베이스 역할의 멤버는 역할 멤버 자격을 수정하고 사용 권한을 관리할 수 있습니다.Members of the db_securityadmin fixed database role can modify role membership and manage permissions. 이 역할에 보안 주체를 추가하면 원하지 않는 권한 상승이 설정될 수 있습니다.Adding principals to this role could enable unintended privilege escalation.
db_accessadmindb_accessadmin db_accessadmin 고정 데이터베이스 역할의 멤버는 Windows 로그인, Windows 그룹 및 SQL ServerSQL Server 로그인의 데이터베이스에 대한 액세스를 추가하거나 제거할 수 있습니다.Members of the db_accessadmin fixed database role can add or remove access to the database for Windows logins, Windows groups, and SQL ServerSQL Server logins.
db_backupoperatordb_backupoperator db_backupoperator 고정 데이터베이스 역할의 멤버는 데이터베이스를 백업할 수 있습니다.Members of the db_backupoperator fixed database role can back up the database.
db_ddladmindb_ddladmin db_ddladmin 고정 데이터베이스 역할의 멤버는 데이터베이스에서 모든 DDL(데이터 정의 언어) 명령을 실행할 수 있습니다.Members of the db_ddladmin fixed database role can run any Data Definition Language (DDL) command in a database.
db_datawriterdb_datawriter db_datawriter 고정 데이터베이스 역할의 멤버는 모든 사용자 테이블에서 데이터를 추가, 삭제 또는 변경할 수 있습니다.Members of the db_datawriter fixed database role can add, delete, or change data in all user tables.
db_datareaderdb_datareader db_datareader 고정 데이터베이스 역할의 멤버는 모든 사용자 테이블의 모든 데이터를 읽을 수 있습니다.Members of the db_datareader fixed database role can read all data from all user tables.
db_denydatawriterdb_denydatawriter db_denydatawriter 고정 데이터베이스 역할의 멤버는 데이터베이스 내의 사용자 테이블에 있는 데이터를 추가, 수정 또는 삭제할 수 없습니다.Members of the db_denydatawriter fixed database role cannot add, modify, or delete any data in the user tables within a database.
db_denydatareaderdb_denydatareader db_denydatareader 고정 데이터베이스 역할의 멤버는 데이터베이스 내에 있는 사용자 테이블의 데이터를 읽을 수 없습니다.Members of the db_denydatareader fixed database role cannot read any data in the user tables within a database.

고정 데이터베이스 역할에 할당된 권한은 변경할 수 없습니다.The permissions assigned to the fixed-database roles cannot be changed. 다음 그림에서는 고정 데이터베이스 역할에 할당된 사용 권한을 보여 줍니다.The following figure shows the permissions assigned to the fixed-database roles:

fixed_database_role_permissions

SQL 데이터베이스SQL DatabaseSQL 데이터 웨어하우스SQL Data Warehouse의 특수 역할Special Roles for SQL 데이터베이스SQL Database and SQL 데이터 웨어하우스SQL Data Warehouse

이러한 데이터베이스 역할은 가상 master 데이터베이스에만 존재합니다.These database roles exist only in the virtual master database. 해당 권한은 master에서 수행된 작업으로 제한됩니다.Their permissions are restricted to actions performed in master. master에서 데이터베이스 사용자만 이러한 역할에 추가할 수 있습니다.Only database users in master can be added to these roles. 이 역할에는 로그인을 추가할 수 없습니다. 하지만 로그인을 기반으로 사용자를 만들어 해당 사용자를 역할에 추가할 수는 있습니다.Logins cannot be added to these roles, but users can be created based on logins and then those users can be added to the roles. 마스터에서 포함된 데이터베이스 사용자도 역할에 추가할 수 있습니다.Contained database users in master, can also be added to these roles.

역할 이름Role name DescriptionDescription
dbmanagerdbmanager 데이터베이스를 만들고 삭제할 수 있습니다.Can create and delete databases. 데이터베이스를 만드는 dbmanager 역할의 멤버는 해당 데이터베이스 소유자가 되어 사용자가 dbo 사용자로 데이터베이스에 연결할 수 있게 합니다.A member of the dbmanager role that creates a database, becomes the owner of that databasee which allows that user to connect to that database as the dbo user. dbo 사용자는 해당 데이터베이스에서 모든 데이터베이스 사용 권한을 가집니다.The dbo user has all database permissions in the database. dbmanager 역할의 멤버는 소유하지 않은 데이터베이스에 액세스할 권한이 반드시 필요하지는 않습니다.Members of the dbmanager role do not necessarily have permission to access databases that they do not own.
loginmanagerloginmanager 가상 master 데이터베이스에서 로그인을 만들고 삭제할 수 있습니다.Can create and delete logins in the virtual master database.
참고

서버 수준 보안 주체 및 Azure Active Directory 관리자(구성된 경우)는 역할 멤버가 아니더라도 SQL 데이터베이스SQL DatabaseSQL 데이터 웨어하우스SQL Data Warehouse 의 모든 권한이 있습니다.The server-level principal and the Azure Active Directory Administrator (if configured) have all permissions in the SQL 데이터베이스SQL Database and SQL 데이터 웨어하우스SQL Data Warehouse without needing to be members of any roles. 자세한 내용은 SQL Database 인증 및 권한 부여: 액세스 부여를 참조하세요.For more information, see SQL Database Authentication and Authorization: Granting Access.

msdb 역할msdb Roles

msdb 데이터베이스에는 다음 표에서 보여 주는 특수한 용도의 역할이 포함되어 있습니다.The msdb database contains the special-purpose roles that are shown in the following table.

msdb 역할 이름msdb role name DescriptionDescription
db_ssisadmindb_ssisadmin

db_ssisoperatordb_ssisoperator

db_ssisltduserdb_ssisltduser
이러한 데이터베이스 역할의 멤버는 SSISSSIS를 관리 및 사용할 수 있습니다.Members of these database roles can administer and use SSISSSIS. 이전 버전에서 업그레이드된 SQL ServerSQL Server의 인스턴스에는 SSISSSIS 대신 DTS(데이터 변환 서비스)를 사용하여 명명된 이전 버전의 역할이 포함될 수 있습니다.Instances of SQL ServerSQL Server that are upgraded from an earlier version might contain an older version of the role that was named using Data Transformation Services (DTS) instead of SSISSSIS. 자세한 내용은 Integration Services 역할(SSIS Service)을 참조하세요.For more information, see Integration Services Roles (SSIS Service).
dc_admindc_admin

dc_operatordc_operator

dc_proxydc_proxy
이러한 데이터베이스 역할의 멤버는 데이터 수집기를 관리 및 사용할 수 있습니다.Members of these database roles can administer and use the data collector. 자세한 내용은 Data Collection을 참조하세요.For more information, see Data Collection.
PolicyAdministratorRolePolicyAdministratorRole db_ PolicyAdministratorRole 데이터베이스 역할의 멤버는 정책 기반 관리 정책 및 조건의 모든 구성 및 유지 관리 작업을 수행할 수 있습니다.Members of the db_ PolicyAdministratorRole database role can perform all configuration and maintenance activities on Policy-Based Management policies and conditions. 자세한 내용은 정책 기반 관리를 사용하여 서버 관리를 참조하세요.For more information, see Administer Servers by Using Policy-Based Management.
ServerGroupAdministratorRoleServerGroupAdministratorRole

ServerGroupReaderRoleServerGroupReaderRole
이러한 데이터베이스 역할의 멤버는 등록된 서버 그룹을 관리 및 사용할 수 있습니다.Members of these database roles can administer and use registered server groups.
dbm_monitordbm_monitor 데이터베이스 미러링 모니터에서 첫 번째 데이터베이스를 등록하면 msdb 데이터베이스에서 만들어집니다.Created in the msdb database when the first database is registered in Database Mirroring Monitor. dbm_monitor 역할은 시스템 관리자가 사용자를 할당할 때까지 멤버를 가지지 않습니다.The dbm_monitor role has no members until a system administrator assigns users to the role.
중요

db_ssisadmindc_admin 역할의 멤버는 해당 권한을 sysadmin으로 승격할 수 있습니다.Members of the db_ssisadmin role and the dc_admin role may be able to elevate their privileges to sysadmin. 이러한 권한 승격이 발생할 수 있는 것은 이러한 역할이 Integration ServicesIntegration Services 패키지를 수정할 수 있고 Integration ServicesIntegration Services 에서 SQL ServerSQL Server 에이전트의 sysadmin 보안 컨텍스트를 사용하여 SQL ServerSQL Server 패키지를 실행할 수 있기 때문입니다.This elevation of privilege can occur because these roles can modify Integration ServicesIntegration Services packages and Integration ServicesIntegration Services packages can be executed by SQL ServerSQL Server using the sysadmin security context of SQL ServerSQL Server Agent. 유지 관리 계획, 데이터 컬렉션 집합 및 기타 Integration ServicesIntegration Services 패키지를 실행할 때 이러한 권한 상승이 발생하지 않도록 하려면 패키지를 실행하는 SQL ServerSQL Server 에이전트 작업이 제한된 권한을 갖는 프록시 계정을 사용하도록 구성하거나 db_ssisadmindc_admin 역할에 sysadmin 멤버만 추가합니다.To guard against this elevation of privilege when running maintenance plans, data collection sets, and other Integration ServicesIntegration Services packages, configure SQL ServerSQL Server Agent jobs that run packages to use a proxy account with limited privileges or only add sysadmin members to the db_ssisadmin and dc_admin roles.

R Services 작업Working with R Services

적용 대상: SQL Server 2017SQL Server 2017 이상의 SQL ServerApplies to: SQL Server starting with SQL Server 2017SQL Server 2017

R Services가 설치된 경우 추가 데이터베이스 역할을 패키지 관리에 사용할 수 있습니다.When R Services is installed, additional database roles are available for managing packages. 자세한 내용은 SQL Server에 대한 R 패키지 관리를 참조하세요.For more information, see R Package management for SQL Server.

역할 이름Role name DescriptionDescription
rpkgs-usersrpkgs-users 사용자가 rpkgs-shared 역할의 멤버가 설치한 모든 공유 패키지를 사용하도록 허용합니다.Allows users to use any shared packages that were installed by members of the rpkgs-shared role.
rpkgs-privaterpkgs-private rpkgs-users 역할과 동일한 권한으로 공유 패키지에 액세스할 수 있습니다.Provides access to shared packages with the same permissions as the rpkgs-users role. 이 역할의 멤버는 비공개로 범위가 지정된 패키지를 설치, 제거 및 사용할 수도 있습니다.Members of this role can also install, remove and use privately scoped packages.
rpkgs-sharedrpkgs-shared rpkgs-private 역할과 동일한 권한을 제공합니다.Provides the same permissions as the rpkgs-private role. 이 역할의 멤버인 사용자는 공유 패키지를 설치하거나 제거할 수도 있습니다.Users who are members of this role can also install or remove shared packages.

데이터베이스 수준 역할 작업Working with Database-Level Roles

다음 표에서는 데이터베이스 수준 역할 작업을 위한 명령, 뷰 및 함수에 대해 설명합니다.The following table explains the commands, views and functions for working with database-level roles.

기능Feature 유형Type DescriptionDescription
sp_helpdbfixedrole(Transact-SQL)sp_helpdbfixedrole (Transact-SQL) 메타데이터Metadata 고정 데이터베이스 역할의 목록을 반환합니다.Returns a list of the fixed database roles.
sp_dbfixedrolepermission(Transact-SQL)sp_dbfixedrolepermission (Transact-SQL) 메타데이터Metadata 고정 데이터베이스 역할에 대한 사용 권한을 표시합니다.Displays the permissions of a fixed database role.
sp_helprole(Transact-SQL)sp_helprole (Transact-SQL) 메타데이터Metadata 현재 데이터베이스의 역할에 관한 정보를 반환합니다.Returns information about the roles in the current database.
sp_helprolemember(Transact-SQL)sp_helprolemember (Transact-SQL) 메타데이터Metadata 현재 데이터베이스에 있는 역할의 멤버에 관한 정보를 반환합니다.Returns information about the members of a role in the current database.
sys.database_role_members(Transact-SQL)sys.database_role_members (Transact-SQL) 메타데이터Metadata 각 데이터베이스 역할의 각 멤버에 대해 행을 반환합니다.Returns one row for each member of each database role.
IS_MEMBER(Transact-SQL)IS_MEMBER (Transact-SQL) 메타데이터Metadata 현재 사용자가 지정된 Microsoft Windows 그룹 또는 Microsoft SQL Server 데이터베이스 역할의 멤버인지 여부를 표시합니다.Indicates whether the current user is a member of the specified Microsoft Windows group or Microsoft SQL Server database role.
CREATE ROLE(Transact-SQL)CREATE ROLE (Transact-SQL) CommandCommand 현재 데이터베이스에 새 데이터베이스 역할을 만듭니다.Creates a new database role in the current database.
ALTER ROLE(Transact-SQL)ALTER ROLE (Transact-SQL) CommandCommand 데이터베이스 역할의 이름 또는 멤버 자격을 변경합니다.Changes the name or membership of a database role.
DROP ROLE(Transact-SQL)DROP ROLE (Transact-SQL) CommandCommand 데이터베이스에서 역할을 제거합니다.Removes a role from the database.
sp_addrole(Transact-SQL)sp_addrole (Transact-SQL) CommandCommand 현재 데이터베이스에 새 데이터베이스 역할을 만듭니다.Creates a new database role in the current database.
sp_droprole(Transact-SQL)sp_droprole (Transact-SQL) CommandCommand 현재 데이터베이스에서 데이터베이스 역할을 제거합니다.Removes a database role from the current database.
sp_addrolemember(Transact-SQL)sp_addrolemember (Transact-SQL) CommandCommand 현재 데이터베이스의 데이터베이스 역할에 데이터베이스 사용자, 데이터베이스 역할, Windows 로그인 또는 Windows 그룹을 추가합니다.Adds a database user, database role, Windows login, or Windows group to a database role in the current database. 병렬 데이터 웨어하우스Parallel Data Warehouse를 제외한 모든 플랫폼에서 대신 ALTER ROLE을 사용해야 합니다.All platforms except 병렬 데이터 웨어하우스Parallel Data Warehouse should use ALTER ROLE instead.
sp_droprolemember(Transact-SQL)sp_droprolemember (Transact-SQL) CommandCommand 현재 데이터베이스의 SQL Server 역할에서 보안 계정을 제거합니다.Removes a security account from a SQL Server role in the current database. 병렬 데이터 웨어하우스Parallel Data Warehouse 를 제외한 모든 플랫폼에서 대신 ALTER ROLE 을 사용해야 합니다.All platforms except 병렬 데이터 웨어하우스Parallel Data Warehouse should use ALTER ROLE instead.
GRANTGRANT PermissionsPermissions 역할에 권한을 추가합니다.Adds permission to a role.
DENYDENY PermissionsPermissions 역할에 대한 권한을 거부합니다.Denys a permission to a role.
REVOKEREVOKE PermissionsPermissions 이전에 부여하거나 거부한 사용 권한을 제거합니다.Removes a previously granted or denied permissions.

public 데이터베이스 역할public Database Role

모든 데이터베이스 사용자는 public 데이터베이스 역할에 속합니다.Every database user belongs to the public database role. 사용자에게 보안 개체에 대한 특정 사용 권한이 부여되지 않았거나 거부된 경우 사용자는 해당 보안 개체에 대해 public 으로 부여된 사용 권한을 상속 받습니다.When a user has not been granted or denied specific permissions on a securable object, the user inherits the permissions granted to public on that object. 데이터베이스 사용자는 공용 역할에서 제거할 수 없습니다.Database users cannot be removed from the public role.

관련 내용Related Content

보안 카탈로그 뷰(Transact-SQL)Security Catalog Views (Transact-SQL)

보안 저장 프로시저(Transact-SQL)Security Stored Procedures (Transact-SQL)

보안 함수(Transact-SQL)Security Functions (Transact-SQL)

SQL Server 보안 설정Securing SQL Server

sp_helprotect(Transact-SQL)sp_helprotect (Transact-SQL)