Computer >> 컴퓨터 >  >> 시스템 >> Windows Server

Active Directory 시간 기반 임시 그룹 멤버십 설정 방법 (Windows Server 2016)

Windows Server 2016의 Active Directory에는 사용자를 AD 보안 그룹에 일정 시간 동안만 추가할 수 있는 유용한 기능이 도입되었습니다. 이 기능은 임시 그룹 멤버십(Temporary Group Membership, Time Based)이라고 하며, 지정한 시간이 경과하면 관리자의 개입 없이 해당 사용자가 보안 그룹에서 자동으로 제거됩니다.

예를 들어 특정 사용자에게 일시적으로 권한을 부여해야 하는 상황에서 이 기능을 활용하면, 작업 종료 후 수동으로 권한을 회수할 필요가 없어 보안 관리 부담을 크게 줄일 수 있습니다.

1. Privileged Access Management(PAM) 기능 활성화

임시 그룹 멤버십 기능을 사용하려면 먼저 Active Directory 포리스트에서 Privileged Access Management Feature를 활성화해야 합니다. 삭제된 개체를 복구할 수 있게 해주는 AD 휴지통(Recycle Bin)과 마찬가지로, PAM은 한 번 활성화하면 다시 비활성화할 수 없으므로 신중하게 결정해야 합니다.

포리스트 기능 수준 확인

먼저 AD 포리스트가 Windows Server 2016 이상의 포리스트 기능 수준(Forest Functional Level)으로 실행 중인지 확인합니다:

(Get-ADForest).ForestMode

PAM 기능 활성화 여부 확인

AD PowerShell 모듈에서 제공하는 아래 명령으로 현재 포리스트에서 PAM 기능이 활성화되어 있는지 확인합니다:

Get-ADOptionalFeature -filter "name -eq 'privileged access management feature'"

결과에서 EnabledScopes 매개변수 값을 확인합니다. 값이 비어 있다면 해당 포리스트에서 PAM 기능이 아직 활성화되지 않은 것입니다.

PAM 기능 활성화하기

PAM 기능을 활성화하려면 Enable-ADOptionalFeature cmdlet을 사용하고, 인자 중 하나로 포리스트 이름을 지정합니다:

Enable-ADOptionalFeature 'Privileged Access Management Feature' -Scope ForestOrConfigurationSet -Target contoso.com

명령 실행 시 "Enable-ADOptionalFeature: The SMO role ownership could not be verified because its directory partition has not replicated successfully with at least one replication partner" 오류가 발생한다면, 도메인 컨트롤러와 AD 복제 상태, FSMO 역할 소유자의 가용성을 점검하고 AD 복제를 수동으로 강제 실행해야 합니다.

활성화 후 아래 명령으로 EnabledScopes 필드가 비어 있지 않은지 다시 확인합니다:

Get-ADOptionalFeature -filter "name -eq 'privileged access management feature'" | select EnabledScopes

2. 사용자를 그룹에 임시 추가하기

사용자를 AD 그룹에 임시로 추가하려면 PowerShell cmdlet을 사용해야 합니다. ADUC 그래픽 스냅인(dsa.msc)에서는 임시 그룹 추가가 지원되지 않습니다.

PAM이 활성화되면 Add-ADGroupMember cmdlet의 특수 매개변수인 MemberTimeToLive를 사용하여 사용자를 AD 그룹에 추가할 수 있습니다. TTL(생존 시간)은 New-TimeSpan cmdlet으로 편리하게 지정할 수 있습니다. 예를 들어 사용자 test1Domain Admins 그룹에 15분 동안만 추가하려면 다음과 같이 실행합니다:

$ttl = New-TimeSpan -Minutes 15
Add-ADGroupMember -Identity "Domain Admins" -Members test1 -MemberTimeToLive $ttl

