Crear un derecho de acceso de control
Para agregar un derecho de acceso de control a un servidor de Active Directory, cree un objeto controlAccessRight en el contenedor Extended-Rights de la partición De configuración. Para obtener más información y un ejemplo de código, vea Código de ejemplo para crear un derecho de acceso de control. Para usar el derecho de acceso de control, debe completar algunos pasos más, en función de si el derecho de acceso de control es para una operación especial o un conjunto de propiedades.
Si define un derecho de acceso de control para un conjunto de propiedades, use el rightsGUID del objeto controlAccessRight para identificar las propiedades del conjunto. Cada propiedad se define mediante un objeto attributeSchema en el esquema de Active Directory. La propiedad attributeSecurityGUID de un objeto attributeSchema identifica el conjunto de propiedades, si existe, al que pertenece la propiedad. Tenga en cuenta que la propiedad attributeSecurityGUID tiene un valor único y almacena el GUID en formato binario (sintaxis de cadena de octetos).
Si define un derecho de acceso de control para establecer restricciones en el acceso a una operación determinada, la aplicación debe realizar la comprobación de acceso cuando un usuario intenta la operación.
Para configurar la comprobación de acceso
- Cree un derecho de acceso de control que defina el tipo de acceso a la aplicación o servicio. Para obtener más información, vea el ejemplo de código siguiente.
- Cree un objeto Servicios de dominio de Active Directory que represente la aplicación, el servicio o el recurso que está protegiendo.
- Agregue acees de objeto a la DACL en el descriptor de seguridad de objetos para conceder o denegar a los usuarios o grupos el derecho de acceso de control en ese objeto. Para obtener más información, vea Establecer una ACE de acceso de control en la ACL de un objeto.
- Cuando un usuario intenta realizar la operación, compruebe los derechos de usuario pasando el descriptor de seguridad de objeto y el token de acceso de usuario a la función AccessCheckByTypeResultList . Para obtener más información, vea Comprobar un derecho de acceso de control en la ACL de un objeto.
Según el resultado de la comprobación de acceso en el objeto, la aplicación o el servicio pueden permitir o denegar el acceso del usuario a la aplicación o al servicio.
Al crear un objeto controlAccessRight, establezca los atributos enumerados en la tabla siguiente para que el objeto sea un derecho de acceso de control legal reconocido por Servicios de dominio de Active Directory y los sistemas de seguridad de Windows.
Atributo | Descripción |
---|---|
Cn | Propiedad con un solo valor que es el nombre distintivo relativo del objeto (RDN) en el contenedor de Extended-Rights. Cn es el nombre del derecho de control de acceso en Servicios de dominio de Active Directory. |
appliesTo | Propiedad multivalor a la que se enumeran las clases de objeto a las que se aplica el derecho de control de acceso. Por ejemplo, el derecho de control de acceso Send-As enumera las clases de objeto de usuario y equipo en su propiedad appliesTo . En la lista, cada clase de objeto se identifica mediante schemaIDGUID de su objeto classSchema . Los GUID se almacenan como cadenas del formulario generado por la función StringFromGUID2 en la biblioteca COM, pero sin las llaves de inicio y finalización ({ }). Por ejemplo, el SIGUIENTE GUID es schemaIDGUID para la clase de equipo : bf967a86-0de6-11d0-a285-00aa003049e2. Tenga en cuenta que la propiedad schemaIDGUID de un objeto classSchema se almacena como GUID binario mediante la sintaxis de cadena de octetos. Para convertir este formato de cadena de octeto en el formato de cadena utilizado en la propiedad appliesTo , use la función StringFromGUID2 y quite las llaves de la cadena devuelta. Para obtener más información sobre la propiedad schemaIDGUID de una de las clases de objeto predefinidas, como el usuario o el equipo, vea la página de referencia de clase en la Referencia de esquema de Active Directory en la referencia de Servicios de dominio de Active Directory. Para obtener más información y un ejemplo de código que recupera un schemaIDGUID de un objeto classSchema, vea Reading attributeSchema and classSchema Objects. |
DisplayName | Cadena que se usa para mostrar el derecho de control de acceso en interfaces de usuario, como la página de propiedades Seguridad y otros lugares del complemento MMC de Usuarios y equipos de Active Directory. |
rightsGuid | GUID que identifica el derecho de acceso de control en una ACE. El GUID se almacena como una cadena del formulario generado por la función StringFromGUID2 , pero sin las llaves iniciales y finales. Use Uuidgen.exe para alguna otra utilidad para generar un GUID para el derecho de acceso de control. Si defines un nuevo conjunto de propiedades, usas el rightsGuid del objeto controlAccessRight para identificar las propiedades del conjunto. Para cada propiedad del conjunto de propiedades, establezca el valor attributeSecurityGUID de la propiedad en el valor del rightsGUID del conjunto de propiedades. El valor attributeSecurityGUID de una propiedad se almacena en la definición attributeSchema de la propiedad en el esquema de Active Directory. La propiedad attributeSecurityGUID tiene un valor único y almacena el GUID en formato binario (sintaxis de cadena de octetos). |
Objectclass | Este atributo especifica controlAccessRight como clase de objeto. |
validAccesses | Para los conjuntos de propiedades, establezca este atributo en 0x30 (ADS_RIGHT_DS_READ_PROP ADS_RIGHT_DS_WRITE_PROP | ). Para controlar los derechos de acceso, establezca este atributo en 0x100 (ADS_RIGHT_DS_CONTROL_ACCESS). La página de propiedades de seguridad reconoce los derechos de acceso de control solo si el atributo validAccesses está establecido en el valor adecuado. Si es cero, el derecho de acceso de control se omite o no se muestra en la página de propiedades de seguridad. |
Tenga en cuenta que las clases de esquema predefinidas usan el atributo localizationDisplayId de un objeto controlAccessRight para especificar un identificador de mensaje usado para recuperar un nombre para mostrar localizado de Dssec.dll. No establezca el atributo localizationDisplayId si define un nuevo objeto controlAccessRight .