Windows Server Active Directory에 사용자 정의 속성 추가하기

필요성

도메인 사용자에 특정 경로 식별자를 저장하기 위한 속성을 추가해야 하는 비즈니스 요구사항이 발생했습니다. 기존에 사용자 정의 속성에 대한 구체적인 정보가 부족하여 공식 문서를 참고하여 진행하게 되었습니다. 본 테스트에서 추가한 속성명은 userPdictionary입니다.

시스템 환경

  • Windows Server 2016 Standard
  • Active Directory
  • DNS

Active Directory 스키마 활성화

먼저 MMC 콘솔에서 Active Directory 스키마를 활성화해야 합니다.

스키마 DLL 등록

명령 프롬프트에서 다음 명령을 실행하여 schmmgmt.dll을 등록합니다:

regsvr32 schmmgmt.dll

MMC에 Active Directory 스키마 추가

  1. 실행 창에서 "mmc"를 입력하여 콘솔을 시작합니다.
  2. "파일 - 추가/제어 단원"을 선택합니다.
  3. "Active Directory 스키마"를 추가하고 확인을 클릭합니다.
  4. 좌측 패널에 현재 AD의 클래스 및 속성이 표시됩니다.

사용자 정의 속성 추가

  1. 좌측 속성 목록에서 마우스 오른쪽 버튼을 클릭하고 "새로 만들기 - 속성"을 선택합니다.
  2. "계속"을 선택하여 새 속성 생성 인터페이스로 진입합니다.
  3. 주요 매개변수를 설정합니다:
    • 공용명
    • LDAP 표시명
    • 고유한 X500 개체 ID
    • 설명

"고유한 X500 개체 ID"는 스키마 확장 시 필수적인 요소입니다.

개체 식별자(OID) 획득

OID는 분산 애플리케이션의 데이터 요소, 구문 및 기타 부분을 고유하게 식별하기 위해 다양한 기관에서 발급하는 고유한 숫자 값입니다. LDAP 프로토콜은 디렉터리 서비스가 OID를 사용하여 객체 클래스, 속성 및 구문을 식별하도록 요구합니다.

OID 생성 스크립트

다음 스크립트를 사용하여 고유한 OID를 생성할 수 있습니다:

' oidgen.vbs
' 고유한 OID를 생성하는 스크립트
Function GenerateOID() 
    ' 변수 초기화
    Dim guidString, oidPrefix 
    Dim guidPart0, guidPart1, guidPart2, guidPart3, guidPart4, guidPart5, guidPart6 
    Dim oidPart0, oidPart1, oidPart2, oidPart3, oidPart4, oidPart5, oidPart6 
    
    ' GUID 생성
    Set TypeLib = CreateObject("Scriptlet.TypeLib") 
    guidString = TypeLib.Guid 
    
    ' 16진수를 10진수로 변환
    guidPart0 = Trim(Mid(guidString, 2, 4)) 
    guidPart1 = Trim(Mid(guidString, 6, 4)) 
    guidPart2 = Trim(Mid(guidString, 11, 4)) 
    guidPart3 = Trim(Mid(guidString, 16, 4)) 
    guidPart4 = Trim(Mid(guidString, 21, 4)) 
    guidPart5 = Trim(Mid(guidString, 26, 6)) 
    guidPart6 = Trim(Mid(guidString, 32, 6)) 
    
    ' 16진수를 10진수로 변환
    oidPart0 = CLng("&H" & guidPart0) 
    oidPart1 = CLng("&H" & guidPart1) 
    oidPart2 = CLng("&H" & guidPart2) 
    oidPart3 = CLng("&H" & guidPart3) 
    oidPart4 = CLng("&H" & guidPart4) 
    oidPart5 = CLng("&H" & guidPart5) 
    oidPart6 = CLng("&H" & guidPart6) 
    
    ' OID 조합
    GenerateOID = "1.2.840.113556.1.8000.2554." & oidPart0 & "." & oidPart1 & "." & oidPart2 & "." & oidPart3 & "." & oidPart4 & "." & oidPart5 & "." & oidPart6 
