SQL Server에는 Login 계정과 User 계정이 있다. Login 계정은 데이터베이스 서버, 즉 DBMS에 접속할 수 있는 계정을 말하고, User 계정은 데이터베이스에 접근할 수 있는 계정을 말한다. 그림으로 설명하자면, 아래와 같다.
dev01 계정을 아래와 같이 login 계정으로 만들었다면, SQL Server에만 접속할 수 있다. InsaDB, FinanceDB, TempDB에는 접근할 수 없다.
USE [master] GO CREATE LOGIN [dev01] WITH PASSWORD=N'' GO
위 명령어를 실행하면, 아래 그림과 같이 보안의 로그인 디렉토리 안에 로그인 계정이 생성된다.
한나라의 여행에 비유해서 설명하자면, dev01은 SQL Server 나라에만 입국할 수 있는 비자만 가지고 있는 것이다. SQL Server 나라 내에 있는 유명한 관광지인 InsaDB, FinanceDB, TempDB에는 입장권을 구매하지 않아 안으로 들어갈 수 없다.
그렇다면, 이들 관광지에 들어가기 위해선 어떻게 해야 할까? 그렇다. 관광지 티켓을 구매해야 한다. dev01에게 관광지 FinanceDB 에 갈 수 있도록 조치를 해주자.
CREATE USER [dev01] FOR LOGIN [dev01] WITH DEFAULT_SCHEMA=[FinanceDB] GO
User계정 명은 보통 Login 계정 명과 동일하게 만든다. 다르게 설명하면, 만들고자 하는 User 계정과 이미 생성한 Login 계정과 서로 맵핑 한다고 표현할 수 있다. 여기에서 사용하고자 하는 database를 명시해주면 된다. 물론 User 계정명은 Login계정명과 다르게도 만들수 있다. (근데 다르게 만들 이유가 있을까? 변태가 아니라면... )
위 명령어를 실행하면, FinanceDB 데이터베이스 안에, 보안의 사용자 디렉토리 안에 사용자 계정이 생성된다.
요약하자면, SQL Server 에 연결 하기 위한 계정은 로그인 계정(LOGIN)이라 하고, 각 데이터베이스에 접근을 위한 계정은 사용자 계정(USER)이라고 한다.
참고로 SQL Server의 인증 방식은 Windows인증과 SQL Server인증 두가지 방식이 있는데, 일반적으로 우리는 SQL Server인증 방식을 사용한다(지극히 개인적인 기준). 그런데, 보안 강화를 위해서는 SQL Server 인증 사용은 지양되어야 한다고 한다. SQL Server 인증 방식이 Windows 계정과 연동되지 않는 SQL Server 만을 위한 계정이다보니, 무분별하게 만들어질 수 있다는 점 때문에 Windows 인증 방식을 권고하는 것 같다.
★dbo와 guest 사용자 계정에 대한 설명
모든 데이터베이스에는 dbo 사용자 계정과 guest 사용자 계정이 존재한다. 이 중, guest 사용자 계정은 비활성화 되어 있다. 아래 그림을 자세히 보면 guest 에 적색 화살표가 아래 방향으로 표시되어 있다. 비활성화된 표시라고 한다.
dbo 사용자 계정은 sa 로그인 계정과 시스템 관리자 계정이 데이터베이스에 접근할 때 맵핑이 되는 사용자 계정이며, 관리자가 권한을 임의로 변경할 수 없다.
guest 사용자 계정은 해당 데이터베이스에 사용자로 맵핑이 되지 못하는 로그인 계정이 해당 데이터베이스에 접근할 때 사용되는 사용자 계정이며, 보안에 매우 취약하므로 일반적으로 디폴트가 비활성화인 상태다. CCE 보안 권고 사항에도 나온다. guest 계정은 비활성화 되어 있냐고...
'Tech > Database' 카테고리의 다른 글
SQL Server 비대칭 키 암호화 (0) | 2018.07.15 |
---|---|
SQL Server 권한 부여 (0) | 2018.07.14 |
누적 데이터 query (0) | 2018.07.11 |
주식 데이터 이평선 쿼리 구현 (2) | 2018.07.10 |
PostgreSQL for DBA - 작성중 (0) | 2018.07.10 |
댓글