AD LDS(Active Directory Lightweight Directory Services) 스키마는 개체 클래스와 특성을 사용하여 AD LDS 디렉터리에 만들고 저장할 수 있는 개체와 데이터의 유형을 정의합니다. 각 AD LDS 구성 집합에는 스키마 디렉터리 파티션에 저장되며 독립적으로 관리할 수 있는 자체 스키마가 있습니다. 단순하고 융통성 있는 AD LDS의 디자인 개념에 따라 기본 AD LDS 스키마에는 AD LDS 인스턴스를 시작하는 데 필요한 클래스와 특성만 포함됩니다. 스키마는 관리자나 응용 프로그램 자체에 의해 새로운 클래스와 특성으로 확장될 수 있습니다. 또한 필요 없는 스키마 클래스와 특성은 비활성화될 수 있습니다. 디렉터리에 있는 모든 개체의 경우와 마찬가지로 액세스 제어 목록(ACL)은 권한이 있는 사용자만 스키마를 변경할 수 있도록 스키마 개체를 보호합니다. AD LDS 디렉터리의 모든 개체는 다음 그림에 표시된 대로 스키마에 정의된 개체 클래스의 인스턴스입니다.
개체 클래스
개체 클래스는 공통 특성 집합을 공유하는 사용자, 프린터 또는 응용 프로그램과 같은 개체 범주를 나타냅니다. 각 개체 클래스에 대한 정의에는 클래스 인스턴스를 설명하는 데 사용할 수 있는 특성 목록이 들어 있습니다. 예를 들어 User 클래스에는 givenName, surname 및 streetAddress 같은 특성이 있습니다. 클래스의 특성 목록은 해당 클래스의 개체에 포함되어야 하는 특성과 개체에 포함될 수도 있는 추가 특성으로 구분됩니다. 각 클래스의 정의에는 지정된 클래스 개체의 부모가 될 수 있는 개체를 가진 클래스도 나열됩니다.
예를 들어 다음 표에서는 AD LDS User 클래스에 대한 정의를 보여줍니다.
특성 | 값 |
---|---|
DN |
CN=User,CN=Schema,CN=Configuration |
objectClass |
top; classSchema; |
cn |
User; |
distinguishedName |
CN=User,CN=Schema,CN=Configuration; |
subClassOf |
organizationalPerson; |
mayContain |
audio; carLicense; departmentNumber; displayName; employeeNumber; employeeType; givenName; homePostalAddress; jpegPhoto; labeledURI; photo; preferredLanguage; roomNumber; secretary; uid; userPKCS12; userSMIMECertificate; x500uniqueIdentifier; |
rDNAttID |
cn; |
adminDisplayName |
User; |
adminDescription |
User; |
objectClassCategory |
1; |
lDAPDisplayName |
user; |
name |
User; |
objectGUID |
dac9093a-d2aa-408a-81bb-0fe8179165da; |
schemaIDGUID |
bf967aba-0de6-11d0-a285-00aa003049e2; |
objectCategory |
CN=Class-Schema,CN=Schema,CN=Configuration; |
defaultObjectCategory |
CN=Person,CN=Schema,CN=Configuration; |
특성
스키마는 각 특성도 정의합니다. 각 특성에 대한 정의에는 특성의 고유 식별자, 특성에 대한 구문, 특성 값에 대한 선택적 범위 제한, 특성 값이 하나 또는 여러 개일 수 있는지, 특성이 인덱싱되는지 여부 등이 포함됩니다. 디렉터리 스키마는 각 특성을 정확히 한 번만 정의합니다. 그러면 각 특성을 여러 개체 클래스에서 참조할 수 있습니다. 예를 들어 description 특성은 한 번 정의된 다음 여러 개체 클래스에 의해 참조됩니다.
다음 표에서는 전형적인 스키마 특성인 telephone number에 대한 특성 정의를 보여줍니다.
특성 | 값 |
---|---|
objectClass |
top; attributeSchema; |
cn |
Telephone-Number; |
distinguishedName |
CN=Telephone-Number,CN=Schema,CN=Configuration; |
instanceType |
0x4 = ( IT_WRITE ); |
whenCreated |
11/12/2002 13 |
22 |
14 Pacific Standard Time Pacific Daylight Time; |
whenChanged |
11/12/2002 13 |
22 |
14 Pacific Standard Time Pacific Daylight Time; |
uSNCreated |
217; |
attributeID |
2.5.4.20; |
attributeSyntax |
2.5.5.12; |
isSingleValued |
TRUE; |
rangeLower |
1; |
rangeUpper |
64; |
uSNChanged |
217; |
showInAdvancedViewOnly |
TRUE; |
adminDisplayName |
Telephone-Number; |
adminDescription |
Telephone-Number; |
oMSyntax |
64; |
searchFlags |
0; |
lDAPDisplayName |
telephoneNumber; |
name |
Telephone-Number; |
objectGUID |
bf19d7eb-ea0f-4f2d-af67-f439a037d8a4; |
schemaIDGUID |
bf967a49-0de6-11d0-a285-00aa003049e2; |
attributeSecurityGUID |
77b5b886-944a-11d1-aebd-0000f80367c1; |
systemOnly |
FALSE; |
systemFlags |
0x10 = ( FLAG_SCHEMA_BASE_OBJECT ); |
isMemberOfPartialAttributeSet |
TRUE; |
objectCategory |
CN=Attribute-Schema,CN=Schema,CN=Configuration; |
단일값 및 다중값 특성
특성에는 단일값이나 다중값을 사용할 수 있습니다. 단일값 특성의 인스턴스는 단일값만 포함할 수 있습니다. 다중값 특성의 인스턴스는 여러 값을 포함할 수 있는데 이때 모든 값의 구문은 동일해야 합니다. 다중값 특성의 각 값은 고유해야 합니다.
참고 | |
다중값 특성은 해당 값을 순서 없이 저장합니다. 따라서 다중값 특성의 값 순서에 따라 프로그램 방식이든 수동이든 어떠한 디렉터리 결정도 내려서는 안 됩니다. |
인덱싱된 특성
특성을 인덱싱하면 인덱싱된 특성을 기반으로 하는 쿼리의 성능을 개선할 수 있습니다. 단일값 특성과 다중값 특성은 모두 인덱싱할 수 있지만 클래스는 인덱싱할 수 없습니다. 해당 스키마 정의를 통해 특성을 인덱싱하도록 표시할 수 있습니다. 특성을 인덱싱하면 검색 문자열 지정 시 사용자가 접두사와 접미사로 와일드카드(*)를 사용할 수도 있습니다. 인덱싱되도록 특성을 표시하면 특정 클래스의 구성원인 인스턴스는 물론 특성의 모든 인스턴스가 색인에 추가됩니다. 특히 다중값 특성을 인덱싱하면 디렉터리 데이터베이스 크기는 물론 복제 및 개체 만들기 시간이 늘어날 수 있습니다. 그러므로 일반적으로 사용되는 특성만 인덱싱해야 합니다.
스키마에 대한 내용은 Active Directory 스키마(