MSSQL - SSMS에서 로그인 사용자 추가하기, 특정 DB 접속 권한 주기(Server Roles, User Mapping)+사용자 권한 종류

개요

MS-SQL 에서 SSMS(SQL Server Management Studio)툴을 이용하여

로그인 사용자를 추가하고, 사용자의 권한을 부여해보자.

사용자 권한 부여 시 여러가지 권한 종류에 대한 설명도 함께 포함되어 있다.

 

이 포스팅은 SSMS 툴을 이용하기 때문에 명령어를 사용하지 않고 GUI를 이용하여 진행하도록 한다.


사용자 추가하기

새로운 사용자를 추가해보자.

  • 보안 - 로그인 우클릭 - 새 로그인
    (Security - Logins Right Click - New Login)

 

새롭게 추가할 사용자 정보를 입력해주자.

  • 로그인 이름
  • SQL Server 인증 선택
  • 암호  암호 확인
  • '다음 로그인할 때 반드시 암호 변경'은 선호에 따라 선택
  • 기본 데이터베이스 선택

 

확인을 누르면 입력한 사용자가 생성된다.


특정 사용자에게 권한 주기

로그인 속성 열기

권한을 줄 수 있는 계정(포스팅에서는 'sa' 계정으로 로그인 된 상태)으로 접속한다.

사용자 계정 리스트에서 권한을 줄 사용자를 더블클릭하거나 우클릭 - 속성을 누른다.


Server Roles (서버 역할) 설정

서버 역할에서 설정할 수 있는 권한 종류는 다음과 같다.

  • bulkadmin : BULK INSERT 문을 실행할 수 있음, SQL Server on Linux의 경우 sysadmin만 대량 삽입을 수행할 수 있음
  • dbcreator : 데이터베이스를 만들고, 변경하고, 삭제하고, 복원할 수 있음
  • diskamin : 디스크 파일을 관리할 수 있음
  • processadmin : SQL Server 인스턴스에서 실행되는 프로세스를 종료할 수 있음
  • public : 모든 로그인은 public 역할에 속함, 특정 사용 권한을 부여하거나 거부하지 않은 경우 사용자는 공용(public)으로 부여된 사용 권한을 상속함
  • securityadmin : 로그인 및 해당 속성을 관리할 수 있음
  • serveradmin : 서버 전체 구성 옵션을 변경하고 서버를 종료할 수 있음
  • setupadmin : Transact-SQL 문을 사용하여 연결된 서버를 추가하고 제거할 수 있음
  • sysadmin : 모든 작업을 수행할 수 있음

포스팅에서는 특정 데이터베이스에만 권할을 줄 예정이므로 'public' 으로 설정


User Mapping (사용자 매핑) 설정

사용자 매핑에서 설정할 수 있는 권한 종류는 다음과 같다.

  • db_accessadmin : Windows 로그인, Windows 그룹 및 SQL Server 로그인에 대한 데이터베이스 액세스를 추가하거나 제거할 수 있음
  • db_backupoperator : 데이터베이스를 백업할 수 있음
  • db_datareader : 모든 사용자 테이블 및 뷰에서 모든 데이터를 읽을 수 있음
  • db_datawriter : 모든 사용자 테이블에서 데이터를 추가, 삭제 또는 변경할 수 있음
  • db_ddladmin : 데이터베이스에서 모든 DDL(데이터 정의 언어) 명령을 실행할 수 있음
  • db_denydatareader : 데이터베이스 내의 사용자 테이블 및 뷰에서 데이터를 읽을 수 없음
  • db_denydatawriter : 데이터베이스 내의 사용자 테이블에 있는 데이터를 추가, 수정 또는 삭제할 수 없음
  • db_owner : 데이터베이스에서 모든 구성 및 기본 작업을 수행할 수 있음 (drop 포함)
  • db_securityadmin : 사용자 지정 역할에 대해서만 역할 멤버 자격을 수정하고 권한을 관리할 수 있음. 단, 자신의 권한을 높일 수도 있으므로 이 멤버의 작업은 모니터링 되어야 함
  • public : 특정 사용 권한을 부여하거나 거부하지 않은 경우 사용자는 공용(public)으로 부여된 사용 권한을 상속함

포스팅에서는 특정 데이터베이스(EunbyeolLocalTestDB)에 대한 모든 권한을 줄 예정이므로, 'db_owner'으로 설정


테스트

생성한 사용자(tester)로 로그인 하고,

내가 지정한 데이터베이스(EunbyeolLocalTestDB)에만 권한을 부여했는지 확인

 

지정한 데이터베이스(EunbyeolLocalTestDB)는 액세스가 되어 트리가 구성되었으나,

다른 데이터베이스(***Test)에는 액세스가 되지 않아 알림 메시지가 출력된다.

 

  • 접속 권한 확인 화면


참고

마이크로소프트 공식 문서 - SQL Server 2022 - Server-level roles

마이크로소프트 공식 문서 - SQL Server 2022 - Database-level roles