2009-06-29 3 views
1

여러 환경에있는 여러 데이터베이스에서 SQL Server 로그인, 서버 역할 및 개별 액세스 권한을 관리하고 유지 관리하는 좋은 방법은 무엇입니까? 최선의 관행은 무엇입니까?SQL Server 로그인 구성 및 자동화

내 상황에 대한 몇 가지 정보 :

  • SQL Server 2005의
  • 우리는
  • 우리는 중앙이 (적어도 이론적으로) 동일한 스키마와 "클라이언트"데이터베이스의 N 양이 "관리자 "각 클라이언트 데이터베이스를 참조하고 구성 값을 보유 할 수있는 데이터베이스
  • 이"admin/client "패턴은 여러 환경 (dev/qa/stage/prod)에 복제됩니다.
  • 테스터와 같은 일부 사용자는 evironment에 따라 다른 권리 에드
  • 우리는 자주 개발 또는 테스트 목적을 위해 서로 복원 한 환경에서 클라이언트의 DB 백업을 당겨해야
  • 우리는 소스 제어에 우리의 저장 프로 시저 및 스크립트를 유지하고 빌드주기에 배포

지금 당장 내 조직은 혼란스럽고 좋은 보안 관행을 따르지 않습니다. 공식 DBA가 없습니다. 그러나 우리가 더 복잡해지면 항상 그것을 유지하기위한 끊임없는 번거 로움이 될 것입니다. 관리 스튜디오 IDE를 통해 직접 구성하려는 경우 새로운 서버로 마이그레이션하거나 재난으로부터 복구하는 작업이 많은 시간을 필요로한다는 것을 알 수있었습니다.

답변

2

먼저 데이터베이스를 다른 서버로 복원하는 것이 더 쉽도록하려면 Microsoft의 sp_help_revlogin stored procedure을 사용하여 사용자가 생성 한 첫 번째 서버에서 로그인을 스크립팅하여 모든 서버에서 로그인이 모두 동일한 SID를 가져야합니다 그 스크립트를 사용하여 다른 서버에 로그인하십시오. 이렇게하면 데이터베이스를 복원 할 때 데이터베이스 사용자가 로그인에 올바르게 매핑됩니다.

환경에 따라 데이터베이스 수준에서 다른 사용 권한을 갖는 것은이 역할을 어떻게 수행하든 문제가 될 수 있습니다. 데이터베이스에 추가 GRANT를 수행하는 복원 프로세스의 일부로 내 Dev Server에서 호출되는 master의 저장 프로 시저를 사용하여 개발자가 액세스 권한을 변경할 수 있도록합니다. 그것은 내가 비슷한 문제를 해결하기 위해 내놓을 수있는 최선의 방법이다.

2

권한을 쉽게 만드는 방법은 Dev, QA, Test, Prod라는 데이터베이스에 롤을 만들고 해당 역할에 올바른 권한을 부여하는 것입니다. 그런 다음 데이터베이스를 각 환경에 복원하면 개발자가 올바른 역할을 수행하게됩니다.

1

우리는 활성 디렉토리 그룹을 사용하고 Windows 인증 로그인을 시행합니다. SQL Server 내에서 AD 그룹당 단일 SQL Server 로그인을 만들어 사용자가 속한 AD 그룹을 기반으로 액세스를 정의 할 수 있습니다. 이것이 DB 역할보다 좋든 나쁘 든 확실하지는 않지만 역할은 각 데이터베이스 외부에서 관리된다는 의미입니다.

데이터베이스에 대한 액세스 전파는 수동 작업 또는 짧은 SQL 스크립트 중 하나로 데이터베이스의 로그인이 유효한 SQL Server 로그인 (AD 그룹)을 가리키는 지 확인합니다.

일반적으로 일반적인 경우에 적합합니다. DB 역할을 사용하여 각 AD 그룹에 기본 역할 (예 : db_datareader)을 할당 할 수 있습니다.

이 모델 외부의 데이터베이스에 대한 특정 액세스가 필요합니다.침입하거나 비판적이지 않으면 전체적으로 그룹을 열어 결국 개별적으로 관리해야하는 사용자 별 계정을 만들게됩니다. 우리는 이들을 절대 최소로 유지하기 위해 노력하며, 지금 당장 그들을 청소해야합니다. 그래서 그들은 학대 당하거나 잊혀지지 않습니다.

관련 문제