2010-11-25 2 views
5

Microsoft SQL Server 데이터베이스와 사용자 집합이 있습니다. 이제 내 응용 프로그램에서 사용자가 특정 권한 (admin)을 사용하여 사용자 이름과 암호를 입력 한 경우에만 표시되는 일부 기능을 만들고 싶습니다. 데이터베이스와 사용자 이름 및 해당 권한이 변경 될 수 있으므로 Microsoft SQL Server 사용자가 가진 사용 권한/권한을 어떻게 확인할 수 있습니까?Microsoft SQL Server : 사용자의 사용 권한을 확인하십시오.

+0

사용자 이름/암호에 따라 어떤 종류의 기능을 볼 수 있습니까? 데이터베이스에 사용자 이름과 암호를 저장합니까, 아니면 SQL Server 보안 폴더 아래에 사용자 이름/암호라는 의미입니까? 사용자 자신의 보안 레벨이나 사용자 테이블의 플래그 (사용자 {사용자 이름, 비밀번호, isAdmin})를 구현 한 다음 앱에 로그인하면 관리자인지 확인할 수 있습니다. 그렇다면 여분의 기능은 그렇지 않다면 숨 깁니다. 또한 다양한 액세스 수준이있는 경우 별도의 테이블을 사용하는 것이 좋습니다 – Prescott

+0

아니요 추가 기능이 없습니다. 간단히 말하면. n 개의 사용자 그룹이 있다고 가정 해보십시오. 처음에는 서버에 쿼리 만 할 수 있습니다. 두 번째는 삽입 문을 쿼리하고 수행 할 수 있습니다. 세 번째 뷰는 뷰를 생성 할 수도 있습니다. 나는 실제로 현재 사용자가 데이터베이스에서 무엇을 할 수 있는지 알고 싶다. –

+0

Btw. 그룹에 집착하지 마라. 그들은 그룹으로 조직 될 필요가 없습니다. 다른 권한을 가진 여러 사용자. 난 그냥 응용 프로그램에서 현재 dbuser는 데이터베이스에 필요한 권한이 없기 때문에 사용할 수없는 기능을 비활성화하려고합니다. –

답변

6

보안성에 대한 모든 권한을 반환하는 [sys.fn_mypermissions][1]을 사용하여 특정 보안 대상에 대한 현재 사용자의 권한을 확인할 수 있습니다. HAS_PERMS_BY_NAME으로 특정 권한을 확인할 수도 있습니다. 예 :

SELECT HAS_PERMS_BY_NAME(null, null, 'CONTROL SERVER'); 
+0

고마워, 그거야. 이제 사용자가 특정 데이터베이스에 대한 삽입 권한이 있는지를 확인할 수 있습니다. SELECT HAS_PERMS_BY_NAME ('databasename', 'DATABASE', 'INSERT')는 Expr1입니다. 또한 포함 된 문서 링크에 따라 다른 권한을 확인하십시오. –

0

나는,

나는 당신이 관련 응용 프로그램 사용자를 추가 할 수있는 SQL Server 데이터베이스 역할을 만들 것을 제안 ..... 내가 그러나 내가 할 가정 문제의 정의를 이해하는 것이 완전히 확실하지 않다 아마도 App (또는 Windows 도메인 그룹) 내에서 유지 관리되는 일부 그룹 회원을 통해. 역할 매핑을 통해 그룹을 사용하여 관련 권한을 관리하는 것에서 역할을 통해 데이터베이스 내 보안 개체에 이르기까지 사용자 구성원을 독립적으로 관리 할 수 ​​있습니다.

이렇게하면 SQL Server의 보안 구성을 쿼리하지 않고도 응용 프로그램 사용자가 관련 응용 프로그램 또는 Windows 그룹의 구성원인지 확인할 수 있습니다.

+0

디자인 관점에서 필자는 왜 권한을 "확인"해야하는지 아직 알지 못합니다. 사용 권한은 사용자 인증을받은 해당 역할에 대한 구성원 자격을 통해 부여됩니다. 필요한 "admin"권한과 필요한 사용자 권한이있는 역할을 가진 역할을 작성하기 만하면됩니다. 그런 다음 관련 역할에 사용자를 추가/매핑하십시오. 그런 다음 사용자가 올바른 자격 증명으로 로그인 할 수 있다는 사실이이 용도로 사용되므로 권한을 확인/유효성 검사 할 필요가 없습니다. –

0

IS_MEMBER 기능을 사용하고이 작업을 수행하는 가장 간단한 방법은, 사용자가 역할/그룹의 db_owner에 어떠했는지 확인 : 당신은 로그인 한 관리자를 의미 CONTROL SERVER 허가를 확인할 수 있습니다. 이 함수는 데이터베이스 수준에서 검사를 수행합니다. 서버 수준에서 확인해야하는 경우 IS_SRVROLEMEMBER 함수를 사용할 수 있습니다. SQL Server 2005 이후로 둘 다 사용할 수 있습니다.

관련 문제