SQL Server 에서 권한에 관련하여 GRANT, REVOKE, DENY 구문을 지원합니다.
각 구문은 다음과 같은 특성을 지닙니다.
GRANT 는 유저에 개체에 대한 권한을 허용
DENY 는 유저에 개체에 대한 권한을 차단
REVOKE 는 유저에 부여된 권한을 회수하는 GRANT 도 DENY 도 아닌 상태
GRANT 가 부여되지 않으면 권한에 대한 허용이 없다고 판단하고 작업을 할 수 없습니다.
즉, GRANT 가 부여된 권한을 REVOKE 하면 유저는 해당 개체에 대해 작업을 할 수 없습니다.
그렇다면 REVOKE 와 DENY 의 차이점은 무엇일까?
REVOKE 와 DENY 가 차이가 없을 경우
SCHEMA1 에 대해서 SELECT 권한이 부여되었다고 가정합니다.
이 SCHEMA1 에 대해서 SELECT 권한을 취소하고 싶은 경우, REVOKE 구문과 DENY 구문은 동일한 의미를 지닙니다.
REVOKE 와 DENY 의 차이
이번에는 SCHEMA1 에 대해서 SELECT 권한이 부여되어 있는 상태에,
해당 스키마에 속한 TABLE1 에는 SELECT 작업을 막기를 원합니다.
REVOKE 는 부여된 권한에 대해서만 적용되기 때문에, REVOKE SELECT ON TABLE1 FROM USER 구문은 적용되지 않습니다.
그렇다고 REVOKE SELECT ON SCHEMA::SCHEMA1 을 하게 되면 스키마에 속한 다른 테이블에도 접근할 수 없게 됩니다.
이럴 때는 DENY ON TABLE1 구문을 써서 해당 테이블만 접근을 막을 수 있습니다.
'SQL Server > SQL Server 기타' 카테고리의 다른 글
[MSSQL] SQL Server 아키텍처, 저장소 구조, 메모리 구조 (1) | 2019.05.20 |
---|---|
[MSSQL] CROSS APPLY 와 OUTER APPLY 그리고 JOIN 의 차이점 (0) | 2019.04.17 |
[MSSQL] COLLATE 데이터 정렬. Korean_Wansung_CI_AS 및 각 옵션에 대한 설명 (0) | 2019.04.03 |
[MSSQL] 사이즈가 큰 하나의 로그 파일 vs 사이즈가 작은 다수의 로그 파일. 어떤걸 선택할까? (0) | 2019.04.03 |
[MSSQL] 왜 Secondary Group 이 필요한가? Secondary Group 의 역할 (0) | 2019.04.03 |