2009-08-11 3 views
1

일정 기간 동안 특정 사용자가 데이터베이스에 액세스하는 것을 중지 할 수 있지만 동시에 데이터베이스 개체에 대한 사용 권한을 잃지 않도록 할 수 있습니다.SQLServer 권한 유지

기본적으로 그가 돌아 왔을 때 (즉, 액세스가 다시 주어 졌을 때) 액세스가 끊어지기 전에 그가 가진 모든 권한을 가져야합니다. sp_revokedbaccess 'myuser'를 사용하면 myuser 사용자는 db 객체에 대한 모든 권한을 잃게됩니다.

번거로운 백업 권한과 복원 권한 종류의 대안에 의존하지 않고 myuser의 권한을 보존 할 수있는 방법이 있습니까?

+0

감사합니다. 모든 요구 사항이 SQL 2005에 대한 것이므로 DENY CONNECT와 함께 갈 것입니다. SQL 2000을 확인했습니다. 2000 년에는 비활성화 로그인이 필요했습니다. 다시 한 번 감사드립니다 – OpenSource

답변

3

생각 :

  1. DENY CONNECT user 또는 DENY CONNECT SQL TO login (sp_revokedbaccess가 지원되지 않습니다)

    당신은 Windows 그룹에 대한 액세스를 거부하기 위해 DISABLE 인수와 함께 ALTER_LOGIN을 사용할 수 없습니다
  2. (링크에서 인용)

  3. 데이터베이스 역할에 모든 권한을 할당 한 다음 사용자로부터 권한을 취소합니다. 필요한 경우 사용자를 역할에 추가하십시오. 어쨌든 사용자에게 개체 권한을 직접 할당하는 것은 좋지 않습니다.

  4. 사용자가 시스템 관리자 권한이있는 경우, 당신은 그들에게 전혀 아무 것도 부정 할 수 없다 (아마도 SQL 연결?)

  5. 을 사용자의 db_owner 권한이 (DB에서 설정 한 가정합니다)가있는 경우, 당신이 그들을 부정 할 수 없다 CONNECT를 제외한 데이터베이스의 내용

0

사용자는 데이터베이스에 어떻게 액세스합니까? 애플리케이션을 통해 사용자를 로그 아웃하면 사용자가 재 인증을 받아야합니다.

+0

응용 프로그램 사용자 ID입니다. 유지 관리 중에 액세스 권한을 제거하지만 작업이 완료되면 다시 가져 오려고합니다. – OpenSource

0

유지 관리 중에 액세스를 제거하고 완료 한 후에 다시 가져오고 싶습니다.

처리중인 테이블에 대해 유지 관리 프로세스에서 배타적 잠금을 획득하도록하십시오. 이렇게하면 처리가 완료 될 때까지 모든 사용자를 잠급니다.

1

당신은 명시 적으로 그에게 허가를 거부하고 거부를 취소 할 수 있어야합니다.

ALTER LOGIN ... DISABLE으로 로그인을 비활성화 할 수도 있지만 데이터베이스 수준이 아닌 서버 수준에서는 차단됩니다.

해킹 솔루션은 사용자를 다른 로그인으로 매핑 한 다음 그를 다시 매핑 (ALTER USER .. LOGIN = ...)하지만 해킹이며 제대로 작동하는지 잘 모르겠습니다.

2

가장 간단한 방법은 로그인을 비활성화하는 것입니다. 상태 페이지의 SSMS 로그인 속성에서이 작업을 수행 할 수 있습니다.

다음 T-SQL과 같은 것을 얻을 수 있습니다

로그인을 가정하면 밥이 SQL 로그인입니다뿐만 아니라 창 로그인을 사용하도록 설정하려면 다음

ALTER LOGIN bob DISABLE 

로그인 할 수 있습니다

ALTER LOGIN bob enable 
0

현재 암호를 알고있는 경우 유지 관리 기간 동안 암호를 임시 값으로 변경하십시오. 비밀번호를 초기 값으로 다시 설정하면 계정을 실질적으로 변경하지 않고도 이러한 목적을 달성 할 수 있습니다.

0

Windows 인증을 사용 중이고 도메인의 모든 항목에서이 사용자를 잠글 수있는 경우 사용자가 Active Directory에 로그온 할 수있는 시간을 설정할 수 있습니다. 자세한 지침을 제공 할 수는 없지만 ServerFault에는 지금까지 뭔가가 있어야합니다.