Chapter 12. Designing and Implementing Schema Extensions
For Active Directory to hold any
object, such as a user, it needs to know what the attributes and
characteristics of that object are. In other words, it needs a
blueprint for that object. The Active Directory schema is the
blueprint for all classes, attributes, and syntaxes that potentially
can be stored in Active Directory.
The default schema definition is defined in the
%systemroot%\ntds\schema.ini file that also
contains the initial structure for the ntds.dit
(Active Directory database). This file contains plain ASCII file and
can be viewed using Notepad or any text editor.
The following considerations should be kept in mind when you
contemplate extending your schema:
Microsoft designed Active Directory to hold the most common objects
and attributes you would require. Because they could never anticipate
every class of object or every specific attribute (languages spoken,
professional qualifications) that a company would need, Active
Directory was designed to be extensible. After all, if these objects
and properties are going to be in everyday use, the design
shouldn't be taken lightly. Administrators need to
be aware of the importance of the schema and how to extend it.
Extending the schema is a useful and simple solution to a variety of
problems. Not being aware of the potential means that you will have a
hard time identifying it as a solution to problems you might
encounter.
Designing schema extensions is very important, in part because any
new class or attribute that you create in the schema is a permanent
addition. While unused objects can be disabled if you no longer
require them, they cannot be removed. In Windows 2003 Active
Directory, you can redefine schema extensions, but you cannot totally
remove them.
While it is easy to extend Active Directory, it's
surprising how many companies are reluctant to implement schema
extensions due to concerns over the impact to Active Directory. One
of the biggest impediments in Windows 2000 was that anytime the
partial attribute set was extended (i.e., an attribute added to the
Global Catalog) a full resync had to be done for all Global Catalog
servers. Fortunately, Microsoft resolved this in Windows 2003, and a
full resync is no longer performed.
This chapter takes you through the process of extending the schema,
from the initial design of the changes through the implementation,
and discusses how to avoid the pitfalls that can crop up. We then
talk about analyzing the choices available and seeing if you can
obtain the required design result some other way, because schema
changes are not to be undertaken lightly. We obviously cover how to
implement schema changes from first principles, but before that we
identify the steps in designing or modifying a class or attribute.
Finally, we cover some pitfalls to be aware of when administering the
schema.
We don't spend much time introducing a large number
of specific examples. This is mainly because there's
no way we can conceive of every sort of class that you will require.
Consequently, for examples we use only one new generic class as well
as a few attribute extensions to the default user object. When giving
examples of modifying a class, we extend the user object class.
Let's look at how you would design the changes you
may wish to make in an enterprise environment.
|