권한 스태킹 거부 권한 부여


9

역할 의 경우 customer 테이블의 열 코드 만 SELECTable이 가능하고 다른 코드는 db_denycustomer원하지 않습니다. 그래서 나는 이것을했다 :

DENY SELECT ON dbo.customer TO db_denycustomer
GRANT SELECT ON dbo.customer (code) TO db_denycustomer

... 그리고 잘 작동합니다. 멋있는! 그런데 왜 ?

관련 기사에서 읽은 것은 사용 권한 스택이지만 DENY우선합니다. 반대로, 내 경우에는 마지막 권한 "query"가 우선하는 것 같습니다. 물론, 그것들을 역순으로 실행하면 후자 DENY가 코드 열을 숨 깁니다.

이것에 대해 자세히 설명해 주시겠습니까?

또한 테스트 한 사용자에게 기본 db_datawriter및 db_datareader역할을 포함 시켰습니다 .

답변:


10

이되는 행동을 문서화 이전 버전과의 호환성을 제공합니다. 문서 발췌 :

주의 테이블 수준 DENY는 열 수준 GRANT보다 우선하지 않습니다. 권한 계층 구조의 이러한 불일치는 이전 버전과의 호환성을 위해 유지되었습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.