Netwrix 1Secure는 데이터와 아이덴티티 전반에 걸쳐 통합된 가시성을 제공합니다 - 14일간 무료로 전체 액세스가 가능합니다.무료 평가판 시작

리소스 센터블로그

Active Directory 쿼리 기반 그룹을 만드는 방법

Active Directory 쿼리 기반 그룹을 만드는 방법

Jan 23, 2024

Using Active Directory (AD) 보안 그룹과 배포 그룹을 사용하는 것은 IT 관리를 간소화하고 보안을 강화하며 효과적인 커뮤니케이션을 가능하게 하는 모범 사례입니다. 하지만 많은 조직에서는 이러한 그룹의 멤버십이 특정 사용자, 컴퓨터 및 기타 엔터티의 명시적 목록으로 정의되어 있습니다. 이러한 정적 그룹을 사용하면, 직원이 입사하거나 역할을 변경할 때, 장치가 추가되거나 폐기될 때, 또는 기타 변경이 발생할 때마다 관련된 모든 그룹을 수동으로 업데이트해야 하므로 작업량이 많고 오류가 발생하기 쉽습니다.

보안은 강화하면서 IT 운영 부담은 줄여주는 유용한 대안이 있습니다. 바로 AD 쿼리를 실행해 그룹 멤버십을 동적으로 결정하는 방법입니다. Microsoft는 LDAP 쿼리를 기반으로 분배(Distribution) 그룹을 만들 수 있도록 사용자 친화적인 인터페이스를 제공합니다. 하지만 안타깝게도 쿼리 기반 보안 그룹을 생성하기 위한 해당 GUI는 없습니다. 쿼리 기반 보안 그룹은 대부분의 AD 그룹을 차지합니다. 유일하게 기본 제공되는 방법은 Windows PowerShell을 사용해 스크립트를 작성하는 것입니다.

이 문서에서는 두 가지 유형의 동적 그룹을 만드는 네이티브(기본 제공) 방법을 설명한 다음, 강력한 대안으로 Netwrix Directory Manager의 Smart Groups를 제안합니다.

분배(Distribution) 그룹

먼저 분배 그룹부터 살펴보겠습니다. 분배 그룹은 흔히 분배 목록(Distribution lists)이라고도 합니다. 분배 목록을 사용하면 사용자는 사람들의 그룹에게 이메일 메시지를 더 효율적이고 정확하게 보낼 수 있습니다. 예를 들어 부서와 팀마다 하나씩, 그리고 각 사무실 위치마다 하나씩 분배 목록을 만들 수 있습니다. 이러한 분배 목록은 Global Address List (GAL)에 표시되므로 업무 사용자는 GAL에서 항목 하나를 선택하기만 하면 동료 전체 그룹에게 메시지를 보낼 수 있습니다.

정적 분배(Distribution) 그룹의 단점

직원이 조직에 지속적으로 입사·퇴사하고 조직 내 역할도 수시로 바뀌기 때문에, 배포 목록을 최신 상태로 유지하려고 하는 일은 IT 팀에게 번거로움이 큽니다. 어떤 경우에는, 목록을 올바르게 채우고 있는지 확인하는 데 필요한 인사이트조차 갖추지 못할 수 있습니다.

배포 목록을 최신 상태로 유지하지 못했을 때의 결과는 심각할 수 있습니다. 목록에 있어야 할 사용자가 포함되지 않으면, 해당 사용자는 자신의 생산성과 필수 비즈니스 프로세스에 중요할 수 있는 메시지를 받지 못하게 됩니다. 더 나쁜 점은, 부정확한 배포 목록은 보안 및 규정 준수 문제로 이어질 수 있다는 것입니다. 메시지가 포함된 정보를 열람하면 안 되는 개인에게 전송될 수 있기 때문입니다.

쿼리 기반 배포 그룹

이를 돕기 위해 Microsoft는 Exchange Server 2003에서 쿼리 기반 배포 그룹을 도입했습니다. 이들은 일반 배포 그룹과 동일한 기능을 제공하지만, 멤버십은 사용자 목록을 고정적으로 두어 결정하지 않습니다. 대신, 누군가가 연결된 그룹으로 이메일을 보내는 경우마다 실행되는 LDAP 쿼리로 멤버십이 동적으로 생성됩니다.

예를 들어, 조직의 특정 부서에 현재 소속된 모든 사용자를 그룹의 멤버로 정의하는 LDAP 쿼리를 만들 수 있습니다. 특정 사용자가 다른 부서로 이동하면, 해당 사용자의 AD 사용자 개체가 업데이트되는 즉시 배포 그룹으로 전송되는 이메일을 더 이상 받지 않게 됩니다. 즉, 누구도 배포 목록의 멤버십을 수동으로 수정할 필요가 없습니다.

배포 그룹과 연결된 쿼리는 Active Directory에서 msExchDynamicDLFilter 및 msExchQueryFilter에서 확인할 수 있습니다.

Microsoft Exchange를 사용해 쿼리 기반 배포 그룹을 만드는 방법

