Jim Garrison said:
I need to come up with an architecture for organizing file
access permissions in an A/D environment. From what I've
read, I gather that the best way to do this is to define
Domain Local Groups to define logical roles and assign
DLGs the rights to the disk resources at the NTFS ACL level.
Yes, (if you are in Native more or better you can use true
"Domain Local Groups" which are NOT quite the same as
those groups in Mixed/Int modes which are merely Local
but "on the domain".)
You should THINK of Local groups (machines or domains)
as being for a "Collection of Resources" rather than for a
group of people (directly).
So that anyone or any group (better) added to the local group
is given permission on that "set of resources".
Then, I put the users in Global Groups and make the Global
Groups members of the appropriate Domain Local Groups to
complete the linkage between users and resource rights.
Yes. You should THINK of Global Groups as being primarily
a "bunch of people or other groups" (group of people but I was
trying to avoid the word group for clarity.)
If you are in Native+ mode you can also nest Users in a Global
which can be added to another Global which is eventually put
into Local group(s) for access to resource sets.
First of all, is this considered the "best practice" for
designing a permission architecture?
Yes. But notice this is NOT a 'permission architecture' but
rather a Group architecture. The Permission Architecture
comes next which is relatively easy if you have designed the
groups (for different sets of people and different sets of
resources) well.
Global (and Universal) Groups are "re-usuable" so that
you might put "Atlanta Engineers" (GG) into BOTH
"Engineer Resources" (Local) and into "Atlanta Resources"
(L) etc....
Universals are mostly for scaling in large (giant) domains
but also allow members (generally Global groups) to be
from multiple domains while Global groups only accept
members from the same domain where they are themselves
created.
Next, what about machine-local groups? In an A/D environment
should these be ignored,
Mostly (if you are in Native mode).
Unfortunately in Mixed mode (and NT) domains the Local groups
on the domain were only for DC usage -- you still had to grant
resource access by putting the Globals of the domain into the
Locals of the computers (mostly non-DC servers.)
But there are reasons why you might wish to still use the Locals
of the machine, especially for either the default groups or for
purely local access (one machine only.)
or should I extend the indirection
to use them also (although I can't see any immediate benefit)?
Making someone an "admin" of their own machine or the server
for which they are responsible is usually done with the local
Administrators group and there are similar exceptions for such.
In other words, should I define access rights in terms of
machine-local groups, make Domain Local Groups members of
the machine-local groups, and then make Global Groups
members of the DLGs?
No, use Domain Locals for "access to sets of resources" whenever
that choice is viable, but use the machine locals when you need
to accomplish that specific goal.
If yes, what are the benefits of
a 3-level architecture such as this?
Easier management. The person (or the thought involved)
in changing a Global group can be different from the strategy
of adding those Locals to the resource permissions.
"department level" admins can handle the Global Membership;
Resource server admins can handle the Local membership
and setting the permissions.
Even if it's the 'same people' it makes thinking about it and
getting it right easier.
Also don't overlook that idea (above) of RE-USING a group
in different places. If you add the users directly to the Local
groups and then want that same set of people to have access
to something else (even in another domain) you have to start
all over.
With the Global == Users and Local == Set of Resources it
is much more scalable and managable for large domains.
If you have 7 users you can do anything you want, but if you
have 70,000 you had better think it through and follow the
guidelines. Even 7,000 or perhaps 700 is difficult to manage
well if you don't use the guidelines.
The entire set of RULES about group behavior was designed
to encourage (but not quite force) you to follow those guidelines.
I case it's important, this is for an organization with
only one domain and only one A/D tree.
Not quite as critical but you should still use at least one level
of Globals for Users and one level of Locals (domain or computer)
for "access to a set of resources.".
Pointers to relevant documentation/whitepapers would also
be appreciated.
The above it likely more explicit and more clear than anything
else you will find written.
If you have questions, just ask -- groups should be simple, but
very explicitly understood.