데이터베이스/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