일부 데이터베이스 만 생성, 복원, 삭제하는 SQL Server 권한


17

MS SQL Server 2008 R2에서는 DBCC CHECKDB를 생성, 복원, 삭제 한 다음 데이터베이스를 삭제할 수있는 사용자가 필요합니다. 그러나 서버에서 지정된 데이터베이스에 액세스하거나 삭제할 수 없어야합니다 (보안상의 이유로). 이 설정이 가능합니까?


여기 몇 가지 힌트를 얻을 수 있습니다. toadworld.com/platforms/sql-server/w/wiki/…
dezso

답변:


27

예, 몇 가지 권한을 통해 가능합니다.

먼저 데이터베이스를 작성 하려면 서버 레벨 권한을 부여해야합니다 Create Any Database. 이 권한은 데이터베이스를 생성하는 힘과 같은 방식으로 작동합니다. 참고 이되어 있지 그 고정 서버 역할은 데이터베이스에 대한 ALTER / 삭제 권한을 제공하기 때문에, 로그인에에 dbcreator의 고정 서버 역할을 제공합니다. Create Any Database로그인이 소유 한 데이터베이스에 대해서만 권한을 갖도록 허용합니다. 또한 복원 기능도 제공합니다.

(이렇게하면 "데이터베이스 만들기" ONLY - 새 데이터베이스를 만들 수있는 기능을 제공하지만, 떨어 뜨리거나 변경할 수있는 능력을 피하는 어떤 당신이 dbcreator 고정 서버 역할을 사용하여 얻을 거라고 데이터베이스)

이 "모든 데이터베이스 작성"권한을 부여하려면-

use [master]
GO
GRANT CREATE ANY DATABASE TO [LoginName]
GO

DBCC CHECKDB데이터베이스 를 실행 하고 삭제 하는 기능을 위해서는 고정 데이터베이스 역할 db_owner이면 충분합니다. 요청한 모든 것을 부여합니다. 참고 : 또한이 사용자에게로 선택, 삭제, 자르기, 업데이트 및 삽입 할 수있는 권한을 부여합니다 db_owner. 나는 이것을 sysadmin데이터베이스 내에서 생각하고 싶습니다 .

이 권한을 부여하려는 데이터베이스에만이 권한을 적용합니다. 이를 통해 사용자가 삭제, 복원 또는 checkdb 할 수있는 데이터베이스를 제어 할 수 있습니다. 사용자에게 이러한 권한을 부여하지 않은 모든 데이터베이스는이 작업을 수행하는이 사용자로부터 안전합니다.

이렇게하려면 먼저 로그인을 데이터베이스 사용자에게 매핑하십시오.

USE [DatabaseName]
GO
CREATE USER [UserName] FOR LOGIN [LoginName] 
GO

그런 다음 해당 사용자를 db_owner역할에 추가하십시오 (SQL Server 2012 이상에서 작동).

ALTER ROLE [db_owner] ADD MEMBER [frank]
GO

SQL Server 2008의 경우 시스템 저장 프로 시저를 사용하여 역할 구성원을 아래에 주석으로 추가해야합니다.

EXEC sp_addrolemember 'db_owner', 'frank';

GUI를 통해이 모든 작업을 수행 할 수도 있습니다. 인스턴스 레벨에서 SSMS의 보안 폴더를 통해 수행하는 로그인 정보 : 로그인-> 특성-> 보안 가능 항목을 마우스 오른쪽 단추로 클릭하십시오. 데이터베이스 레벨의 경우 데이터베이스 레벨의 보안 폴더를 통해 수행하십시오. 마우스 오른쪽 단추로 클릭하고 새 사용자를 선택하십시오.-> 서버 로그인 목록에서 사용자에게 원하는 로그인을 선택하십시오 ./ 데이터베이스 사용자에게 이름을 지정하십시오. 멤버쉽 탭을 선택하여 역할 멤버쉽을 선택하십시오.

SQL Server의 도움말 시스템 인 온라인 설명서는 다른 사용 권한을 할당해야 할 경우 대부분의 사용 권한 질문에 대한 환상적인 리소스입니다. 권한을 부여하려는 T-SQL 명령을 검색하기 만하면 기사에 해당 명령에 대한 권한 섹션이 있으며이 작업을 수행하는 데 필요한 권한을 알려줍니다. 예를 들어 DBCC CHECKDB에 대한 기사를 볼 수 있습니다. 기사 아래의 약 7/8은 권한 섹션입니다.


3
ALTER ROLE [db_owner] ADD MEMBER [frank]SQL Server 2012에서만 작동 하는 것을 추가하고 싶습니다 . SQL Server 2008을 사용하는 경우 SP와 함께 가야합니다. EXEC sp_addrolemember 'db_owner', 'frank';( 여기여기 참조 )
superjos
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.