The Tsecurity system provides authentication and authorization services to custom applications running on the Windows platform. It extends the native authentication services provided by Windows to allow these custom applications to authenticate users defined either on the local machine or in the Active Directory (AD). In addition, it manages lists of users to be provided privileges to these applications and exposes methods for access to these lists.
The Tsecurity system runs on a single computer defined as the Tsecurity host. This host system contains all of the configuration information for each of the defined custom applications, including the lists of users allowed to access each application and the rights that should be provided to each of those users.
The Tsecurity installation process installs a service on the Tsecurity host. This service is a TCP/IP server that accepts .NET Remoting calls from clients across the network. Clients may authenticate users along with their passwords and may request the list of security rights afforded to a given user. Consequently, all requests to the native Windows security fundamentals are channeled through the Tsecurity host service, which provides several advantages in terms of flexibility, security, speed, and reliability.
The Tsecurity system is fully integrated as an essential component of the TSENTRY control system platform. Alternatively, it can be installed on a host as a standalone application independent of the TSENTRY control system platform.
...
Tsecurity Fundamentals
Expand | ||
---|---|---|
| ||
The Tsecurity system provides two major functions to the client: authentication and authorization. Authentication refers to the process of verifying that a user is who he claims to be, that is, verifying the password for a given user. Authorization refers to determining what privileges should be afforded to a given user. In terms of authentication, Tsecurity provides a number of functions for authenticating a user, checking that the password is valid and has not expired, and changing the password for a given user. In terms of authorization, Tsecurity provides the concept of a Tsecurity Application for defining classes of privileges and associating those privileges with selected sets of domain users and domain user groups. In both cases, Tsecurity clients connect across the network to a Tsecurity host service and remotely calls functions through the host service. |
Expand | ||
---|---|---|
| ||
User authentication through the Tsecurity system has been designed to provide the optimal degree of freedom, flexibility, and, above all, reliability. Because authentication through the Active Directory server depends on network connectivity, which may be slow or even broken, the Tsecurity system implements a caching system for user credentials and information. This caching system allows for very fast response to authentication requests and reliability even when the connection to the Active Directory server is down, but at the same time minimizes the possibility of errors in authentication. User authentication in Tsecurity involves two separate threads. The primary thread (Thread A) is responsible for the following items:
The secondary thread (Thread B) is responsible for the following items:
Though the local cache file is an XML ASCII text file, private user information is stored in a hashed format to keep private information such as the user password secure. |
Expand | ||
---|---|---|
| ||
Following is a flow chart of the sequence of events during authentication: Further information about the various timeout periods described in the above flow chart can be found in the Tsecurity Service Configuration [LINK]section of this manual. |
Expand | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
Simply put, a Tsecurity Application is merely the definition of the associations between various domain members and the special subset of privileges that they are given. The term application in this sense does not necessarily refer to a single executable program; although it may be the case that the Tsecurity Application only governs a single executable program, it is better to think of a Tsecurity Application more generally as a set of rules used by a piece of software to control access to itself. As an example, consider a group of custom-built screens for a rolling mill control system. The system owner would want his mill operators to be able to control the schedule through the Preset screen. Maintenance personnel would also be able to adjust the schedule, but should additionally be able to run various tests from the Diagnostics screen. And above all, engineers should be given rights to both the Preset and Diagnostic screens, as well as being able to adjust any system tuning parameters from the Tuning screen.
Following are definitions of some key terms used within a Tsecurity Application:
Continuing the rolling mill example from above: In order to manage security for the rolling mill applications, the system owner would define a Tsecurity Application named RollingMillScreens. Within this application there would be three privilege classes defined: Operators, Maintenance, and Engineers. In addition, there would be three privileges defined: ModifyPreset, RunDiagnostics, and TuneSystem. Privileges would be assigned to application privilege classes as follows:
Once the privilege classes and associated privileges have been defined, the system owner would need to add domain members to each of the appropriate privilege classes. For instance, Joe the Operator would be added to the list of members of the Operators group, Jane the Maintenance Tech would be added to the list of members of the Maintenance group, and Bob the Engineer would be added to the list of members of the Engineers group. Alternatively, if there is an Active Directory group already defined that contains of all engineers for the rolling mill, this AD group could be added to the Engineers application privilege class in the RollingMillScreens Tsecurity application and any domain user contained in that group in the Active Directory would be given all three of the above rights specified for the Engineers application privilege class.
This complete set of information, including the privileges, application privilege classes, domain members, and each of their interrelationships, comprises a Tsecurity Application. The definition for each Tsecurity Application is stored on the host in a separate XML file called an Application Security Configuration File (ASCF). These are described in detail in Application Security Configuration Files [LINK]. |
Expand | ||
---|---|---|
| ||
It is important to point out that under the Tsecurity framework the Tsecurity system itself is not responsible for preventing unwanted access to resources; rather it is a tool that allows other custom software to quickly, easily, and reliably determine if a given user should be provided access to some resource within that custom software. Given that a Tsecurity Application is merely a definition of user access rules within a set of software, it is important to realize that the software itself is ultimately responsible for managing its own the security. Generally speaking, a custom Tsecurity client would use Tsecurity in the following fashion:
|
Expand | ||
---|---|---|
| ||
Tsecurity Applications are configured and modified using an application called the ASCFEditor. The ASCFEditor is itself a client to the Tsecurity system; when a user executes the ASCFEditor, it requires that the user first authenticate with a username, domain, and password before it allows him to make changes to a specified Tsecurity Application configuration. A given user can only modify a Tsecurity Application configuration if he is specified as an owner of that application. A single Tsecurity Application may have only one or may have many different owners that have rights to change the Tsecurity Application configuration. By default, there is one special Tsecurity Application named Tsecurity; this is the Tsecurity Application that the ASCFEditor uses to determine the security rules that it must follow. In particular, owners of the Tsecurity Tsecurity Application are deemed Tsecurity administrators. These users have the rights within the ASCFEditor to create new Tsecurity Applications and specify which users are owners of which Tsecurity Applications. |
Expand | ||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||||||||||||
Within the Tsecurity Application environment, each individual privilege is assigned to a single bit within a 64-bit integer. Consequently, the entire set of privileges granted to a user can be represented as a single 64-bit integer corresponding to the bitwise-OR of each of the individual privileges assigned to that user. This 64-bit integer is called the Security Access Key (SAK) for that user. In the rolling mill example provided above, for instance, the privileges may be assigned bits as follows:
The SAK for each privilege class would therefore be the bitwise-OR of the bitmasks corresponding to each of the privileges granted to that privilege class. As a result, the SAK for each privilege class would be as follows:
The highest-order bit of the SAK is reserved to indicate an error. Consequently, there is a maximum of 63 distinct privileges that can be specified in a Tsecurity Application |
Expand | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Generally speaking, when a Tsecurity client wishes to retrieve the SAK for a specified user within a given Tsecurity Application, the Tsecurity host must perform the following steps:
In the simplest Tsecurity Applications, where all of the domain members of all of the privilege classes listed in the Tsecurity Application definition are actual domain users, the first step above is quite simple. In this case all application privilege class memberships are explicitly specified in the Tsecurity Application definition.
Using the above example, privilege class membership for a Tsecurity Application may be specified as follows:
Consequently, when a Tsecurity client requests the SAK for Joe the Operator, the Tsecurity host can very quickly determine that Joe is only a member of the Operators application privilege class and return the appropriate SAK. However, consider a more complicated Tsecurity Application, which in addition to explicitly specifying Windows users as members of its application privilege classes, also specifies an entire Active Directory user group as a member of one of its application privilege classes. In this case, in order to evaluate application privilege class membership for a specified domain user, the Tsecurity host must query the Active Directory to determine group membership within the Active Directory. Depending on network connectivity and availability, this query may be relatively quick (~1 second) or it may take quite a while to complete or time out.
Following from the above example, suppose all domain engineers were also specified as members of the Engineers application privilege class:
In this case, when a Tsecurity client requests the SAK for Joe the Operator, the Tsecurity host knows immediately that Joe is a member of the Operators application privilege class, but the Tsecurity host must also query the Active Directory to determine if Joe is also a member of the MyDomain\DomainEngineersGroup domain user group.
Because specifying domain groups in a Tsecurity Application definition will significantly slow SAK retrieval for all users for that Tsecurity Application, a special flag is provided for each user listed in a Tsecurity Application definition to specify how his SAK should be calculated. This flag is defined as:
In the example above, if this flag is set true for Joe the Operator and a request is made to retrieve his SAK, the Tsecurity host would only indicate that he is a member of the Operators application privilege class.
In the example above, if this flag is set false for Joe the Operator and a request is made to retrieve his SAK, the Tsecurity host would take the time to query the Active Directory to determine if he is also a member of the MyDomain\Domain Engineers Group before calculating his SAK. |
Expand | ||
---|---|---|
| ||
Flow chart for evaluating user SAKs |
Installation
Expand | ||
---|---|---|
| ||
The Tsecurity system comes in two different installation packages. First, Tsecurity is included as an integrated piece of a full TSENTRY installation. Alternatively, Tsecurity can be installed as a standalone package. However, both the standalone version of Tsecurity and the integrated version installed with TSENTRY cannot both be installed on the same system at the same time. If a host must be converted from a TSENTRY system to a plain Tsecurity host, or vice versa, the original software should first be uninstalled before installing the new version. In either case, the latest installation files can be obtained from the support section of the TSENTRY web site: http://www.tsentry.com. Once Tsecurity has been installed (either as part of a TSENTRY installation or as a standalone package) there are two additional steps that must be completed before the system will be fully operational:
|
Expand | ||
---|---|---|
| ||
Tsecurity can be installed on any system, workstation or server, domain member or standalone; however, there are a number of special considerations that must be taken into account for the installation process to succeed.
In this case there are several options:
|
Expand | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||||
The installation process should install the following folders under the installation path on the Tsecurity host system:
|
Expand | ||
---|---|---|
| ||
The installation process registers the Tsecurity service on the local host. This service is configured to automatically start with Windows and executes under the Tsentry account, which is a local account on the Tsecurity host also created by the installation process. This service is described in more detail in the Tsecurity Service [LINK] section. |
Expand | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||||
The following registry changes are made by the installation process:
|
Application Security Configuration Files
Expand | ||
---|---|---|
| ||
Application Security Configuration Files (ASCF) are XML files that specify the rules for a given Tsecurity Application. Each Tsecurity Application is defined by a separate file stored in the ASCF directory, whose location is specified in the registry. |
Expand | ||
---|---|---|
| ||
Within the root <ASCF> element of the ASCF XML file, there are three types of records allowed. These are defined below:
|
Expand | ||
---|---|---|
| ||
Following is a sample ASCF corresponding to the example Tsecurity Application described in the documentation:
|
Tsecurity Service
Expand | ||
---|---|---|
| ||
The Tsecurity service is a process that runs on the Tsecurity host to handle requests from Tsecurity clients across the network. This process is registered as a Windows service executing as the Tsentry user, which is created upon installation of the Tsecurity package. Though the Tsentry user is created as an administrative user on the local host, it does not have rights to log on remotely and thus does not pose a significant security issue. The Tsecurity service itself acts as a TCP .NET Remoting server to receive requests from Tsecurity clients. Because it runs as a service, this process logs any sequencing or error messages to the Windows Application Event Log. The detail of messages logged is controlled by a debug level setting in the configuration file for the Tsecurity service; the higher the debug level, the more detail is logged to the event log. The binary executable file for the Tsecurity service is named Tsecurity.exe and is located in the \bin\ subdirectory beneath the Tsecurity installation path. |
Expand | ||
---|---|---|
| ||
The Tsecurity service is fully configurable via a configuration file named Tsecurity.exe.config located in the same directory as the Tsecurity service binary executable. This is an XML file consistent with the application config file format specified by Microsoft .NET applications. For detailed information about the configuration of the Tsecurity service, refer to the TsecurityCfg [LINK] section of this manual. |
Expand | ||
---|---|---|
| ||
Following is a sample Tsecurity.config file:
|
TsecurityCfg
Expand | ||
---|---|---|
| ||
The TsecurityCfg application is used to configure the Tsecurity service. It presents a set of tabbed pages containing the various options and parameters that define how the Tsecurity service operates. Because TsecurityCfg has complete control over how the Tsecurity system operates, access to this application should be limited exclusively to Tsecurity administrators. |
Expand | ||
---|---|---|
| ||
The main portion of the TsecurityCfg display is a set of tabbed pages, one page for each category of Tsecurity-related configuration parameters. Each of these pages is described below. |
Expand | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||
System parameters define general operation of the Tsecurity system. The following system parameters can be modified from this page:
Each of these parameters is stored in the <TsecuritySettings> section of the Tsecurity.exe.config file. |
Expand | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||||
Timing parameters define the various delays, intervals, and timeouts used during authentication and authorization by the Tsecurity system. The following timing parameters can be modified from this page:
Each of these parameters is stored in the <TsecuritySettings> section of the Tsecurity.exe.config file. |
Expand | ||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||||||||||||||||||
The Domains page allows the system administrator to customize which domains are returned by the Tsecurity service in the list of domains available for login. Normally, the Tsecurity service returns the list of all domains that can be reached by the Tsecurity service; however, this list may be long and unwieldy and include domains to which a given application does not want users to authenticate. Consequently there are a couple options for filtering this list so that only selected domains are returned. Always Include If the Enabled flag is checked, domains listed in the Always Include will always be returned in the list of domains available for login, regardless of whether or not the Tsecurity system can reach those domains. The first domain marked as default, if any, will be initially selected as the default login domain. If the Enabled flag is left unchecked, this list will not have any effect on the list of returned domains.
Filter Available If the Enabled flag is checked, the list of available domains discovered by the Tsecurity system is filtered so that the returned list includes only those that are listed in the Filter Available list (in addition to the Always Include domains above). The first domain in this list marked as default, if any, and also found in the list of available domains, will be initially selected for the user (assuming no domain in the 'AlwaysInclude' list is also marked as default). If the Enabled flag is left unchecked, the list of discovered domains will be returned in full.
For example, suppose that three domains are discovered by the Tsecurity service, DOMAIN1, DOMAIN2, and DOMAIN3. In addition, assume that the Always Include and Filter Available lists are configured as shown in the following table:
Given the above lists, the table below illustrates which domains will be returned from the Tsecurity service depending on which of the above two lists are enabled.
In both of these lists, the checkbox is used to indicate which domain is marked as default.
For the Tsecurity service the domain configuration lists are stored in the <TsecurityDomains> subnode in the <TsecuritySettings> section of the Tsecurity.exe.config file. |
Expand | ||
---|---|---|
| ||
The Browse Users page is used to specify credentials that can be used to browse the active directory structure. These users are only required in certain situations as described below. The Under normal circumstances, when a client wishes to retrieve the SAK for a given user from a Tsecurity host the client must provide the user’s password. This password is required if all of the following circumstances are true:
In this situation the Tsecurity host must query the Active Directory to retrieve the list of groups in which the user is either explicitly or implicitly (via nested groups) a member. In order to gain access to the Active Directory the Tsecurity host must have a valid set of credentials. Hence, the Tsecurity host uses the credentials of the user himself to gain access. However, there are cases where the client wishes to retrieve the SAK for a user for whom it does not have the password. In this case the client passes an invalid reference (NULL in C/C++ or Nothing in VB.NET) for the password. Still, though, the Tsecurity host must have a valid set of credentials to use while querying the Active Directory. Consequently, the Tsecurity host must be provided a set of credentials for a browse user in each of the domains in which the host must locate users without a password passed from the client. Only one browse user can be specified for each domain, though a single browse user can be specified for multiple domains. The browse user need not actually be a member of the domain, though he must have browse rights to that domain. The browse user credentials are stored in the <TsecuritySettings> section of the Tsecurity.exe.config file. Passwords are encrypted so that they are not stored in plain text. |
Expand | ||
---|---|---|
| ||
The Tsecurity Administrators page is used to define the list of Tsecurity Administrators for the Tsecurity host. As described in the Managing Security Applications [LINK] section, a Tsecurity Administrator has full control of the Tsecurity system. Only a Tsecurity Administrator has the ability to create and destroy Tsecurity Applications and is responsible for specifying the owners of individual Tsecurity Applications. The name of each Tsecurity Administrator is listed as an owner of the special Tsecurity Tsecurity Application, which is stored in the Tsecurity.xml file in the ASCF folder specified on the System Parameters page. |
ASCFEditor
Expand | ||
---|---|---|
| ||
The ASCFEditor is an application for Tsecurity Application owners and the Tsecurity administrator to use to create, modify, and delete Tsecurity Applications configured on Tsecurity hosts. It is a VB.NET Forms application that acts as a client to the Tsecurity host service; it connects via .NET Remoting to the desired Tsecurity host to query for Tsecurity Application configurations and update them accordingly. |
Expand | ||
---|---|---|
| ||
Upon starting the ASCFEditor, the user is presented with the Login screen. First, the user must specify the Tsecurity host and port number to which he would like to connect. Once he has entered or chosen the host and port number, clicking on the Connect button will attempt to connect to the Tsecurity service running on the specified host. Once connected, the user will need to authenticate to the Tsecurity host. Valid users are any Tsecurity Application owners or the Tsecurity Administrator (specified as the owner of the special Tsecurity Tsecurity Application). Clicking on the Login button will attempt to authenticate the user on the host. If the user is successfully authenticated and is either a Tsecurity Application owner or the Tsecurity Administrator, he will be presented with the ASCF Editor screen. |
Expand | ||
---|---|---|
| ||
Expand | ||
---|---|---|
| ||
The following sequence demonstrates the creation of a simple new Tsecurity Application from scratch. In this example it is assumed that two users, MyOwner and MyUser, exist in the domain MyDomain, and that MyUser is a member of the MyDomain group MyGroup. To replicate this example on your system, please replace MyOwner, MyUser, MyDomain, and MyGroup with appropriate values for your system configuration. The example Tsecurity Application created below is owned by the domain user MyDomain\MyOwner. It consists of two application privilege classes, Operators and Maintenance. It specifies a domain user MyDomain\MyUser as a member of the Operators application privilege class and a domain group MyDomain\MyGroup as a member of the Maintenance application privilege class. This example further demonstrates how Security Access Keys are calculated under various configuration scenarios, including explicit and implicit privilege class membership.
10. Get the MyDomain\MyUser user’s SAK again as follows: Right click on the MyDomain\MyUser user name under the Domain Members label and choose the Get Security Access Key menu item.
MyDomain\MyUser user is 0x1 and that he is granted the OperPriv privilege. This is appropriate as MyDomain\MyUser is now a member of the Operators application privilege class and thus he has privileges specified for that privilege class. 11. Create a new privilege as follows:
OperPriv above, but name it MaintPriv and place it in the second row in order to associate it with bit 1 in the security access key. 12. Create a new application privilege class as follows:
Operators above, but instead name it Maintenance and add only the new MaintPriv privilege. 13. Add the domain user group MyDomain\MyGroup to this Tsecurity Application as a domain member as follows:
MyDomain\MyUser above but select the MyGroup group from the search results.
MyDomain\MyGroup user group should now be added to the list of Domain Members for this Tsecurity Application. In addition, the Object Type should be listed as Group, indicating that this object is a user group and not an individual user account. 14. Add the MyDomain\MyGroup user group to the Maintenance application privilege class by dragging and dropping MyDomain\MyGroup over the Maintenance application privilege class just as the MyDomain\MyUser user was added to the Operators application privilege class above. 15. Get the MyDomain\MyUser user’s SAK as before.
MyDomain\MyUser is 0x1. Since the Use Explicit Membership Only flag for MyDomain\MyUser is set to True, MyDomain\MyUser’s application privilege class membership is limited to what is explicitly specified in the Tsecurity Application configuration. Hence MyDomain\MyUser is only considered a member of the Operators application privilege class, and the SAK consists only of the SAK specified for that application privilege class. 16. Modify the MyDomain\MyUser user settings so that the Use Explicit Membership Only flag is set to False. 17. Again, retrieve the MyDomain\MyUser user’s SAK as before.
Authenticate User form should be presented asking for MyDomain\MyUser’s password. This is required so that the Tsecurity host can use MyDomain\MyUser’s credentials to query for his group membership in the Active Directory. Enter MyDomain\MyUser’s password and click the OK button.
MyDomain\MyUser is 0x3 and that he is granted both the OperPriv and the MaintPriv privileges. This is appropriate as MyDomain\MyUser still is explicitly listed as a member of the Operators privilege class (with an SAK of 0x1) and is also an implicit member of the Maintenance privilege class (with an SAK of 0x2) through his membership in the MyDomain\MyUser domain group. Hence the bitwise-OR of the two keys produces the composite SAK 0x3. |