3.1.1.7 Permissions
The CA SHOULD store the following sets of permissions. Certificate Services Remote Administration Protocol server implementations that also implement the Windows Client Certificate Enrollment Protocol or the ICertPassage Remote Protocol use the same configuration data element, defined here, for those implementations:
Config_Permissions_CA_Security: A list, shared from the Config_Permissions_CA_Security list defined in [MS-WCCE] section 3.2.1.1.4.
Config_Permissions_Officer_Rights: A list, shared from the Config_Permissions_Officer_Rights list defined in [MS-WCCE] section 3.2.1.1.4.
Config_Permissions_Enrollment_Agent_Rights: A list, shared from the Config_Permissions_Enrollment_Agent_Rights list defined in [MS-WCCE] section 3.2.1.1.4.
The permissions are used to enforce that the caller has particular permissions for any method specified in section 3.1.4.
On Windows, the CA defines six permissions: Enroll, Read, Officer, Administrator, Operator, and Auditor.<9>
For CA security (GetCASecurity, SetCASecurity, and GetMyRoles), the Microsoft CA assigns permissions to principals (identified by the access control entry (ACE)) in the following manner.
Permission |
Access Mask Bit value |
---|---|
Read |
0x00000100 |
Enroll |
0x00000200 |
Officer |
0x00000002 |
Administrator |
0x00000001 |
Auditor |
0x00000004 |
Operator |
0x00000008 |
If a principal has Enroll, Officer, or Administrator permission, Read permission is implied and does not need to be explicitly set.
For the CA Operator role that is defined in [CIMC-PP], a principal must have Read permission (implicit or explicit) and must also have the SeBackupPrivilege, as specified in [MS-LSAD] section 3.1.1.2.1.
For the CA Auditor role that is defined in [CIMC-PP], a principal must have Read permission (implicit or explicit) and must also have the SeSecurityPrivilege, as specified in [MS-LSAD] section 3.1.1.2.1.
The following table specifies the method name and the list of permissions required by the caller. With the exception of where mentioned, the caller only needs to possess at least one of these access permissions for the call to be allowed by the CA.
Method name |
Permissions required |
---|---|
ICertRequestD::Request |
Enroll |
ICertRequestD:GetCACert |
Enroll |
ICertRequestD2::Request2 |
Enroll |
ICertRequestD2::GetCAProperty |
Enroll |
ICertRequestD2::GetCAPropertyInfo |
Enroll |
ICertAdminD::GetCRL |
Administrator, Officer, Read |
ICertAdminD2::GetCAProperty |
Administrator, Officer, Read |
ICertAdminD2::GetCAPropertyInfo |
Administrator, Officer, Read |
ICertAdminD::GetViewDefaultColumnSet |
Administrator, Officer, Read |
ICertAdminD::EnumAttributesOrExtensions |
Administrator, Officer, Read |
ICertAdminD::OpenView |
Administrator, Officer, Read |
ICertAdminD::IsValidCertificate |
Administrator, Officer, Read |
ICertAdminD::GetServerState |
None required |
ICertAdminD2::GetCASecurity |
Administrator, Officer, Read |
ICertAdminD2::GetAuditFilter |
Administrator, Officer, Read |
ICertAdminD2::GetOfficerRights |
Administrator, Officer, Read |
ICertAdminD2::GetConfigEntry |
Administrator, Officer, Read |
ICertAdminD2::EnumViewColumnTable |
Administrator, Officer, Read |
ICertAdminD2::GetMyRoles |
Administrator, Officer, Read |
ICertAdminD2::GetArchivedKey |
Officer |
ICertAdminD::SetExtension |
Officer |
ICertAdminD::SetAttributes |
Officer |
ICertAdminD::DenyRequest |
Officer |
ICertAdminD::ReSubmitRequest |
Officer |
ICertAdminD::RevokeCertificate |
Officer |
ICertAdminD::ImportCertificate |
Officer |
ICertAdmin:D2:ImportKey |
Officer |
ICertAdminD2::PublishCRLs |
Administrator |
ICertAdminD::ServerControl |
Administrator, Operator |
ICertAdminD::Ping |
Administrator |
ICertAdminD::Ping2 |
Administrator |
ICertAdminD2::SetCASecurity |
Administrator |
ICertAdminD2::SetCAProperty |
Administrator |
ICertAdminD2::SetAuditFilter |
Administrator, Auditor (either of these is checked based on a CA setting that denotes the permissions to check for SetAuditFilter) |
ICertAdminD2::SetOfficerRights |
Administrator |
ICertAdminD2::SetConfigEntry |
Administrator |
ICertAdminD2::DeleteRow |
Both Administrator and Officer must be present. |
ICertAdminD::PublishCRL |
Administrator |
ICertAdminD::BackupPrepare |
Operator |
ICertAdminD::BackupEnd |
Operator |
ICertAdminD::RestoreGetDatabaseLocations |
Operator |
ICertAdminD::BackupGetAttachedInformation |
Operator |
ICertAdminD::BackupGetBackupLogs |
Operator |
ICertAdminD::BackupGetDynamicFiles |
Operator |
ICertAdminD::BackupOpenFile |
Operator |
ICertAdminD::BackupReadFile |
Operator |
ICertAdminD::BackupCloseFile |
Operator |
ICertAdminD::BackupTruncateLogs |
Operator |
The CA SHOULD enforce Officer rights for any of the following methods:
ICertAdminD2::GetArchivedKey
ICertAdminD::SetExtension
ICertAdminD::SetAttributes
ICertAdminD::DenyRequest
ICertAdminD::ReSubmitRequest
ICertAdminD::RevokeCertificate
The CA SHOULD enforce the Enrollment Agent rights for ICertRequestD::Request