6.1.3.4 Security Considerations

When an add operation is processed, the client is allowed to specify any SD value, subject to some constraints to the OWNER field, specified in this section.

When a modify operation is processed, the following security checks are applied to the requester's security context. If the requester does not pass the check, then accessDenied is returned.

  1. If the DACL value is written (according to SD flags), then one of the following requirements must be satisfied:

    1. RIGHT_WRITE_DAC is granted to the requester on the object.

    2. The OWNER SID in the SD value is one of the SIDs in the requester's token (either as user SID or group SID).

  2. If the OWNER and/or GROUP value is written (according to SD flags), then one of the following requirements must be satisfied:

    1. RIGHT_WRITE_OWNER is granted to the requester on the object.

    2. The requester possesses the SE_TAKE_OWNERSHIP_PRIVILEGE.

    3. The control access right DS-Set-Owner is granted to the requestor on the object that is the root of the naming context to which the object holding the SD belongs.

  3. If the SACL value is written (according to SD flags), then the following requirement must be satisfied:

    • The requester possesses the SE_SECURITY_PRIVILEGE.

  4. If the object being modified is in the config NC or schema NC, and the RM control of the SD is present and contains SECURITY_PRIVATE_OBJECT bit, then additional requirements on the DC performing the operation must be enforced:

    1. The DC must be a member of the root domain in the forest, or

    2. The DC must be a member of the same domain to which the current object owner belongs.

When the OWNER value is being written (via SD flags control, either in an add or a modify operation), then the following constraint must be satisfied. The value of the OWNER field must be one of the following SIDs:

  1. The SID of the user performing the operation.

  2. The SID of the "default administrators group" (DAG; section 6.1.3.7), only when the DAG is defined and the user is a member of this group.

  3. Any SID, when the user possesses the SE_RESTORE_PRIVILEGE.

If the owner SID does not satisfy the preceding rules, then the server fails the operation, returning an unwillingToPerform / ERROR_INVALID_OWNER error.

If the owner SID is written on an object in the config NC or schema NC, then additional requirements on the DC performing the operation are enforced:

  • The DC must be a member of the root domain in the forest, or

  • The DC must be a member of the same domain to which the current object owner belongs.