End Function 

' 결과 파일 생성
Set objFSO=CreateObject("Scripting.FileSystemObject")
outFile="C:\Temp\oidInfo.txt"
Set objFile = objFSO.CreateTextFile(outFile,True)

' 생성된 OID 출력
oidText = "귀하의 기본 OID는 다음과 같습니다: " & GenerateOID & vbCrLf & vbCrLf & _
    "이 접두사는 스키마 속성 및 클래스를 명명하는 데 사용해야 합니다. 예를 들어, 접두사가 ""MyCompany""인 경우 ""mycompany-Employee-ShoeSize""와 같이 스키마 요소를 명명해야 합니다." & vbCrLf & vbCrLf & _
    "새로운 스키마 클래스 및 속성에 대한 후속 OID는 .X를 OID에 추가하여 생성할 수 있으며, 여기서 X는 선택한 임의의 숫자일 수 있습니다. 일반적인 스키마 확장 구조는 다음과 같습니다:" & vbCrLf & _
    "할당된 OID가 1.2.840.113556.1.8000.2554.999999인 경우:" & vbCrLf & _
    "- 클래스는 1.2.840.113556.1.8000.2554.999999.1 아래에 위치할 수 있습니다" & vbCrLf & _
    "  첫 번째 클래스 OID: 1.2.840.113556.1.8000.2554.999999.1.1" & vbCrLf & _
    "  두 번째 클래스 OID: 1.2.840.113556.1.8000.2554.999999.1.2 등..." & vbCrLf & _
    "- 속성은 1.2.840.113556.1.8000.2554.999999.2 아래에 위치할 수 있습니다" & vbCrLf & _
    "  첫 번째 속성 OID: 1.2.840.113556.1.8000.2554.999999.2.1" & vbCrLf & _
    "  두 번째 속성 OID: 1.2.840.113556.1.8000.2554.999999.2.2 등..." & vbCrLf & vbCrLf

objFile.Write oidText
objFile.Close

명령 프롬프트에서 이 스크립트를 실행하면 현재 AD의 OID가 생성됩니다. 예를 들어, 다음과 같은 OID가 생성될 수 있습니다:

1.2.840.113556.1.8000.2554.55786.31829.55335.19299.48276.12206014.6177421.2.1

OID를 속성에 적용

생성된 OID를 사용하여 새 속성을 정의합니다. 테스트 환경에서는 다음과 같이 설정했습니다:

  • 공용명: userPdictionary
  • LDAP 표시명: userPdictionary
  • 고유한 X500 개체 ID: 1.2.840.113556.1.8000.2554.55786.31829.55335.19299.48276.12206014.6177421.2.1
  • 설명: 사용자 경로 식별자 저장용 속성

속성을 클래스와 연결

  1. MMC 콘솔에서 "user" 클래스를 선택하고 마우스 오른쪽 버튼을 클릭합니다.
  2. "속성"을 선택합니다.
  3. "속성" 탭에서 선택 가능한 프로젝트 목록에서 새로 생성한 사용자 정의 속성을 추가합니다.
  4. "확인"을 클릭하여 변경 사항을 저장합니다.

스키마 확장 적용

스키마를 확장하는 애플리케이션은 다음 절차에 따라 업데이트를 적용해야 합니다:

  1. 새 속성 추가
  2. 새 클래스 추가
  3. 새 속성을 클래스에 추가
  4. 캐시 새로고침 트리거

스키마 캐시에 새 속성 이름이 즉시 존재하지 않으므로, 3단계에서 참조되는 새 속성은 OID로 참조해야 합니다. 즉시 확장을 사용하지 않는 경우 4단계는 필요하지 않습니다. 확장은 시스템 부하에 따라 약 5분 내에 스키마 캐시에 나타납니다.

사용자 속성 편집

Active Directory 사용자 및 컴퓨터 스냅인에서 사용자 개체를 열고 새로 추가한 속성에 값을 설정할 수 있습니다.

태그: Active Directory Windows Server OID 사용자 정의 속성 스키마 확장

6월 10일 21:09에 게시됨