1

데이터베이스에서 모든 테이블은 다시 단일 테이블로 연결됩니다. 이 테이블에는 레코드가 표시되는지 여부를 제한하는 비트 열이 있습니다. 현재 레코드는 웹 사이트의 코드면에서 필터링됩니다.SQL Server 2008 EF 4 - 사용 권한을 사용하여 반환 된 데이터베이스 레코드 제한?

userA가 해당 공통 비트 열이 true로 설정된 데이터베이스의 레코드를 전혀 볼 수 없도록 사용 권한을 설정하는 방법이 있습니까?

우리는 또한 우리는 또한 당신이이 수행 할 수있는 방법을 어떤 아이디어가있는 경우 (C#에서) .NET 4에서 엔티티 프레임 워크 4.0을 사용하는 SQL Server 2008의

을 사용하고 있습니까?

의견에 감사드립니다.

답변

0

this excellent TechNet article에 따르면 데이터베이스를 적절하게 구조화하면보기 또는 저장 프로 시저를 사용하여 현재 사용자가 결과를 제한 할 수 있으므로 행 수준의 보안이 실제로 SQL 서버에서 가능합니다. 내 지식으로 SQL Server에는 행 수준 잠금 기능이 내장되어 있지 않습니다.

+0

답장을 보내 주셔서 감사합니다. 답변을 작성하는 것 외에 실제로 처리 할 수있는 방법이 없다고 생각합니다. – Chuck

+0

@Chuck 확실히 메커니즘이 내장되어 있지 않습니다. 개인적으로 나는 응용 프로그램에서 내 자신의 권한 처리를 구축 할 것입니다. –

0

"활성"열이 1 (true)로 설정된 행만 표시하는 테이블 상단에보기를 정의 할 수 있습니다.

그런 다음 사용자 그룹에서 기본 테이블에 대한 액세스 권한을 취소 할 수 있지만 새로 만든보기에서 해당 사용자에게 SELECT 권한을 부여 할 수 있습니다.

+0

우리는 이것을 고려했지만 두 개의 완전한 엔티티 세트 (뷰를 사용하는 1 개와 테이블 또는 다른 뷰를 사용하는 1 개)를 유지해야하므로 더 많은 코드 측 옵션을 탐색해야 할 것입니다. – Chuck