Active Directory에서 관리 서비스 계정(gMSA) 보호

Active Directory에서 관리 서비스 계정(gMSA) 보호

2025년 4월 8일

이 기술 및 교육 문서는 보안 분석가, IT 관리자 및 시스템 엔지니어가 Active Directory에서 gMSA(그룹 관리 서비스 계정)를 구현하고 보호하도록 안내하는 것을 목표로 합니다. gMSA는 암호 관리를 자동화하고 관리를 단순화하여 서비스 계정 보안 문제에 대한 강력한 솔루션을 제공합니다[1].

소개

정적 비밀번호를 사용하는 기존 서비스 계정은 심각한 위험을 초래합니다. gMSA(그룹 관리 서비스 계정)는 MSA(관리 서비스 계정)의 기능을 확장하여 단일 서비스 계정을 여러 서버에서 사용할 수 있도록 하며 Active Directory는 수동 개입 없이 자동으로 비밀번호 교체 및 키 배포를 관리합니다[2].

이 실무 가이드에서는 전제 조건, gMSA 생성 및 구성, gMSA를 서비스 및 예약된 작업과 연결하는 방법, 서비스 계정을 효율적으로 보호하고 관리하기 위한 모범 사례를 다룹니다.

gMSA가 왜 중요한가요?

  • 자동 비밀번호 관리: 복잡하고 긴 비밀번호는 Active Directory에 의해 30일마다 자동으로 생성되고 교체됩니다.
  • 여러 서버에 배포: 단일 gMSA를 여러 서버에서 사용할 수 있으므로 분산 환경에서 관리가 단순화됩니다.
  • 최소 권한의 원칙: 필요한 최소한의 권한 부여를 용이하게 합니다.
  • 향상된 감사: 서비스 ID가 명확하게 정의되고 추적 가능하므로 감사가 단순화됩니다.

전제조건

  1. Windows Server 2012 이상이 설치된 도메인 컨트롤러(DC).
  2. Windows Server 2012 이상의 DFL(도메인 기능 수준).
  3. Windows PowerShell용 Active Directory 모듈.
  4. gMSA를 사용할 도메인 구성원 서버.
  5. 호스트용 보안 그룹: gMSA를 사용할 서버를 포함할 Active Directory의 보안 그룹입니다.

단계별: gMSA 구현 및 보안

1. KDS 루트 키 서비스 구성

Active Directory가 gMSA용 암호를 생성하려면 KDS 루트 키 서비스가 필요합니다. 포리스트당 한 번씩 구성해야 합니다[3].

  1. 도메인 컨트롤러에서 관리자 권한으로 Windows PowerShell을 엽니다.
  2. KDS 루트 키 서비스가 이미 구성되어 있는지 확인합니다. ``파워셸 Get-KdsRootKey ````
  3. 키가 반환되지 않으면 새 KDS 루트 키를 생성합니다. 프로덕션의 경우 Add-KdsRootKey -EffectiveTime (Get-Date).AddHours(-10)를 사용하여 복제를 활성화합니다. 즉시 테스트하려면 다음을 사용하세요. ``파워셸 Add-KdsRootKey -EffectiveImmediately ````

2. 호스트에 대한 보안 그룹 생성

이 그룹에는 gMSA 비밀번호를 복구하도록 허용되는 서버가 포함됩니다.

  1. Active Directory 사용자 및 컴퓨터(dsa.msc)를 엽니다.
  2. 범위가 Global이고 유형이 Security인 새 보안 그룹(예: gMSA_Hosts_ServicoX)을 생성합니다.
  3. gMSA를 사용할 컴퓨터(서버)를 이 그룹에 추가합니다(예: ServidorApp01$, ServidorApp02$).

3. gMSA 만들기

이제 PowerShell을 사용하여 gMSA를 만들어 보겠습니다.

  1. 도메인 컨트롤러에서 관리자 권한으로 Windows PowerShell을 엽니다.
  2. New-ADServiceAccount cmdlet을 사용합니다. ``파워셸 새 ADServiceAccount - 이름 gMSA_ServicoX -DNSHostName gMSA_ServicoX.contoso.com -PrincipalsAllowedToRetrieveManagedPassword "gMSA_Hosts_ServicoX" ````
    • 설명: PrincipalsAllowedToRetrieveManagedPassword 매개 변수는 gMSA 비밀번호를 검색할 수 있는 보안 그룹을 지정합니다. 이 그룹에는 서비스를 실행할 서버가 포함되어야 합니다.

