프로그래밍/DB

[DB] MSSQL 뷰테이블 생성 및 조회권한설정

ss-pro 2020. 10. 5. 23:00
반응형

안녕하세요. 이번에는 뷰테이블생성 및 권한설정하는 방법에 대해 알아보겠습니다. 외부시스템에 특정데이터를 제공해줘야 될경우 뷰테이블을 만들고 해당테이블만 조회권한 등을 주는형태로 제공합니다.  SQL Management툴을 사용해서 권한주는 방법과 스크립트문을 사용해서 권한주는 방법에 대해 소개해 드리겠습니다. 

MSDN상 뷰생성 Syntax입니다. |
docs.microsoft.com/ko-kr/sql/t-sql/statements/create-view-transact-sql?view=sql-server-ver15

1
2
3
4
5
6
7
8
9
10
11
12
13
14
-- Syntax for SQL Server and Azure SQL Database  
  
CREATE [ OR ALTER ] VIEW [ schema_name . ] view_name [ (column [ ,...n ] ) ]
[ WITH <view_attribute> [ ,...n ] ]
AS select_statement
[ WITH CHECK OPTION ]
[ ; ]  
  
<view_attribute> ::=
{  
    [ ENCRYPTION ]  
    [ SCHEMABINDING ]  
    [ VIEW_METADATA ]
}

테이블 생성 

1
2
3
4
5
6
7
8
9
10
11
/* 테이블생성 */
CREATE TABLE [dbo].[MyUser](
    [id] [int] IDENTITY(1,1NOT NULL primary key ,
    [name] [varchar](10NULL,
    gender char(1)
GO
 
/* 테스트 데이터삽입 */
insert into MyUser values ('홍길동','F')
insert into MyUser values ('김단비','M')

뷰테이블 생성 
V_MYUSER 뷰테이블로 만들어 보겠습니다. 

1
2
3
4
/* 뷰테이블 생성 */
CREATE VIEW V_MYUSER 
AS 
SELECT * FROM MyUser

1. 뷰테이블 조회 권한주기 (SQL Management Studio 사용)
먼저 보안(Security) -< 로그인(Logins)메뉴의 New Login항목을 클릭합니다.


계정명을 test / 비밀번호는 1234로 해서 만들어 보겠습니다.


TEST데이터베이스의 있는 V_MYUSER 뷰테이블에 권한을 주기 위해서는 User Mapping을 해야되면 TEST DB항목을 체크합니다.

V_MYUSER뷰테이블을 선택하고 마우스우클릭 -> 속성(Properties)항목을 클릭합니다.


Perrmision항목에서 Search버튼 -> Browse...버튼을 클릭후 test계정을 선택합니다.

권한을 select권한만 체크한 후 OK버튼을 클릭하면 test계정으로는 V_MYUSER라는 특정뷰테이블에 조회권한만 가능하게 설정이 됩니다.

2. 뷰테이블 조회 권한주기 (스크립트문을 사용하여부여)
스크립트문을 사용해서 부여하는 방법입니다. 로그인계정생성, 데이터베이스계정생성, grant문으로 권한을 부여해주면됩니다. 간단한 조회권한만 줄 경우에는 스크립트문을 사용시 손쉽게 권한을 줄수 있습니다. 

1
2
3
4
5
6
7
8
9
10
11
/* test 로그인 계정 생성 */
create login test WITH PASSWORD = '1234'
go
 
/* test database test계정생성 */
use test 
go 
sp_adduser 'test' 
 
 /* test계정에 V_MYUSER 뷰테이블에 조회권한 부여 */
GRANT SELECT ON V_MYUSER TO test