쿼리 기반 배포 그룹은 만들기 쉽습니다:

  1. Exchange 관리 센터를 실행한 다음 왼쪽 창에서 Recipients을 선택합니다.
  2. 다음으로 이동합니다: Groups > New > Dynamic distribution group.
  3. 새 동적 배포 그룹(New Dynamic Distribution Group) 마법사에서 새 목록의 다음 속성을 지정합니다:
  4. 그룹의 이름, 별칭 및 설명
  5. 그룹을 만들 위치로 지정할 조직 구성 단위(OU)
  6. 그룹의 소유자(선택 사항이지만 권장)
  7. 리소스 사서함 또는 Exchange 사서함을 보유한 사용자와 같은 수신자 유형
  8. 부서 및 지리적 위치와 같은, 사용자의 배포 목록 멤버십을 결정하는 기준
  9. 저장 을 클릭하여 그룹을 만듭니다.

Exchange를 통해 생성된 쿼리 기반 배포 그룹의 제한 사항

Exchange를 통해 생성된 쿼리 기반 배포 그룹은 정적 배포 목록보다 더 정확하고 관리하기 쉽지만, 다음과 같은 중요한 특성을 염두에 두어야 합니다:

  • 배포 목록의 멤버십을 결정하는 특성은 몇 가지 공통 사용자 특성(컨테이너, 시/도 또는 주, 회사, 부서)과 몇 가지 사용자 지정 특성으로 제한됩니다.
  • 배포 목록의 구성원은 해당 목록으로 이메일을 보낼 때 결정되므로, 일반 사용자들은 Outlook 클라이언트에서 배포 목록의 구성원을 확인할 수 없습니다. 따라서 사용자가 목록으로 보낸 메시지를 정확히 누가 받게 될지 확실히 알 수 없습니다.
  • 쿼리 기반 배포 목록에 이메일을 보낼 때마다 해당 쿼리를 평가합니다. 따라서 이러한 그룹을 광범위하게 사용하면 Exchange 서버와 global catalog 에 상당한 부담이 됩니다.

보안 그룹

배포 그룹은 분명히 가치가 있고 보안과 생산성을 보장하기 위해 최신 상태로 유지해야 하지만 AD security 그룹이 더 중요합니다. 관리자는 조직 내 역할에 따라 사용자가 필요로 하는 액세스 권한을 빠르고 정확하게 프로비저닝하기 위해 AD 보안 그룹에 의존합니다. 예를 들어 “Sales”라는 보안 그룹을 만들고 영업 부서 구성원이 필요로 하는 특정 정보, 애플리케이션 및 기타 리소스에 대한 액세스 권한을 부여할 수 있습니다. 그룹의 구성원인 모든 사용자는 해당 그룹에 할당된 모든 액세스 권한을 자동으로 받습니다.

정적 보안 그룹의 단점

정적 배포 그룹(Static distribution groups)과 마찬가지로, IT 팀은 각 정적 보안 그룹에 정확히 적절한 사용자만 구성원으로 포함되도록 보장하는 데 끊임없는 어려움을 겪습니다. 실제로 조직 내에서 시간이 지나며 직원의 역할이 바뀌면, 더 이상 업무와 관련이 없는 그룹에 계속해서 구성원 자격을 유지하는 경우가 흔합니다. 예를 들어 누군가 영업(Sales) 부서에서 마케팅(Marketing)으로 옮기면, 영업 관련 그룹에서 제거되지 않았기 때문에 영업 데이터베이스 및 기타 리소스에 대한 권한을 계속 보유하는 경우가 많고, 이는 더 이상 접근할 수 없어야 하는 정보에 대한 접근으로 이어집니다. 또한 과중한 업무로 부담이 큰 관리자는 “Managers” 같은 그룹에 주니어 직원을 추가하는 실수 등을 저질러, 민감한 정보에 부적절한 수준의 접근 권한을 부여할 수 있습니다.

이와 같은 과도한 권한 부여(오버프로비저닝)는 보안과 규제 준수(규정 준수) 양 측면에서 심각한 문제입니다. 반대로, IT 팀이 사용자가 반드시 속해야 하는 모든 보안 그룹에 대한 구성원 자격을 부여하지 못하는 경우도 있습니다. 이는 중요한 비즈니스 프로세스를 방해하고 헬프데스크에 부담을 가중시킬 수 있습니다.

Microsoft PowerShell을 사용하여 보안 그룹의 구성원 업데이트

관리자는 Windows PowerShell을 사용하여 쿼리에 따라 보안 그룹을 생성하고 해당 그룹을 채울 수 있습니다. 또한 멤버를 수동으로 추가하고 제거하는 대신, 스크립트를 사용해 보안 그룹의 구성원을 업데이트할 수도 있습니다. 예를 들어, 다음 스크립트는 보안 그룹 PseudoDynamicGroup이 지정된 OU (desiredUsers):

