v1.2.0
Review and hardening release. It closes gaps in the tier boundary itself, makes the audit and the
recovery script do what their documentation says, and adds the pieces the review found missing:
a neutral landing zone for new computers, Kerberos armoring for enforceable silos, checks of the
attack paths into Tier 0, account and access group hygiene, DSRM through LAPS, and CI.
Run Update-TierConfiguration.ps1 on an existing configuration before the next deploy, then
review the plan: it moves groups, adds deny ACEs and GPO settings. The neutral staging OU is
added disabled by the updater - switching it on is a decision.
Security
- The break-glass account is kept out of the authentication policy silos. Silo membership
was derived from the role groups without looking atexcludeFromSilo, so the break-glass
account - a member ofG-T0-Admins- was assigned like every other administrator, contrary to
the README. Accounts markedexcludeFromSiloare now skipped; if one is already assigned,
audit reports it as a High finding and deploy/sync removes the assignment. - Operators no longer hold every control access right on the service account OU. The
delegationReadProperty, ExtendedRightwithout an object type granted all extended rights,
Reset Passwordon service account users included - Tier 0 operators could take over Tier 0
service accounts. It never granted gMSA password retrieval either; that is controlled per
account byPrincipalsAllowedToRetrieveManagedPassword. The delegation is gone from the
generator and the shipped configuration. The tool only adds ACEs, so remove an existing one
by hand, per tier, onOU=Service-Accounts,OU=<tier>,OU=<root>,..., for example with
dsacls "<OU DN>" /R "<DOMAIN>\G-T0-Operators"(this removes all explicit ACEs of that
group on the OU - there are no others in the shipped model). - Deny logon and GPO exception groups live in the top tier. Kept in their own tier's branch,
they were writable by that tier's administrators through the branch delegation: a Tier 2 admin
could removeG-T0-AdminsfromDL-T2-DenyLogonor exempt workstations from
T2-Logon-Restrictions, switching off exactly the protection Tier 0 credentials rely on.
Both groups now default toTier-0/Groups, and existing groups are moved there by theGroup
andGPOstages (newMove-TierObjectToOu; audit reports a misplaced group as drift). - Tier administrators below the top tier cannot block Group Policy inheritance. The branch
delegation includesWritePropertyon every sub-OU and with itgPOptions. A deny on
gPOptionsfor the tier admin group is now part of the granular delegation. The LAPS policy
link, which a Block Inheritance used to switch off, is now enforced like the other tier links.
Added
- Neutral staging OU. A
stagingblock, expanded at load time like roles, creates
OU=Stagingbelow the model root: a deny logon group holding every role group of every tier,
a quarantine GPO denying them logon, a join group with the domain-join set and nothing else,
top tier management of the OU and a LAPS policy readable by the top tier only.
redirectComputersTo: "$Staging"sends new computers there instead of into the lowest tier,
whose administrators used to control every new server until somebody classified it. The audit
lists machines waiting there and for how long. New OU reference$Staging. - Kerberos armoring. The DC baseline carries KDC support for claims, compound
authentication and Kerberos armoring (level Supported), every tier GPO the matching client
setting.Test-TierKerberosArmoringchecks configuration and deployed policy. - Two-way silo reconciliation. Objects assigned to a silo that no longer qualify are
reported, or removed withoptions.authenticationPolicySiloReconcile: "Enforce". An account
that qualifies for two silos is a High conflict and is assigned to neither, instead of flapping
between them on every run. - Attack path checks in the audit (
Test-TierAttackPath,attackPathChecksblock): dangerous
ACEs and foreign owners on the domain head (DCSync included), AdminSDHolder, the Policies
container, the Domain Controllers OU and