SQL Server 2008에서 전체 Active Directory 그룹 보안 액세스를 어떻게 할당합니까?


40

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

답변:


48
  • 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대신 사용해야합니다.


3
SQL 사용자 (이 경우 AD 그룹) 대신 역할에 권한을 할당해야하는 이유를 설명하는 데 도움이됩니다.
Drew Chapin

아마도 "로그인에서"대신 "로그인 [...]에 대해 사용자 [...] 작성하십시오"를 의미 합니까?
Agostino

... CREATE USER를 위한 LOGIN ...; 그리고 ... 사용자를 만들 FROM ... LOGIN; 둘 다 나를 위해 일한다 (MSSQL2016). 차이가 있는지 확실하지 않습니까?
리버스 엔지니어


4

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

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

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

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

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


3

에서 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에 로그인하여 데이터베이스를 사용할 수 있습니다.


2
SO 답변에 연결하면 유용 할 수 있지만 게시물에 새로운 것을 추가하지는 않습니다. 링크를 주석으로 게시했을 수 있습니다.
Andriy M

2
대답은 객체 유형에서 그룹을 확인하기위한 멋진 스크린 샷이 있습니다. 왜냐하면 이것이 내가 시도했을 때 누락 된 것이기 때문입니다. 내 의견으로는 링크가 유용한 방법으로 표시되지 않습니다. 다음 사람을 돕기 위해 노력하고 있습니다.
Even Mien

무슨 소리 야? 일반적으로 링크를 따라 가면 링크를 따르는 모든 사용자가 멋진 스크린 샷과 여기에 다시 게시 한 모든 것을 볼 수 있습니다. 그러나 내 의견이 변하지 않았다는 사실을 알리는 것만으로는 논쟁의 여지가 없습니다.
Andriy M

4
내 의견도 변하지 않았다. 주석의 링크는 웹 페이지의 실제 이미지와 동일한 정보를 전달하지 않습니다. "보여라."
심지어 Mien

1

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

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.