Appendix 3.B Departures from MS-DTYP

KACS uses the binary formats MS-DTYP specifies, so a descriptor authored by a Windows domain controller and replicated through Samba is evaluated without translation. PCDS specifies those formats normatively.

Evaluator behaviour is a separate question. Given the same token, descriptor and desired mask, KACS generally reaches the same decision MS-DTYP describes — which is what makes policy authored in an AD environment behave predictably here — but it departs deliberately in the following places.

AreaDepartureWhy
Conditional ACE @Local.Resolved from an AccessCheck parameter rather than a token fieldThe context is per-call and varies between checks.
Virtual groups in expressionsMember_of({S-1-3-4}) returns true for the ownerKeeps the SID matcher and the expression evaluator semantically consistent.
INT64/UINT64 promotionRelational operators promote between the twoWithout promotion, UINT64 claims cannot be used in conditions at all.
Member_of filteringFiltered by ACE polarity, so deny-only groups do not satisfy allow-ACE conditionsConsistent with deny-only group semantics everywhere else.
Exists scopeExtended to all four attribute namespacesNo reason to restrict existence tests to Local and Resource.
ACE mask mappingACE masks are mapped through GenericMapping at evaluation timeRequired for GENERIC_ALL in central access policy recovery ACEs (§3.8.8).
MAXIMUM_ALLOWEDFirst-writer-wins for targeted and maximum-allowed requestsEliminates disagreement between "what can I do?" and "can I do this?" on a non-canonically ordered DACL.
Zero desired maskSucceeds rather than returning access denied"Asked for nothing, got nothing" is a valid answer.
Alarm ACEsRepurposed for continuous per-operation auditing, recorded as kacs.audit.handle.used (§3.8.9)Reserved but never implemented in the reference model.
Multiple scoped policy ACEsSeveral permitted per SACLAND semantics make composition safe.
Mandatory policy mutabilitymandatory_policy is immutable on the token (§3.2.2)A mutable policy reduces MIC to advisory.
Impersonation integrity ceilingEnforced unconditionally; SeImpersonatePrivilege does not bypass it (§3.5.2)MIC is a real boundary precisely because the mandatory policy is immutable.
Impersonation origin checkDroppedEliminates hidden impersonation paths.
Impersonation level on primariesMeaningful and queryable: a ratchet every token carries, bounding everything derived from it (§3.5.1). Windows rejects TokenImpersonationLevel on a primary.Delegation here is a flag authd enforces rather than a property of the credential cache, so the flag itself has to be unforgeable across duplication.
PIP determinationKernel-only, from the binary signature, with no parent input (§3.3.2)One input, one answer, no ambiguity.
Object type list validationDuplicate GUIDs and level gaps rejected (§3.8.5)Prevents node lookup returning the wrong node and propagation becoming undefined.
Object type list depthNo limit on levels; the tree is bounded only by the node count the access-check interface accepts. MS-DTYP limits a list to four levels.A depth limit would reject lists the validation rules already make well-defined, and nothing in propagation depends on depth.

3.B.1 Features handled elsewhere #

Several capabilities relevant to a complete security posture are not KACS's, and are named here so their absence is not mistaken for a gap. Kerberos and NTLM authentication, S4U, and credential storage and protection belong to authd, as do Resource-Based Constrained Delegation and Authentication Policies and Silos through the KDC. Active Directory replication is Samba's. Group Policy distribution goes through the registry and roles. Network share permissions belong to the Samba SMB layer. An Encrypting File System is a future service.

Edit this page