이것은 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\Group1
및 MyDomain\Group2
그룹의 구성원 인 Windows ID를 사용하는 경우
매핑 된 클라이언트는 어떤 데이터베이스 사용자입니까? 나는. SELECT USER_NAME()
은 User1
또는 User2
을 반환합니까?
클라이언트의 권한은 무엇입니까? 클라이언트가 User1 또는 User2로 연결할지 여부를 결정하는 우선 순위가 정의되어 있습니까? 이 문서는 BOL에 문서화되어 있습니까?
배경
이 현재 현재 자신의 SQL Server 로그인을 갖고 각각의 여러 응용 프로그램에 의해 액세스되는 데이터베이스를 우려, 데이터베이스 객체에 대한 응용 프로그램 별 권한을가집니다.
보안을 향상시키기 위해 Windows 인증을 사용하고 싶습니다. 사용자 대신 Windows 그룹을 사용하여 DBA가 모든 개별 사용자의 로그인을 관리하는 것을 원하지 않습니다.
그러나 주어진 사용자는 여러 응용 프로그램을 사용할 수 있습니다 (따라서 SQL 로그인에 매핑되는 여러 Windows 그룹의 구성원이 될 수 있음). 따라서 데이터베이스 사용자에 대한 연결 매핑의 모호성이 발생할 수 있습니다.
저는 온라인 서적을 검색하고 검색했으며 그러한 모호성이 해결 된 방식 (예 : 우선 순위 규칙)에 대한 명시적인 정보를 찾을 수 없습니다.
위의 질문에 대한 답변 외에 모든 팁과 모범 사례를 환영합니다.
두 번째 DENY를 수정했습니다. "사용자가 아닌 그룹에 적용해야한다고 가정합니다."- 여기서 말하는 내용을 이해할 수 없습니다. GRANT/DENY에는 로그인이 아닌 데이터베이스 사용자가 필요합니다.두 가지 로그인과 일치하는 클라이언트가 매핑 된 데이터베이스 사용자를 정말로 알고 싶습니다. – Joe
죄송합니다. "사용자"라는 용어는 (Windows) 그룹에 매핑되기 때문에 혼란 스럽습니다. 내 잘못이야. – Lucero
+1 블로그 기사가 내가 원하는 대부분의 답변. 그러나 암시 적으로 생성 된 사용자 (있는 경우)에 대해 어떤 우선 순위 규칙이 사용되는지는 아직 분명하지 않습니다. – Joe