4. 호스트 서버에 gMSA 설치 및 테스트

gMSA를 사용할 서버에서는 gMSA를 설치하고 기능을 테스트해야 합니다.

  1. gMSA_Hosts_ServicoX 그룹의 각 서버 구성원에서 관리자 권한으로 Windows PowerShell을 엽니다.
  2. gMSA를 설치합니다. ``파워셸 설치-ADServiceAccount -Identity gMSA_ServicoX ````
  3. gMSA가 설치되어 작동하는지 테스트합니다. ``파워셸 테스트-ADServiceAccount -Identity gMSA_ServicoX ````
    • 예상 결과: 출력은 'True'여야 하며, 이는 gMSA를 서버에서 사용할 준비가 되었음을 나타냅니다.

5. gMSA를 서비스와 연결

  1. 서비스가 제공될 서버에서실행되면 서비스 콘솔(services.msc)을 엽니다.
  2. 구성하려는 서비스를 찾습니다.
  3. 서비스를 마우스 오른쪽 버튼으로 클릭하고 속성을 선택합니다.
  4. 로그온 탭에서 이 계정을 선택합니다.
  5. 이 계정 필드에 gMSA 이름과 $를 차례로 입력합니다(예: gMSA_ServicoX$).
  6. 비밀번호 필드를 비워 두세요. Active Directory는 자동으로 비밀번호를 관리합니다.
  7. 적용확인을 클릭합니다.
  8. 변경 사항을 적용하려면 서비스를 다시 시작합니다.

6. 예약된 작업에 gMSA 사용

  1. 서버에서 작업 스케줄러(taskschd.msc)를 엽니다.
  2. 새 작업을 생성하거나 기존 작업을 편집합니다.
  3. 일반 탭에서 사용자 또는 그룹 변경...을 클릭합니다.
  4. '선택할 개체의 이름 입력' 필드에 gMSA 이름과 '$'를 차례로 입력합니다(예: gMSA_ServicoX$).
  5. 이름 확인을 클릭한 다음 확인을 클릭합니다.
  6. 비밀번호 필드를 비워 두세요.
  7. 다른 예약된 작업 옵션을 구성하고 확인을 클릭합니다.

모범 사례 및 보안 팁

  • 최소 권한의 원칙: gMSA에는 해당 기능을 수행하는 데 필요한 권한만 부여합니다. 도메인 관리자 권한으로 gMSA를 사용하지 마세요.
  • 전용 보안 그룹: PrincipalsAllowedToRetrieveManagedPassword에 대한 특정 보안 그룹을 사용하여 gMSA를 사용할 수 있는 서버를 제어합니다.
  • 감사: Active Directory 보안 로그를 통해 gMSA 사용을 모니터링하여 비정상적인 활동을 감지합니다.
  • KDS 루트 키 보호: KDS 루트 키는 gMSA 보안에 매우 중요하므로 도메인 컨트롤러가 안전한지 확인하세요.
  • 이전 서비스 계정 제거: 서비스를 gMSA로 마이그레이션하고 정적 암호를 사용한 이전 서비스 계정을 비활성화하거나 삭제합니다.
  • 문서: 사용 중인 gMSA, 실행 중인 서비스, 서버에 대한 기록을 유지하세요.

결론

gMSA(그룹 관리 서비스 계정)는 특히 서비스 ID 관리에서 Active Directory 보안 상태를 개선하는 데 필수적인 구성 요소입니다. gMSA는 암호 순환을 자동화하고, 분산 환경에서 배포를 단순화하고, 최소 권한 원칙 적용을 촉진함으로써 공격 표면과 관리 복잡성을 크게 줄입니다. gMSA의 적절한 구현과 관리는 사이버 위협으로부터 서비스와 애플리케이션을 보호하는 데 중요한 단계입니다.

참고자료

[1] 마이크로소프트. (2023). Active Directory의 그룹 관리 서비스 계정(gMSA). [2] 마이크로소프트. (2023). 관리 서비스 계정 개요. [3] 마이크로소프트. (2023). Active Directory 키 배포 서비스(KDS).