주의: Enterprise Admins, Domain Admins 같은 최상위 권한 도메인 그룹에 대한 임시 액세스를 제공하는 데 임시 그룹 멤버십을 사용하는 것은 권장되지 않습니다. 일반적으로 이 기능은 리소스 그룹에 대한 임시 액세스 권한을 부여하는 용도로 사용됩니다. 관리 권한을 위임하려면 Active Directory 위임 또는 PowerShell JEA(Just Enough Administration)를 사용하는 것이 올바른 방법입니다.

3. 남은 멤버십 시간 확인하기

Get-ADGroup cmdlet을 사용하면 사용자가 그룹 멤버로 남아 있는 시간을 확인할 수 있습니다:

Get-ADGroup 'Domain Admins' -Property member –ShowMemberTimeToLive

명령 결과에서 그룹 멤버 목록에 <TTL=187,CN=test1,CN=Users,DC=woshub,DC=loc> 형태의 항목이 표시됩니다. TTL 값은 초 단위로 표시되며, 이는 해당 사용자가 Domain Admins 그룹에 임시로 추가되었음을 의미합니다. 187초 후에는 자동으로 그룹에서 제거됩니다.

Kerberos 티켓 만료 처리

임시 그룹 멤버십이 적용되면 사용자의 Kerberos 티켓도 함께 만료됩니다. KDC가 임시 멤버십을 가진 사용자에게 티켓을 발급할 때, 티켓 수명을 TTL 값 중 가장 짧은 것과 동일하게 설정하기 때문입니다.

다음 Kerberos 티켓 갱신 시간은 아래 명령으로 확인할 수 있습니다:

klist

TGT 티켓의 다음 갱신 시간은 출력 결과의 Renew Time 항목에서 확인할 수 있습니다. 참고로 klist를 사용하면 로그오프하지 않고도 AD 그룹 멤버십을 즉시 새로고침할 수 있습니다.

하이브리드 환경 주의사항: Azure AD Connect를 통해 온프레미스 Active Directory에서 Azure AD로 그룹을 동기화하는 하이브리드 시나리오에서는 클라우드 동기화 주기 설정을 함께 고려해야 합니다. 온프레미스에서 그룹 멤버십이 만료되더라도 Azure AD에는 동기화 주기까지 반영되지 않을 수 있습니다.

4. dynamicObject를 활용한 임시 AD 그룹 생성

또한 AD(Windows Server 2003 포리스트 기능 수준 이상)에서는 그룹 자체를 임시 개체로 생성하는 방법도 있습니다. 이런 그룹에는 dynamicObject 클래스가 사용되며, 해당 그룹의 자동 삭제는 Active Directory 가비지 컬렉션(Garbage Collection) 프로세스에 의해 수행됩니다.

예를 들어 한 달 후 자동으로 삭제되는 임시 그룹을 만들려면(2592000 = 31 × 24 × 60 × 60초) 다음 PowerShell 스크립트를 사용합니다:

$OU = [adsi]"LDAP://OU=Groups,OU=Munich,OU=DE,DC=woshub,DC=loc"
$Group = $OU.Create("group","cn=MUN-FS01_Public_tmp")
$Group.PutEx(2,"objectClass",@("dynamicObject","group"))
$Group.Put("entryTTL","2678400")
$Group.SetInfo()

ADUC 콘솔에서 그룹 속성을 열어보면 entryTTL 특성을 확인할 수 있습니다. 이 값은 해당 AD 그룹이 몇 초 후에 삭제될지를 나타냅니다.

마무리

과거에는 임시 AD 그룹 멤버십을 구현하려면 동적 개체, 각종 스크립트와 예약된 작업, 또는 Microsoft Forefront Identity Manager처럼 복잡한 시스템을 활용해야 했습니다. 하지만 Windows Server 2016/2019부터는 이 편리한 기능을 별도의 추가 구성 없이 기본적으로 사용할 수 있게 되었습니다. 임시 권한 부여가 필요한 환경이라면 PAM 기반의 시간 제한 그룹 멤버십을 적극적으로 검토해 보시기 바랍니다.