[MSSQL] 로그인, 사용자, 사용권한, 역할
[MS-SQL] ▣ 로그인, 사용자, 사용권한, 역할
-
로그인
- SQL Server에 접속할 수 있는 것을 말함
- Windows의 'administrator' = '컴퓨터이름\Administrator'
- 'Administrator' 그룹의 사용자들= 'BUILTIN\Administrators'
- 'sa'는 디폴트로 사용할 수 없게 되어있지만 하위 버전과의 호환성을 위해 남겨둠
-
사용자
- 데이터베이스 관리자는 각 데이터베이스마다 접근할 수 있는 사용자를 각각 지정함
- 디폴트로 'dbo', 'guest', 'INFORMATION_SCHEMA', 'sys'가 있음
① dbo 사용자 : 데이터베이스 소유자 (Database Owner). 기본적으로 생성자가 소유자가 됨.
② guest 사용자 : 모든 로그인에 대해서 자동적으로 데이터베이스에 접근이 허용된 사용자.
③ sys 및 INFORMATION_SCHEMA : 데이터베이스 내부의 시스템 개체를 참조하기 위한 사용자.
새로운 로그인 사용자를 데이터베이스 사용자로 추가하기 위한 구문 형식
CREATE USER user_name [
{ { FOR | FROM }
{
LOGIN login_name
| CERTIFICATE cert_name
| ASYMMETRIC KEY asym_key_name
}
| WITH LOGIN
]
[ WITH DEFAULT_SCHEMA = schema_name ]
※ 변경은 ALTER USER, 삭제는 DROP USER를 사용
-
사용권한
- 개체를 사용하거나 명령문을 수행하는 권한
- 권한 부여는 CREATE문, 권한 거부는 DENY문, 부여된 권한의 제거는 REVOKE문을 사용
①개체 사용권한 : 데이터베이스 개체에 대해 SELECT, INSERT, UPDATE, DELETE 등을 수행할 수 있는 권한.
②문 사용권한 : 특정한 명령문을 수행할 수 있는 권한. CREATE TABLE, CREATE VIEW, BACKUP DATABASE 등.
③내제적 사용권한 : 명시적으로 사용권한을 부여하지 않더라도 암시적으로 부여된 사용권한.
-
역할(Role)
- 사용자 또는 로그인의 집합, 권한의 집합
- 사용자 또는 로그인 집합에서는 해당하는 역할에 사용자나 로그인을 멤버로 포함시킴
- 권한의 집합은 여러개의 권한을 하나로 묶은 후 사용자에게 역할을 부여하는 개념
① 고정 서버 역할 : 서버를 관리하는 권한의 집합
역할 |
설명 |
bulkadmin |
BULK INSERT 문을 실행할 수 있음 |
dbcreator |
데이터베이스를 생성, 변경, 삭제 복원할 수 있음 |
diskadmin |
디스크 파일을 관리할 수 있음 |
processadmin |
SQL Server의 인스턴스에서 실행되는 프로세스를 종료할 수 있음 |
securityadmin |
로그인 및 해당 속성을 관리함. 서버 수준과 데이터베이스 수준의 사용 권한을 부여(GRANT), 거부(DENY), 취소(REVOKE)할 수 있음 |
serveradmin |
서버 차원의 구성 옵션을 변경하고 서버를 종료할 수 있음 |
setupadmin |
연결된 서버를 추가하거나 제거하고 일부 시스템 저장프로시저를 실행할 수 있음 |
sysadmin |
서버에서 모든 작업을 수행할 수 있음 |
고정 서버역할에 로그인을 멤버로 포함시키기 위한 저장프로시저 명령
EXEC sp_addsrvrolemember '로그인이름' , '역할이름'
② 고정 데이터베이스 역할
역할 |
설명 |
db_accessadmin |
Windows 로그인, Windows 그룹 및 SQL Server 로그인에 대한 액세스를 추가, 제거할 수 있음 |
db_backupoperator |
데이터베이스를 백업할 수 있음 |
db_datareader |
사용자 테이블의 모든 데이터를 읽을 수 있음 |
db_datawriter |
사용자 테이블에서 데이터를 추가, 삭제, 변경할 수 있음 |
db_ddladmin |
데이터베이스에서 모든 DDL(데이터 정의어) 명령을 실행할 수 있음 |
db_denydatareader |
데이터베이스 내에 있는 사용자 테이블의 데이터를 읽을 수 없음 |
db_denydatawriter |
데이터베이스 내의 사용자 테이블의 데이터를 추가, 수정, 삭제할 수 없음 |
db_owner |
데이터베이스에서 모든 구성 및 유지 관리 작업을 수행할 수 있음 |
db_secutiryadmin |
멤버 자격을 수정하고 사용권한을 관리할 수 있음 |
public |
모든 데이터베이스 사용자에게 디폴트로 부여되는 최소 권한을 갖는 역할 |
고정 데이터베이스 역할에 사용자를 멤버로 포함시키기 위한 저장프로시저 명령
EXEC sp_addrolemember '역할이름' , '데이터베이스 사용자이름'