데이터베이스 수준 역할로는 미리 정의된 것과 사용자가 만들 수 있는 두 가지 유형이 있다.
- 고정 데이터베이스 역할: 미리 정의된 것
- 사용자 정의 데이터베이스 역할: 사용자가 정의
고정 데이터베이스 역할 (Fixed-database roles)
- 데이터베이스 수준에서 정의 (각 데이터베이스에 존재)
- db_owner 데이터베이스 역할의 멤버가 고정 데이터베이스 역할 멤버 자격을 관리
사용자 정의 데이터베이스 역할 (User Defined Server Roles) / 자세한 내용 나중에 추가 예정
- 사용자가 정의하는 역할
그 중에서도 SSMS 에서 로그인 속성을 보면 평소에 헷갈렸던 2가지가 있었다.
그것이 바로 서버 역할, 사용자 매핑 탭이다!
그 2가지를 아래 표로 정리하였다.
서버 역할
bulkadmin | BULK INSERT를 실행할 수 있다 SQL Server on Linux에서는 bulkadmin 역할 또는 ADMINISTER BULK OPERATIONS 권한이 지원되지 않습니다. SQL Server on Linux의 경우 sysadmin 만 대량 삽입을 수행할 수 있습니다. |
dbcreator | 데이터베이스를 생성, 변경, 삭제, 복원할 수 있다 |
diskadmin | 디스크 파일을 관리할 수 있다 |
processadmin | SQL Sever 인스턴스에서 실행 중인 프로세스를 종료 시킬 수 있다 |
public | 모든 SQL Server 로그인은 public 서버 역할에 속함 서버 보안 주체에게 보안 개체에 대한 특정 사용 권한이 부여되지 않았거나 거부된 경우 사용자는 해당 개체에 대해 public으로 부여된 사용 권한을 상속 모든 사용자가 개체를 사용할 수 있도록 하려는 경우에만 개체에 public 권한을 할당해야 함 public의 멤버 자격은 변경할 수 없다 |
securityadmin | 로그인을 관리, SQL Server 로그인 암호를 재설정, 서버 수준 권한 또는 DB 수준 권한 부여, 거부, 취소 할 수 있음 서버 및 DB 수준 사용 권한을 GRANT, DENY, REVOKE 할 수 있다 SQL Server 의 로그인 암호를 다시 설정할 수 있음 |
serveradmin | 서버 차원의 구성 옵션을을 변경하고 서버를 종료 할 수 있다 |
setupadmin | Transact-SQL 문을 사용하여 연결된 서버를 추가/제거할 수 있다. (Management Studio를 사용할 때 sysadmin 멤버 자격이 필요) |
sysadmin | 모든 서버 활동을 수행 가능 |
사용자 매핑
db_accessadmin | 엔진에 접속할 윈도우 인증과 SQL Server 로그인을 수정할 권한 |
db_backupoperator | 데이터베이스 백업 권한 |
db_datareader | 테이블의 모든 데이터를 볼 수 있는 권한 |
db_datawriter | 테이블에 데이터 수정 권한 |
db_ddladmin | 데이터베이스의 모든 DDL 관련 명령을 실행할 권한 Table, Stored Procedure, View 등을 만들 수 있음 |
db_denydatareader | 사용자 테이블 및 뷰의 데이터를 읽을 수 없다 |
db_denydatawriter | 사용자 테이블 데이터를 추가, 수정, 삭제 할 수 없다 |
db_owner | 데이터베이스의 모든 설정과 관리 작업을 수행할 수 있는 권한 DB 개체 생성, 삭제, 백업 생성, 보안 구성, 유지 관리 작업(consistency check, 인덱스, 통계 등)을 수행 할 수 있다 |
db_secutiryadmin | 멤버 권한을 제한할 수 있는 권한 |
public | 디폴트로 부여되는 최소한의 권한 |