SQL Server 2008에서 전체 Active Directory 그룹 보안 액세스를 어떻게 할당합니까? 대한 읽기 / 쓰기 액세스를 위해

도메인에있는 내부 응용 프로그램과 통합 보안을 사용하고 싶습니다. 불행히도, 나는 이것을 잘 작동시킬 수 없었습니다. 특정 테이블에 대한 읽기 / 쓰기 액세스를 위해 전체 Exchange (Active Directory) 그룹에 SQL Server의 역할을 할당하고 싶습니다. 그렇게하면 누군가 고용 될 때마다 운영자를 만들거나 누군가 해고 될 때마다 운영자를 삭제할 필요가 없습니다. 이게 가능해? 이를 위해 어떤 단계를 수행해야합니까?



답변

  • AD 그룹을 로그인으로 설정하십시오. “로그인”은 사용자 / 로그인의 AD 개념이 아닌 서버 수준 로그인을 의미합니다. SQL Server에서 말하면 서버 수준 주체입니다.
  • 맵핑 된 사용자를 작성하십시오. 실제로 테이블에서 사용자에게 직접 권한을 부여해서는 안됩니다. “사용자”는 사용자의 AD 개념이 아닌 데이터베이스 사용자를 의미합니다. SQL Server에서 “데이터베이스 수준 사용자”입니다.
  • 역할에 사용자 추가 ( “데이터베이스 레벨 보안 주체”)
  • 테이블의 역할에 대한 GRANT 권한 (테이블 또는 proc 등은 “보안 가능”)

샘플 스크립트

USE master;
GO
CREATE LOGIN [MYDOMAIN\APPLICATION SUPPORT] FROM WINDOWS;
GO
USE mydb;
GO
CREATE USER [MYDOMAIN\APPLICATION SUPPORT] FROM LOGIN [MYDOMAIN\APPLICATION SUPPORT];
GO
CREATE ROLE rSupport;
GO
EXEC sp_addrolemember 'rSupport', 'MYDOMAIN\APPLICATION SUPPORT';
GO
GRANT SELECT, INSERT,UPDATE, etc ON Mytable TO rSupport;
GO

sp_addrolememberSQL Server 2012부터는 더 이상 사용되지 않으며 ALTER ROLE대신 사용해야합니다.


답변

SQL Server 내에서 AD 그룹에 권한을 부여하는 것은 비교적 간단합니다. T-SQL 또는 Management Studio를 통해 수행 할 수 있습니다.

예를 들어이라는 AD 그룹이있는 경우 MYDOMAIN\APPLICATION SUPPORT서버 수준에서 로그인을 만든 다음 개별 데이터베이스에 대한 매핑을 사용하여 데이터 판독기와 같은 약간 더 세부적인 권한을 부여합니다.

이상적으로 모든 응용 프로그램 액세스는 저장 프로 시저 *를 통해 이루어져야하므로 해당 데이터베이스의 저장 프로 시저에 대한 실행 권한 만 필요합니다.

* 보안 관점에서 특정 사용자가 특정 데이터를 볼 수 있도록 프로 시저를 작성하고 해당 프로 시저에 대한 실행 권한을 사용자에게 부여 할 수 있습니다 . 사용자가 직접 쿼리 할 수있게하려면 관련된 모든 테이블에 대해 선택 권한을 부여 해야합니다. 프로 시저를 사용하는 것이 더 쉽고 디버그도 더 쉽습니다.

저장 프로시 저는 테이블 액세스를 추상화하고 액세스를 제한합니다. DBA 유형의 경우 “모든 인스턴스 변수를 볼 수 있습니다. 메소드, getter 또는 setter를 사용하고 싶지 않습니다”와 같습니다.


답변

에서 marc_s 응답 “어떻게 SQL Server의 로그인으로 Active Directory 사용자 그룹을 추가하는 방법” :

SQL Server Management Studio에서 다음으로 이동하여 Object Explorer > (your server) > Security > Logins마우스 오른쪽 단추를 클릭하십시오 New Login.

여기에 이미지 설명을 입력하십시오

그런 다음 나타나는 대화 상자에서 보려는 개체 유형을 선택하고 ( Groups기본적으로 사용하지 않도록 설정하십시오! 확인) 개체를 찾을 위치 (예 Entire Directory:)를 선택한 다음 AD 그룹을 찾으십시오. .

여기에 이미지 설명을 입력하십시오

이제 단일 AD 사용자를 위해 로그인 할 때와 마찬가지로 일반 SQL Server 로그인이 있습니다. 새 로그인에 필요한 데이터베이스에 대한 권한을 부여하십시오.

해당 AD 그룹의 모든 구성원은 이제 SQL Server에 로그인하여 데이터베이스를 사용할 수 있습니다.


답변

사용자가 SQL에 Sysadmin 권한이있는 DOMAIN \ SecurityGroup의 구성원 인 경우 데이터베이스에 액세스 할 때 사용됩니다. 그렇지 않으면 각 데이터베이스에서 권한을 부여한 DOMAIN \ SecurityGroup을 확인해야합니다. 사용자가 2 개의 SecurityGroups의 구성원 인 경우 SecGroupA에 선택 권한이 있고 SecGroupB에 삽입 권한이 있으면 사용자가 선택하여 삽입 할 수 있습니다.


답변