474 lines
19 KiB
C
474 lines
19 KiB
C
|
//+--------------------------------------------------------------------------
|
||
|
//
|
||
|
// Microsoft Windows
|
||
|
// Copyright (C) Microsoft Corporation, 1996 - 1999
|
||
|
//
|
||
|
// File: certacl.h
|
||
|
//
|
||
|
// Contents: Cert Server security defines
|
||
|
//
|
||
|
//---------------------------------------------------------------------------
|
||
|
|
||
|
#ifndef __CERTACL_H__
|
||
|
#define __CERTACL_H__
|
||
|
#include <sddl.h>
|
||
|
#include "clibres.h"
|
||
|
#include "certsd.h"
|
||
|
|
||
|
// externs
|
||
|
// externs
|
||
|
extern const GUID GUID_APPRV_REQ;
|
||
|
extern const GUID GUID_REVOKE;
|
||
|
extern const GUID GUID_ENROLL;
|
||
|
extern const GUID GUID_AUTOENROLL;
|
||
|
extern const GUID GUID_READ_DB;
|
||
|
//defines
|
||
|
|
||
|
#define MAX_SID_LEN 256
|
||
|
|
||
|
// !!! The SD strings below need to be in sync with certadm.idl definitions
|
||
|
|
||
|
#define WSZ_CA_ACCESS_ADMIN L"0x00000001" // CA administrator
|
||
|
#define WSZ_CA_ACCESS_OFFICER L"0x00000002" // certificate officer
|
||
|
#define WSZ_CA_ACCESS_AUDITOR L"0x00000004" // auditor
|
||
|
#define WSZ_CA_ACCESS_OPERATOR L"0x00000008" // backup operator
|
||
|
#define WSZ_CA_ACCESS_MASKROLES L"0x000000ff"
|
||
|
#define WSZ_CA_ACCESS_READ L"0x00000100" // read only access to CA
|
||
|
#define WSZ_CA_ACCESS_ENROLL L"0x00000200" // enroll access to CA
|
||
|
#define WSZ_CA_ACCESS_MASKALL L"0x0000ffff"
|
||
|
|
||
|
|
||
|
// Important, keep enroll string GUID in sync with define in acl.cpp
|
||
|
#define WSZ_GUID_ENROLL L"0e10c968-78fb-11d2-90d4-00c04f79dc55"
|
||
|
#define WSZ_GUID_AUTOENROLL L"a05b8cc2-17bc-4802-a710-e7c15ab866a2"
|
||
|
|
||
|
// ca access rights define here
|
||
|
// note: need to keep string access and mask in sync!
|
||
|
// WSZ_ACTRL_CERTSRV_MANAGE = L"CCDCLCSWRPWPDTLOCRSDRCWDWO"
|
||
|
#define WSZ_ACTRL_CERTSRV_MANAGE SDDL_CREATE_CHILD \
|
||
|
SDDL_DELETE_CHILD \
|
||
|
SDDL_LIST_CHILDREN \
|
||
|
SDDL_SELF_WRITE \
|
||
|
SDDL_READ_PROPERTY \
|
||
|
SDDL_WRITE_PROPERTY \
|
||
|
SDDL_DELETE_TREE \
|
||
|
SDDL_LIST_OBJECT \
|
||
|
SDDL_CONTROL_ACCESS \
|
||
|
SDDL_STANDARD_DELETE \
|
||
|
SDDL_READ_CONTROL \
|
||
|
SDDL_WRITE_DAC \
|
||
|
SDDL_WRITE_OWNER
|
||
|
#define ACTRL_CERTSRV_MANAGE (ACTRL_DS_READ_PROP | \
|
||
|
ACTRL_DS_WRITE_PROP | \
|
||
|
READ_CONTROL | \
|
||
|
DELETE | \
|
||
|
WRITE_DAC | \
|
||
|
WRITE_OWNER | \
|
||
|
ACTRL_DS_CONTROL_ACCESS | \
|
||
|
ACTRL_DS_CREATE_CHILD | \
|
||
|
ACTRL_DS_DELETE_CHILD | \
|
||
|
ACTRL_DS_LIST | \
|
||
|
ACTRL_DS_SELF | \
|
||
|
ACTRL_DS_DELETE_TREE | \
|
||
|
ACTRL_DS_LIST_OBJECT)
|
||
|
|
||
|
|
||
|
#define WSZ_ACTRL_CERTSRV_MANAGE_LESS_CONTROL_ACCESS \
|
||
|
SDDL_CREATE_CHILD \
|
||
|
SDDL_DELETE_CHILD \
|
||
|
SDDL_LIST_CHILDREN \
|
||
|
SDDL_SELF_WRITE \
|
||
|
SDDL_READ_PROPERTY \
|
||
|
SDDL_WRITE_PROPERTY \
|
||
|
SDDL_DELETE_TREE \
|
||
|
SDDL_LIST_OBJECT \
|
||
|
SDDL_STANDARD_DELETE \
|
||
|
SDDL_READ_CONTROL \
|
||
|
SDDL_WRITE_DAC \
|
||
|
SDDL_WRITE_OWNER
|
||
|
|
||
|
#define ACTRL_CERTSRV_MANAGE_LESS_CONTROL_ACCESS \
|
||
|
(ACTRL_DS_READ_PROP | \
|
||
|
ACTRL_DS_WRITE_PROP | \
|
||
|
READ_CONTROL | \
|
||
|
DELETE | \
|
||
|
WRITE_DAC | \
|
||
|
WRITE_OWNER | \
|
||
|
ACTRL_DS_CREATE_CHILD | \
|
||
|
ACTRL_DS_DELETE_CHILD | \
|
||
|
ACTRL_DS_LIST | \
|
||
|
ACTRL_DS_SELF | \
|
||
|
ACTRL_DS_DELETE_TREE | \
|
||
|
ACTRL_DS_LIST_OBJECT)
|
||
|
|
||
|
|
||
|
// WSZ_ACTRL_CERTSRV_READ = L"RPLCLORC"
|
||
|
#define WSZ_ACTRL_CERTSRV_READ SDDL_READ_PROPERTY \
|
||
|
SDDL_LIST_CHILDREN \
|
||
|
SDDL_LIST_OBJECT \
|
||
|
SDDL_READ_CONTROL
|
||
|
#define ACTRL_CERTSRV_READ (READ_CONTROL | \
|
||
|
ACTRL_DS_READ_PROP | \
|
||
|
ACTRL_DS_LIST | \
|
||
|
ACTRL_DS_LIST_OBJECT)
|
||
|
|
||
|
// WSZ_ACTRL_CERTSRV_ENROLL = L"WPRPCR"
|
||
|
#define WSZ_ACTRL_CERTSRV_ENROLL SDDL_WRITE_PROPERTY \
|
||
|
SDDL_READ_PROPERTY \
|
||
|
SDDL_CONTROL_ACCESS
|
||
|
#define ACTRL_CERTSRV_ENROLL (ACTRL_DS_READ_PROP | \
|
||
|
ACTRL_DS_WRITE_PROP | \
|
||
|
ACTRL_DS_CONTROL_ACCESS)
|
||
|
|
||
|
#define WSZ_ACTRL_CERTSRV_CAADMIN SDDL_CONTROL_ACCESS
|
||
|
#define WSZ_ACTRL_CERTSRV_OFFICER SDDL_CONTROL_ACCESS
|
||
|
#define WSZ_ACTRL_CERTSRV_CAREAD SDDL_CONTROL_ACCESS
|
||
|
#define ACTRL_CERTSRV_CAADMIN ACTRL_DS_CONTROL_ACCESS
|
||
|
#define ACTRL_CERTSRV_OFFICER ACTRL_DS_CONTROL_ACCESS
|
||
|
#define ACTRL_CERTSRV_CAREAD ACTRL_DS_CONTROL_ACCESS
|
||
|
|
||
|
// define all ca string security here in consistant format
|
||
|
|
||
|
// SDDL_OWNER L":" SDDL_ENTERPRISE_ADMINS \
|
||
|
// SDDL_GROUP L":" SDDL_ENTERPRISE_ADMINS \
|
||
|
// SDDL_DACL L":" SDDL_PROTECTED SDDL_AUTO_INHERITED \
|
||
|
// L"(" SDDL_ACCESS_ALLOWED or SDDL_OBJECT_ACCESS_ALLOWED L";" \
|
||
|
// SDDL_OBJECT_INHERIT SDDL_CONTAINER_INHERIT or list L";" \
|
||
|
// list of AccessRights L";" \
|
||
|
// StringGUID L";" \
|
||
|
// L";" \
|
||
|
// SDDL_EVERYONE or Sid L")"
|
||
|
// ...list of ace
|
||
|
|
||
|
#define CERTSRV_STD_ACE(access, sid) \
|
||
|
L"(" SDDL_ACCESS_ALLOWED L";" \
|
||
|
SDDL_OBJECT_INHERIT SDDL_CONTAINER_INHERIT L";" \
|
||
|
access L";;;" sid L")"
|
||
|
|
||
|
#define CERTSRV_INH_ACE(access, sid) \
|
||
|
L"(" SDDL_ACCESS_ALLOWED L";" \
|
||
|
SDDL_OBJECT_INHERIT SDDL_CONTAINER_INHERIT SDDL_INHERIT_ONLY L";" \
|
||
|
access L";;;" sid L")"
|
||
|
|
||
|
#define CERTSRV_OBJ_ACE(access, guid, sid) \
|
||
|
L"(" SDDL_OBJECT_ACCESS_ALLOWED L";" \
|
||
|
SDDL_OBJECT_INHERIT SDDL_CONTAINER_INHERIT L";" \
|
||
|
access L";" \
|
||
|
guid L";;" sid L")"
|
||
|
|
||
|
#define CERTSRV_OBJ_ACE_DENY(access, guid, sid) \
|
||
|
L"(" SDDL_OBJECT_ACCESS_DENIED L";" \
|
||
|
SDDL_OBJECT_INHERIT SDDL_CONTAINER_INHERIT L";" \
|
||
|
access L";" \
|
||
|
guid L";;" sid L")"
|
||
|
|
||
|
#define CERTSRV_STD_OG(owner, group) \
|
||
|
SDDL_OWNER L":" owner SDDL_GROUP L":" group \
|
||
|
SDDL_DACL L":" SDDL_AUTO_INHERITED
|
||
|
|
||
|
#define CERTSRV_SACL_ON \
|
||
|
SDDL_SACL L": (" SDDL_AUDIT L";" \
|
||
|
SDDL_AUDIT_SUCCESS SDDL_AUDIT_FAILURE L";" \
|
||
|
WSZ_CA_ACCESS_MASKALL L";;;" \
|
||
|
SDDL_EVERYONE L")"
|
||
|
|
||
|
#define CERTSRV_SACL_OFF \
|
||
|
SDDL_SACL L":"
|
||
|
|
||
|
#define WSZ_CERTSRV_SID_ANONYMOUS_LOGON L"S-1-5-7"
|
||
|
#define WSZ_CERTSRV_SID_EVERYONE L"S-1-1-0"
|
||
|
|
||
|
// Default Standalone security
|
||
|
// Standalone
|
||
|
// Owner, local administrators
|
||
|
// Group, local administrators
|
||
|
// DACL:
|
||
|
// enroll - everyone
|
||
|
// caadmin - builtin\administrators
|
||
|
// officer - builtin\administrators
|
||
|
#define WSZ_DEFAULT_CA_STD_SECURITY \
|
||
|
CERTSRV_STD_OG(SDDL_BUILTIN_ADMINISTRATORS, SDDL_BUILTIN_ADMINISTRATORS) \
|
||
|
CERTSRV_STD_ACE(WSZ_CA_ACCESS_ADMIN, SDDL_BUILTIN_ADMINISTRATORS) \
|
||
|
CERTSRV_STD_ACE(WSZ_CA_ACCESS_OFFICER, SDDL_BUILTIN_ADMINISTRATORS) \
|
||
|
CERTSRV_STD_ACE(WSZ_CA_ACCESS_ENROLL, SDDL_EVERYONE) \
|
||
|
CERTSRV_SACL_ON
|
||
|
|
||
|
// Default Enterprise Security
|
||
|
// Owner, Enterprise Administrators
|
||
|
// Group, Enterprise Administrators
|
||
|
// DACL:
|
||
|
// enroll - authenticated users
|
||
|
// caadmin - builtin\administrators
|
||
|
// - domain admins
|
||
|
// - enterprise admins
|
||
|
// officer - builtin\administrators
|
||
|
// - domain admins
|
||
|
// - enterprise admins
|
||
|
#define WSZ_DEFAULT_CA_ENT_SECURITY \
|
||
|
CERTSRV_STD_OG(SDDL_BUILTIN_ADMINISTRATORS, SDDL_BUILTIN_ADMINISTRATORS) \
|
||
|
CERTSRV_STD_ACE(WSZ_CA_ACCESS_ADMIN, SDDL_BUILTIN_ADMINISTRATORS) \
|
||
|
CERTSRV_STD_ACE(WSZ_CA_ACCESS_OFFICER, SDDL_BUILTIN_ADMINISTRATORS) \
|
||
|
CERTSRV_STD_ACE(WSZ_CA_ACCESS_ADMIN, SDDL_DOMAIN_ADMINISTRATORS) \
|
||
|
CERTSRV_STD_ACE(WSZ_CA_ACCESS_OFFICER, SDDL_DOMAIN_ADMINISTRATORS) \
|
||
|
CERTSRV_STD_ACE(WSZ_CA_ACCESS_ADMIN, SDDL_ENTERPRISE_ADMINS) \
|
||
|
CERTSRV_STD_ACE(WSZ_CA_ACCESS_OFFICER, SDDL_ENTERPRISE_ADMINS) \
|
||
|
CERTSRV_STD_ACE(WSZ_CA_ACCESS_ENROLL, SDDL_AUTHENTICATED_USERS) \
|
||
|
CERTSRV_SACL_ON
|
||
|
|
||
|
// DS Container
|
||
|
// (CDP/CA container)
|
||
|
// Owner: Enterprise Admins (overidden by installer)
|
||
|
// Group: Enterprise Admins (overidden by installer)
|
||
|
// DACL:
|
||
|
// Enterprise Admins - Full Control
|
||
|
// Domain Admins - Full Control
|
||
|
// Cert Publishers - Full Control
|
||
|
// Builtin Admins - Full Control
|
||
|
// Everyone - Read
|
||
|
#define WSZ_DEFAULT_CA_DS_SECURITY \
|
||
|
CERTSRV_STD_OG(SDDL_ENTERPRISE_ADMINS, SDDL_ENTERPRISE_ADMINS) \
|
||
|
CERTSRV_STD_ACE(WSZ_ACTRL_CERTSRV_MANAGE, SDDL_ENTERPRISE_ADMINS) \
|
||
|
CERTSRV_STD_ACE(WSZ_ACTRL_CERTSRV_MANAGE, SDDL_DOMAIN_ADMINISTRATORS) \
|
||
|
CERTSRV_STD_ACE(WSZ_ACTRL_CERTSRV_MANAGE, SDDL_CERT_SERV_ADMINISTRATORS) \
|
||
|
CERTSRV_STD_ACE(WSZ_ACTRL_CERTSRV_MANAGE, SDDL_BUILTIN_ADMINISTRATORS) \
|
||
|
CERTSRV_STD_ACE(WSZ_ACTRL_CERTSRV_READ, SDDL_EVERYONE)
|
||
|
|
||
|
// NTAuthCertificates
|
||
|
//
|
||
|
// Owner: Enterprise Admins (overidden by installer)
|
||
|
// Group: Enterprise Admins (overidden by installer)
|
||
|
// DACL:
|
||
|
// Enterprise Admins - Full Control
|
||
|
// Domain Admins - Full Control
|
||
|
// Builtin Admins - Full Control
|
||
|
// Everyone - Read
|
||
|
#define WSZ_DEFAULT_NTAUTH_SECURITY \
|
||
|
CERTSRV_STD_OG(SDDL_ENTERPRISE_ADMINS, SDDL_ENTERPRISE_ADMINS) \
|
||
|
CERTSRV_STD_ACE(WSZ_ACTRL_CERTSRV_MANAGE, SDDL_ENTERPRISE_ADMINS) \
|
||
|
CERTSRV_STD_ACE(WSZ_ACTRL_CERTSRV_MANAGE, SDDL_DOMAIN_ADMINISTRATORS) \
|
||
|
CERTSRV_STD_ACE(WSZ_ACTRL_CERTSRV_MANAGE, SDDL_BUILTIN_ADMINISTRATORS) \
|
||
|
CERTSRV_STD_ACE(WSZ_ACTRL_CERTSRV_READ, SDDL_EVERYONE)
|
||
|
|
||
|
// CDP/CA
|
||
|
// Owner: Enterprise Admins (overidden by installer)
|
||
|
// Group: Enterprise Admins (overidden by installer)
|
||
|
// DACL:
|
||
|
// Enterprise Admins - Full Control
|
||
|
// Domain Admins - Full Control
|
||
|
// Cert Publishers - Full Control
|
||
|
// Builtin Admins- Full Control
|
||
|
// Authenticated Users - Read
|
||
|
#define WSZ_DEFAULT_CDP_DS_SECURITY \
|
||
|
CERTSRV_STD_OG(SDDL_ENTERPRISE_ADMINS, SDDL_ENTERPRISE_ADMINS) \
|
||
|
CERTSRV_STD_ACE(WSZ_ACTRL_CERTSRV_MANAGE, SDDL_ENTERPRISE_ADMINS) \
|
||
|
CERTSRV_STD_ACE(WSZ_ACTRL_CERTSRV_MANAGE, SDDL_DOMAIN_ADMINISTRATORS) \
|
||
|
CERTSRV_STD_ACE(WSZ_ACTRL_CERTSRV_MANAGE, L"%ws") \
|
||
|
CERTSRV_STD_ACE(WSZ_ACTRL_CERTSRV_MANAGE, SDDL_BUILTIN_ADMINISTRATORS) \
|
||
|
CERTSRV_STD_ACE(WSZ_ACTRL_CERTSRV_READ, SDDL_EVERYONE)
|
||
|
|
||
|
// Shared Folder related security
|
||
|
// Owner: Local Admin
|
||
|
// DACL:
|
||
|
// Local Admin - Full Control
|
||
|
// LocalSystem - Full Control
|
||
|
// Enterprise Admins - Full Control
|
||
|
// Everyone - Read
|
||
|
#define WSZ_DEFAULT_SF_SECURITY \
|
||
|
CERTSRV_STD_OG(SDDL_BUILTIN_ADMINISTRATORS, SDDL_BUILTIN_ADMINISTRATORS) \
|
||
|
CERTSRV_STD_ACE(SDDL_GENERIC_ALL, SDDL_BUILTIN_ADMINISTRATORS) \
|
||
|
CERTSRV_STD_ACE(SDDL_GENERIC_ALL, SDDL_LOCAL_SYSTEM)
|
||
|
|
||
|
#define WSZ_DEFAULT_SF_USEDS_SECURITY \
|
||
|
CERTSRV_STD_OG(SDDL_BUILTIN_ADMINISTRATORS, SDDL_BUILTIN_ADMINISTRATORS) \
|
||
|
CERTSRV_STD_ACE(SDDL_GENERIC_ALL, SDDL_BUILTIN_ADMINISTRATORS) \
|
||
|
CERTSRV_STD_ACE(SDDL_GENERIC_ALL, SDDL_LOCAL_SYSTEM) \
|
||
|
CERTSRV_STD_ACE(SDDL_GENERIC_ALL, SDDL_ENTERPRISE_ADMINS)
|
||
|
|
||
|
#define WSZ_DEFAULT_SF_EVERYONEREAD_SECURITY \
|
||
|
WSZ_DEFAULT_SF_SECURITY \
|
||
|
CERTSRV_STD_ACE(SDDL_GENERIC_READ, SDDL_EVERYONE)
|
||
|
|
||
|
#define WSZ_DEFAULT_SF_USEDS_EVERYONEREAD_SECURITY \
|
||
|
WSZ_DEFAULT_SF_USEDS_SECURITY \
|
||
|
CERTSRV_STD_ACE(SDDL_GENERIC_READ, SDDL_EVERYONE)
|
||
|
|
||
|
// Enroll share security
|
||
|
// Owner: Administrators
|
||
|
// Group: Administrators
|
||
|
// DACL:
|
||
|
// Everyone: read access
|
||
|
// local admin: full access
|
||
|
#define WSZ_ACTRL_CERTSRV_SHARE_READ SDDL_FILE_READ \
|
||
|
SDDL_READ_CONTROL \
|
||
|
SDDL_GENERIC_READ \
|
||
|
SDDL_GENERIC_EXECUTE
|
||
|
#define WSZ_ACTRL_CERTSRV_SHARE_ALL SDDL_FILE_ALL \
|
||
|
SDDL_CREATE_CHILD \
|
||
|
SDDL_STANDARD_DELETE \
|
||
|
SDDL_READ_CONTROL \
|
||
|
SDDL_WRITE_DAC \
|
||
|
SDDL_WRITE_OWNER \
|
||
|
SDDL_GENERIC_ALL
|
||
|
#define WSZ_DEFAULT_SHARE_SECURITY \
|
||
|
CERTSRV_STD_OG(SDDL_BUILTIN_ADMINISTRATORS, SDDL_BUILTIN_ADMINISTRATORS) \
|
||
|
CERTSRV_STD_ACE(WSZ_ACTRL_CERTSRV_SHARE_READ, SDDL_EVERYONE) \
|
||
|
CERTSRV_STD_ACE(WSZ_ACTRL_CERTSRV_SHARE_ALL, SDDL_BUILTIN_ADMINISTRATORS)
|
||
|
|
||
|
|
||
|
// Service string below need to be in sync with the following
|
||
|
// definitions from winsvc.h
|
||
|
//#define SERVICE_QUERY_CONFIG 0x0001
|
||
|
//#define SERVICE_CHANGE_CONFIG 0x0002
|
||
|
//#define SERVICE_QUERY_STATUS 0x0004
|
||
|
//#define SERVICE_ENUMERATE_DEPENDENTS 0x0008
|
||
|
//#define SERVICE_START 0x0010
|
||
|
//#define SERVICE_STOP 0x0020
|
||
|
//#define SERVICE_PAUSE_CONTINUE 0x0040
|
||
|
//#define SERVICE_INTERROGATE 0x0080
|
||
|
//#define SERVICE_USER_DEFINED_CONTROL 0x0100
|
||
|
|
||
|
// full access to service
|
||
|
// STANDARD_RIGHTS_REQUIRED
|
||
|
// SERVICE_QUERY_CONFIG
|
||
|
// SERVICE_CHANGE_CONFIG
|
||
|
// SERVICE_QUERY_STATUS
|
||
|
// SERVICE_ENUMERATE_DEPENDENTS
|
||
|
// SERVICE_START
|
||
|
// SERVICE_STOP
|
||
|
// SERVICE_PAUSE_CONTINUE
|
||
|
// SERVICE_INTERROGATE
|
||
|
// SERVICE_USER_DEFINED_CONTROL
|
||
|
#define WSZ_SERVICE_ALL_ACCESS L"0x000f01ff"
|
||
|
|
||
|
|
||
|
// Read-only access to service
|
||
|
// SERVICE_QUERY_CONFIG,
|
||
|
// SERVICE_QUERY_STATUS,
|
||
|
// SERVICE_ENUMERATE_DEPENDENTS,
|
||
|
// SERVICE_INTERROGATE
|
||
|
// SERVICE_USER_DEFINED_CONTROL
|
||
|
|
||
|
#define WSZ_SERVICE_READ L"0x0000018d"
|
||
|
|
||
|
#define WSZ_SERVICE_START_STOP L"0x00000030"
|
||
|
|
||
|
// Power user and system access
|
||
|
// SERVICE_QUERY_CONFIG
|
||
|
// SERVICE_QUERY_STATUS
|
||
|
// SERVICE_ENUMERATE_DEPENDENTS
|
||
|
// SERVICE_START
|
||
|
// SERVICE_STOP
|
||
|
// SERVICE_PAUSE_CONTINUE
|
||
|
// SERVICE_INTERROGATE
|
||
|
// SERVICE_USER_DEFINED_CONTROL
|
||
|
#define WSZ_SERVICE_POWER_USER L"0x000001fd"
|
||
|
|
||
|
#define CERTSRV_SERVICE_SACL_ON \
|
||
|
CERTSRV_STD_OG(SDDL_BUILTIN_ADMINISTRATORS, SDDL_BUILTIN_ADMINISTRATORS) \
|
||
|
SDDL_SACL L": (" SDDL_AUDIT L";" \
|
||
|
SDDL_AUDIT_SUCCESS SDDL_AUDIT_FAILURE L";" \
|
||
|
WSZ_SERVICE_START_STOP L";;;" \
|
||
|
SDDL_EVERYONE L")"
|
||
|
|
||
|
#define CERTSRV_SERVICE_SACL_OFF \
|
||
|
SDDL_SACL L":"
|
||
|
|
||
|
// Certsrv service default security
|
||
|
#define WSZ_DEFAULT_SERVICE_SECURITY \
|
||
|
CERTSRV_STD_OG(SDDL_BUILTIN_ADMINISTRATORS, SDDL_BUILTIN_ADMINISTRATORS) \
|
||
|
CERTSRV_STD_ACE(WSZ_SERVICE_READ, SDDL_AUTHENTICATED_USERS) \
|
||
|
CERTSRV_STD_ACE(WSZ_SERVICE_POWER_USER, SDDL_POWER_USERS) \
|
||
|
CERTSRV_STD_ACE(WSZ_SERVICE_POWER_USER, SDDL_LOCAL_SYSTEM) \
|
||
|
CERTSRV_STD_ACE(WSZ_SERVICE_ALL_ACCESS, SDDL_BUILTIN_ADMINISTRATORS) \
|
||
|
CERTSRV_STD_ACE(WSZ_SERVICE_ALL_ACCESS, SDDL_SERVER_OPERATORS)
|
||
|
|
||
|
// DS pKIEnrollmentService default security
|
||
|
#define WSZ_DEFAULT_DSENROLLMENT_SECURITY \
|
||
|
CERTSRV_STD_OG(SDDL_BUILTIN_ADMINISTRATORS, SDDL_BUILTIN_ADMINISTRATORS) \
|
||
|
CERTSRV_STD_ACE(WSZ_ACTRL_CERTSRV_MANAGE_LESS_CONTROL_ACCESS, SDDL_BUILTIN_ADMINISTRATORS) \
|
||
|
CERTSRV_STD_ACE(WSZ_ACTRL_CERTSRV_MANAGE_LESS_CONTROL_ACCESS, SDDL_DOMAIN_ADMINISTRATORS) \
|
||
|
CERTSRV_STD_ACE(WSZ_ACTRL_CERTSRV_MANAGE_LESS_CONTROL_ACCESS, SDDL_ENTERPRISE_ADMINS) \
|
||
|
CERTSRV_STD_ACE(WSZ_ACTRL_CERTSRV_MANAGE_LESS_CONTROL_ACCESS, SDDL_LOCAL_SYSTEM) \
|
||
|
CERTSRV_STD_ACE(WSZ_ACTRL_CERTSRV_MANAGE_LESS_CONTROL_ACCESS, L"%ws") \
|
||
|
CERTSRV_STD_ACE(WSZ_ACTRL_CERTSRV_READ, SDDL_AUTHENTICATED_USERS)
|
||
|
|
||
|
// Key Conatiner security
|
||
|
// Owner: local admin
|
||
|
// Group: local admin
|
||
|
// DACL:
|
||
|
// Local Admin - Full Control
|
||
|
// LocalSystem - Full Control
|
||
|
#define WSZ_DEFAULT_KEYCONTAINER_SECURITY \
|
||
|
CERTSRV_STD_OG(SDDL_BUILTIN_ADMINISTRATORS, SDDL_BUILTIN_ADMINISTRATORS) \
|
||
|
CERTSRV_STD_ACE(SDDL_GENERIC_ALL, SDDL_BUILTIN_ADMINISTRATORS) \
|
||
|
CERTSRV_STD_ACE(SDDL_GENERIC_ALL, SDDL_LOCAL_SYSTEM)
|
||
|
|
||
|
// upgrade security
|
||
|
// DACL:
|
||
|
// Local Admin - Full Control
|
||
|
// Everyone - read
|
||
|
#define WSZ_DEFAULT_UPGRADE_SECURITY \
|
||
|
CERTSRV_STD_ACE(SDDL_FILE_READ, SDDL_EVERYONE) \
|
||
|
CERTSRV_STD_ACE(SDDL_FILE_ALL, SDDL_BUILTIN_ADMINISTRATORS)
|
||
|
|
||
|
|
||
|
// following defines certsrv security editing access
|
||
|
|
||
|
#define GUID_CERTSRV GUID_NULL
|
||
|
#define ACTRL_CERTSRV_OBJ ACTRL_DS_CONTROL_ACCESS
|
||
|
#define CS_GEN_SIAE(access, ids) \
|
||
|
{&GUID_CERTSRV, (access), MAKEINTRESOURCE((ids)), \
|
||
|
SI_ACCESS_GENERAL}
|
||
|
#define CS_SPE_SIAE(access, ids) \
|
||
|
{&GUID_CERTSRV, (access), MAKEINTRESOURCE((ids)), \
|
||
|
SI_ACCESS_SPECIFIC}
|
||
|
#define OBJ_GEN_SIAE(guid, access, ids) \
|
||
|
{&(guid), (access), MAKEINTRESOURCE((ids)), \
|
||
|
SI_ACCESS_GENERAL|SI_ACCESS_SPECIFIC}
|
||
|
#define OBJ_SPE_SIAE(guid, ids) \
|
||
|
{&(guid), ACTRL_CERTSRV_OBJ, MAKEINTRESOURCE((ids)), \
|
||
|
SI_ACCESS_SPECIFIC}
|
||
|
#define OBJ_SPE_SIAE_OICI(guid, ids) \
|
||
|
{&(guid), ACTRL_CERTSRV_OBJ, MAKEINTRESOURCE((ids)), \
|
||
|
SI_ACCESS_SPECIFIC | OBJECT_INHERIT_ACE | CONTAINER_INHERIT_ACE }
|
||
|
|
||
|
#define CERTSRV_SI_ACCESS_LIST \
|
||
|
CS_GEN_SIAE(CA_ACCESS_READ, IDS_ACTRL_CAREAD), \
|
||
|
CS_GEN_SIAE(CA_ACCESS_OFFICER, IDS_ACTRL_OFFICER), \
|
||
|
CS_GEN_SIAE(CA_ACCESS_ADMIN, IDS_ACTRL_CAADMIN), \
|
||
|
CS_GEN_SIAE(CA_ACCESS_ENROLL, IDS_ACTRL_ENROLL), \
|
||
|
// disabled for beta1 CS_GEN_SIAE(CA_ACCESS_AUDITOR, IDS_ACTRL_AUDITOR),
|
||
|
// disabled for beta1 CS_GEN_SIAE(CA_ACCESS_OPERATOR, IDS_ACTRL_OPERATOR),
|
||
|
HRESULT
|
||
|
myGetSDFromTemplate(
|
||
|
IN WCHAR const *pwszStringSD,
|
||
|
IN OPTIONAL WCHAR const *pwszReplace,
|
||
|
OUT PSECURITY_DESCRIPTOR *ppSD);
|
||
|
|
||
|
HRESULT
|
||
|
CertSrvMapAndSetSecurity(
|
||
|
OPTIONAL IN WCHAR const *pwszSanitizedName,
|
||
|
IN WCHAR const *pwszKeyContainerName,
|
||
|
IN BOOL fSetDsSecurity,
|
||
|
IN SECURITY_INFORMATION si,
|
||
|
IN PSECURITY_DESCRIPTOR pSD);
|
||
|
|
||
|
HRESULT
|
||
|
SetCAKeySecurity(
|
||
|
IN SECURITY_INFORMATION si,
|
||
|
IN WCHAR const *pwszSanitizedName,
|
||
|
IN WCHAR const *pwszKeyContainerName,
|
||
|
IN OPTIONAL PSECURITY_DESCRIPTOR pSD);
|
||
|
|
||
|
HRESULT
|
||
|
myMergeSD(
|
||
|
IN PSECURITY_DESCRIPTOR pSDOld,
|
||
|
IN PSECURITY_DESCRIPTOR pSDMerge,
|
||
|
IN SECURITY_INFORMATION si,
|
||
|
OUT PSECURITY_DESCRIPTOR *ppSDNew);
|
||
|
|
||
|
HRESULT
|
||
|
UpdateServiceSacl(bool fTurnOnAuditing);
|
||
|
|
||
|
#endif // __CERTLIB_H__
|