데이터베이스/MS-SQL 😃

MS SQL Database-level roles(역할) 08/02/2023

재우니 2023. 8. 22. 21:49

 

 

 

다음 표에는 고정 데이터베이스 역할과 해당 기능이 나와 있습니다. 이러한 역할은 모든 데이터베이스에 존재합니다. 공용 데이터베이스 역할을 제외하고 고정 데이터베이스 역할에 할당된 권한은 변경할 수 없습니다.

 

db_owner db_owner 고정 데이터베이스 역할 의 멤버는 데이터베이스에 대한
모든 구성 및 유지 관리 활동을 수행할 수 있으며 dropSQL Server의
데이터베이스에 대해서도 수행할 수 있습니다.
 (SQL Database 및 Azure Synapse에서 일부 유지 관리 활동에는
서버 수준 권한이 필요하며 db_owners
 에서 수행할 수 없습니다 .)
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_datareader 고정 데이터베이스 역할 의 멤버는 
모든 사용자 테이블 및 뷰에서 모든 데이터를 읽을 수 있습니다. 
사용자 개체는 sys  INFORMATION_SCHEMA 를 제외한
모든 스키마에 존재할 수 있습니다 .
db_denydatawriter db_denydatawriter 고정 데이터베이스 역할 의 멤버는 
데이터베이스 내의 사용자 테이블에 있는
데이터를 추가, 수정 또는 삭제할 수 없습니다.
db_denydatareader db_denydatareader 고정 데이터베이스 역할 의 멤버는 
데이터베이스 내의 사용자 테이블 및 뷰에서 데이터를 읽을 수 없습니다.

 

고정 데이터베이스 역할에 할당된 권한은 변경할 수 없습니다. 다음 그림은 고정 데이터베이스 역할에 할당된 권한을 보여줍니다.

 

 

 

예제에서는 데이터베이스 LEVEL ROLE 로 작업하는 방법을 보여 줍니다.


//데이터베이스 LEVEL ROLE 사용자 추가하기
ALTER ROLE db_datareader
	ADD MEMBER Ben;  
GO



//데이터베이스 LEVEL ROLE 의 구성원인 모든 데이터베이스 주체를 전부 확인하기

SELECT    roles.principal_id                            AS RolePrincipalID
    ,    roles.name                                    AS RolePrincipalName
    ,    database_role_members.member_principal_id    AS MemberPrincipalID
    ,    members.name                                AS MemberPrincipalName
FROM sys.database_role_members AS database_role_members  
JOIN sys.database_principals AS roles  
    ON database_role_members.role_principal_id = roles.principal_id  
JOIN sys.database_principals AS members  
    ON database_role_members.member_principal_id = members.principal_id;  
GO

 

 

https://learn.microsoft.com/en-us/sql/relational-databases/security/authentication-access/database-level-roles?view=sql-server-ver16 

 

Database-Level Roles - SQL Server

SQL Server provides several roles that are security principals that group other principals to manage the permissions in your databases.

learn.microsoft.com