Import-Module ActiveDirectory

      #Define the variable ‘groupname’ and load it with the members of the group ‘PseudoDynamicGroup’.

    $groupname = PseudoDynamicGroup

    #Define the variable ‘users’ and populate it with all the users in specified OU.

    $users = Get-ADUser -Filter * -SearchBase "ou=desiredUsers,dc=domain,dc=tld"

    #Iterate through the users in the ‘users’ variable. Add each of them to the group ‘PseudoDynamicGroup’ if they are not already a member.

    foreach($user in $users)

    {

      Add-ADGroupMember -Identity $groupname -Member $user.samaccountname -ErrorAction SilentlyContinue

    }

    #Define the variable ‘members’ and populate it with the current membership of the security group ‘PseudoDynamicGroup’.

    $members = Get-ADGroupMember -Identity $groupname

    #Iterate through the users in the ‘members’ variable. If any user is not in the specified OU, remove them from ‘PseudoDynamicGroup’.

    foreach($member in $members)

    {

      if($member.distinguishedname -notlike "*ou=desiredUsers,dc=domain,dc=tld*")

      {

        Remove-ADGroupMember -Identity $groupname -Member $member.samaccountname

      }

    }
      

PowerShell로 생성한 쿼리 기반 보안 그룹의 한계

물론, 모든 AD 보안 그룹마다 이와 같은 PowerShell 스크립트를 일일이 세심하게 만드는 것은 전문 기술을 요구하는 방대한 작업입니다. 또한 스크립트는 유지 관리가 필요하며, 새로운 프로젝트나 팀이 만들어질 때마다 새로운 스크립트를 작성해야 합니다. 많은 조직은 이처럼 어렵고도 중요한 작업에 투입할 만큼 충분한 IT 리소스를 보유하지 못하는 경우가 많아, Netwrix Directory Manager 같은 신뢰할 수 있는 제3자 솔루션을 찾게 됩니다.

Netwrix Directory Manager로 구성하는 쿼리 기반 그룹

Netwrix Directory Manager를 사용하면 Active Directory 쿼리를 통해 구성원을 동적으로 결정하는 배포 목록과 보안 그룹을 모두 손쉽게 만들 수 있습니다. 이러한 쿼리 기반 그룹을 Smart Groups라고 합니다.

Smart Group을 만들려면 그룹에 대한 AD 쿼리를 정의하고, 실행 일정을 설정하기만 하면 됩니다. 쿼리를 실행할 때마다 디렉터리에서 개체를 가져와 그룹 멤버십을 업데이트합니다. 쿼리는 수동으로 실행하거나, 정의한 일정에 따라 자동으로 실행할 수도 있습니다. 그 결과 Exchange를 통해 생성한 동적 배포 목록과 달리, Netwrix Directory Manager 배포 그룹은 그룹으로 이메일을 보낼 때마다 쿼리를 실행하지 않으므로 Exchange 서버에 과도한 부담을 주지 않습니다.

쿼리 만들기

Netwrix Directory Manager의 Query Designer를 사용하면 쿼리를 만들기 위한 직관적인 시각적 인터페이스를 제공하므로 PowerShell 명령을 작성할 필요가 없습니다. 다음 탭이 있습니다:

  • 일반 — 그룹의 구성원이 될 수 있는 개체 유형을 선택합니다.
  • 저장소 — 어떤 Exchange 서버 또는 메일박스 데이터베이스에 있는 메일박스를 선택합니다.
  • ID 저장소 — 그룹 구성원 자격의 기준을 지정합니다. 예를 들어 위치, 회사, 부서 또는 사원 ID 속성을 사용할 수 있으며, AND 및 OR와 같은 논리 조건을 적용하여 결과를 더 필터링할 수도 있습니다.
  • 고급 — Oracle, ODBC, Microsoft SQL Server 또는 텍스트 파일과 같은 외부 데이터 소스를 사용해 그룹 구성원을 판단하는 데 도움을 받으세요.
  • 포함/제외 — 쿼리 결과와 관계없이 그룹의 멤버십에서 개체를 추가하거나 제거합니다.
  • 스마트 스크립트 — VB Script 지원을 사용하여 자신만의 사용자 지정 로직에 따라 스크립트를 작성하세요.

결론

쿼리 기반 보안 그룹과 배포 목록은 IT 업무량을 줄이면서 보안을 강화하고 비즈니스 생산성을 높이는 데 매우 유용합니다. 그러나 기본 제공 옵션을 사용할 경우 동적 배포 목록은 Exchange 리소스에 과도한 부담을 줄 수 있으며, 동적 보안 목록을 만들려면 상당한 시간과 PowerShell 전문성이 필요합니다. Netwrix Directory Manager는 강력한 대안을 제공합니다. 즉, 동적 보안 그룹과 배포 목록을 손쉽게 만들고 유지 관리할 수 있는 Smart Groups입니다.

공유하기

더 알아보기

저자 소개

Asset Not Found

Jonathan Blackwell

소프트웨어 개발 책임자

2012년부터 엔지니어이자 혁신가인 Jonathan Blackwell은 엔지니어링 리더십을 제공해 Netwrix GroupID를 Active Directory 및 Azure AD 환경에서 그룹 및 사용자 관리 분야의 최전선에 올려놓았습니다. 개발, 마케팅, 영업에서의 그의 경험을 통해 Jonathan은 Identity 시장과 구매자가 생각하는 방식까지 완전히 이해할 수 있습니다.