next up previous contents index
Next: 11.2 oskit_security: Security Server Up: 11 Flask Security Framework Previous: 11 Flask Security Framework

11.1 flask_types.h: basic Flask types and constants

   

This header file defines the basic types and constants used by the Flask-related COM interfaces. The architecture defines two policy-independent types for the set of security attributes associated with each subject and object controlled by the security policy. The security context type (oskit_security_context_t) is defined as a variable-length string that can be interpreted by any application or user with an understanding of the security policy. A security context might consist of several attributes, such as a user identity, a role, a type and a classification level.

To permit most object manager interactions to remain independent of both the format and the content of the security context, the security server defines a security identifier (SID) for each active security context. The SID type (oskit_security_id_t) is defined as a fixed-sized value that is mapped by the security server to a security context. The SID mapping cannot be assumed to be consistent either across executions (reboots) of the security server or across security servers on different nodes. Hence, SIDs may be lightweight; in the implementation, they are simply 32-bit integers.

The null (or zero-valued) SID is never a valid SID, but it may be used in extended object manager calls when no particular SID is specified. A wildcard SID, OSKIT_SECSID_WILD, is defined that matches any other SID when used for certain AVC operations. Certain SIDs (specified in flask/initial_sids) are predefined for system initialization. The corresponding constants are defined in the automatically generated header file flask/flask.h.

The security server computes access decisions based on a pair of SIDs. Typically, the SID pair consists of the SID of a subject invoking an operation and the SID of the object on which the operation was invoked. Rather than providing access decisions individually, the security server groups related access decisions into a bitmap referred to as an access vector. For example, a single access vector expresses the set of file permissions granted for a given SID pair.

The access vector type (oskit_access_vector_t) is defined as an unsigned 32-bit integer value. The bits within an access vector are interpreted differently depending on the class of the object. Each object class is identified by an unsigned 16-bit integer value, with the oskit_security_class_t type. The set of security classes is specified in flask/security_classes, with the corresponding constants in the automatically generated header file flask/flask.h. The permissions for each class are specified in flask/access_vectors, and the corresponding constants are defined in the automatically generated header file flask/av_permissions.h.


next up previous contents index
Next: 11.2 oskit_security: Security Server Up: 11 Flask Security Framework Previous: 11 Flask Security Framework

Utah Flux Research Group