2011-08-19 3 views
3

이것은 SQL Server 2005 이상용이지만 SQL Server 2000이 같은 방식으로 작동하는지 알고 싶습니다. 다음 상황을 고려하십시오. 누구의 로그인 이름 Windows 그룹입니다SQL Server를 사용할 때 사용 권한 확인 Windows 인증

두 SQL 서버 Windows 인증 로그인 :

MyDomain\Group1 
MyDomain\Group2 

이 로그인에 매핑되는 두 개의 사용자와 데이터베이스 :

USE MyDatabase 
CREATE USER [User1] FOR LOGIN [MyDomain\Group1] 
CREATE USER [User2] FOR LOGIN [MyDomain\Group2] 

사용자 1 및 사용자가 부여됩니다 해체 데이터베이스의 사용 권한 (예 :

)
GRANT SELECT ON Table1 TO User1 
DENY SELECT ON Table1 TO User2 
GRANT SELECT ON Table2 TO User2 
DENY SELECT ON Table2 TO User1 

클라이언트가 SQL Ser에 연결됩니다 버전 MyDomain\Group1MyDomain\Group2 그룹의 구성원 인 Windows ID를 사용하는 경우

매핑 된 클라이언트는 어떤 데이터베이스 사용자입니까? 나는. SELECT USER_NAME()User1 또는 User2을 반환합니까?

클라이언트의 권한은 무엇입니까? 클라이언트가 User1 또는 User2로 연결할지 여부를 결정하는 우선 순위가 정의되어 있습니까? 이 문서는 BOL에 문서화되어 있습니까?

배경

이 현재 현재 자신의 SQL Server 로그인을 갖고 각각의 여러 응용 프로그램에 의해 액세스되는 데이터베이스를 우려, 데이터베이스 객체에 대한 응용 프로그램 별 권한을가집니다.

보안을 향상시키기 위해 Windows 인증을 사용하고 싶습니다. 사용자 대신 Windows 그룹을 사용하여 DBA가 모든 개별 사용자의 로그인을 관리하는 것을 원하지 않습니다.

그러나 주어진 사용자는 여러 응용 프로그램을 사용할 수 있습니다 (따라서 SQL 로그인에 매핑되는 여러 Windows 그룹의 구성원이 될 수 있음). 따라서 데이터베이스 사용자에 대한 연결 매핑의 모호성이 발생할 수 있습니다.

저는 온라인 서적을 검색하고 검색했으며 그러한 모호성이 해결 된 방식 (예 : 우선 순위 규칙)에 대한 명시적인 정보를 찾을 수 없습니다.

위의 질문에 대한 답변 외에 모든 팁과 모범 사례를 환영합니다.

답변

1

흥미로운 질문입니다.

나는 클라이언트가 테이블에 전혀 액세스 할 수 없어야한다고 가정하고 광고 DANTY는 GRANT보다 우선합니다. SQL Server에서는 DENY-overrides-GRANT 원칙에 대한 예외가 있습니다. GRANT가 열 수준에서 수행 될 때 테이블 전체가 액세스가 거부 된 경우에도 액세스가 허용됩니다 (MSDN states).

편집 : 적용되는 내용을 이해하려면 로그인 (서버에 대한)이 데이터베이스 사용자와 같지 않다는 것을 알아야합니다. Windows 그룹 구성원을 통해 로그온 한 사용자는 암시 적으로 생성 된 사용자를 얻게되며 이에 대한 사용 권한을 적용해야합니다. 자세한 내용은 this blog article을 참조하십시오.

+0

두 번째 DENY를 수정했습니다. "사용자가 아닌 그룹에 적용해야한다고 가정합니다."- 여기서 말하는 내용을 이해할 수 없습니다. GRANT/DENY에는 로그인이 아닌 데이터베이스 사용자가 필요합니다.두 가지 로그인과 일치하는 클라이언트가 매핑 된 데이터베이스 사용자를 정말로 알고 싶습니다. – Joe

+0

죄송합니다. "사용자"라는 용어는 (Windows) 그룹에 매핑되기 때문에 혼란 스럽습니다. 내 잘못이야. – Lucero

+0

+1 블로그 기사가 내가 원하는 대부분의 답변. 그러나 암시 적으로 생성 된 사용자 (있는 경우)에 대해 어떤 우선 순위 규칙이 사용되는지는 아직 분명하지 않습니다. – Joe

관련 문제