Abstract:
A method and system for controlling computer security. The system is a centralized, computer-network security management tool capable of handling many different kinds of equipment in a standardized format despite differences in the computer security features among the diverse range of computer equipment in the computer network. The invention uses a layered software architecture, including a technology specific layer and a technology independent layer. The technology specific layer serves to extract and maintain security data on target platforms and for converting data to and from a common data model used by the technology independent layer. The technology independent layer handles the main functionality of the system such as locating and removing certain present and former employees from computer access lists, auditing system user data, monitoring security events (e.g. failed login attempts), automatically initiating corrective action, interfacing with the system users, reporting, querying and storing of collected data.

Description:
BACKGROUND OF THE INVENTION 
     The present invention is generally directed to a computer security system and, more particularly, to a centralized, computer-network security management system capable of handling many different kinds of equipment in a standardized format despite differences in the computer security features among the diverse range of computer equipment in the computer network. 
     With the current-day increase in dependence on information systems for doing business the risk of misuse or sabotage of those systems has grown to be very real. Making the problem more real are the daily news stories of hackers breaking into computers, and computers being infected with viruses. Adding to the risk is the rise in the number of mergers and acquisitions, which has resulted in large numbers of both new system users and potentially disgruntled displaced workers. 
     To reduce the risk, various technical solutions have been developed, for example the requirement for a password to be entered before logging on to a system. In addition, non-technical solutions have been developed, for example in the form of company policies that mandate the disablement of logon accounts not used for 90 days or more. 
     These solutions have helped alleviate the problems but have also opened up new ones. The technical solutions have brought with them the need for security administration, and with that has sometimes come incomplete or incompetent administration. There is a need for constant auditing of security systems to ensure compliance. The large number of users and systems makes manual auditing impractical. Larger companies tend to have the additional problem arising from their use of large computer networks containing many different kinds of equipment, each with its own version of security handling features and protocols. These incompatible protocols and the added problem of rapidly changing technical environments on world wide networks have aggravated and impeded the search for a satisfactory solution. 
     At present, many large companies are saddled with large, complicated information security schemes that contain loopholes and which cannot be supervised and audited effectively. This has increased their vulnerability to unauthorized use of their confidential information systems and databases for industrial espionage or even to sabotage. 
     SUMMARY OF THE INVENTION 
     Accordingly, it is an object of the present invention to provide an improved security management system for computer networks. 
     It is a further object of the invention to provide a computer network security management system which is easier to implement and use. 
     Yet another object of the invention is to provide a computer network security management system which provides a high measure of confidence that the security of a computer network will not be breached. 
     A further object of the invention is to provide a computer network security management system having a standardized protocol for handling security issues across a large range of different pieces of computer equipment. 
     The foregoing and other objects of the invention are realized in accordance with the present invention by a system which collects information from all repositories of security data on a computer network, standardizes it, stores the data in a central database and enables automatic and manual correction of erroneous data. 
     Components of the invention report on exceptions to, i.e. deviations from, security policies, and an automatic mechanism dynamically fixes compliance problems by administering the native security platforms. An analysis component reviews incoming data, looking for system break-in attempts and irregular or suspicious changes to vital security components. Another analysis component enables grouping of data by person or organization, across security platform boundaries. A manual maintenance component allows system maintenance to be done through a common user interface. 
     The invention uses a layered software architecture, enabling a separation of basic functions from the complications of differing technologies, and facilitating automated handling of many operations. The architecture can be viewed at a very high level as consisting of two layers: technology specific and technology independent. The technology specific layer consists of many groups of software modules, each group addressing the complexities of a single technology (e.g., NetWare™ 3.1, Windows NT, AIX, Sybase, etc.). The primary functions of the technology specific layer are extracting and maintaining security data on the target platforms, and converting the data to and from the common data model used by the technology independent layer. 
     The technology independent layer handles the main functionality of the system: locating terminating employees, auditing system and user data, monitoring security events (e.g. failed login attempts), automatically initiating corrective action, interfacing with the system users, reporting, querying and storing of collected data. 
     The invention is unique in many aspects including the following. It is a self-correcting data security audit system. In contrast, many existing approaches rely on manual correction after policy discrepancies are detected. The invention automatically takes action, changing system parameters (e.g., minimum password length made consistent with policy) or user parameters (e.g., forcing a password change at the next login if time limit is exceeded) as necessary. 
     The invention is also able to capture security data from all of the different platforms, consolidate it and operate on it in a common format. It is also unique in that it is able to identify the persons who own the various accounts. Existing products collect data only for a single environment or machine, leaving the security officers to manually consolidate across platforms. 
     Analyzing multi-platform data for security break-in attempts is another unique aspect. Sophisticated attacks on the information systems can be detected with this feature. The invention also provides the ability to manage security with a single user interface while not giving up the ability to simultaneously use platform specific tools. Prior to the invention, a decision to use centralized security management forced abandonment of platform specific tools. This is because centralized management tools use their own accounts data base which is then replicated to the actual platforms. Changes not made through the centralized tool are &#34;lost&#34; as far as the centralized tool is concerned. The invention avoids this limitation by routinely collecting data from the platforms, so it is always aware of changes. 
     Other features and advantages of the present invention will become apparent from the following description of the invention which refers to the accompanying drawings. 
    
    
     BRIEF DESCRIPTION OF THE DRAWINGS 
     FIG. 1 is a block diagram of a prior art computer security management system. 
     FIG. 2 is a conceptual block diagram of the system layout of a centralized computer network security management system in accordance with the present invention. 
     FIG. 3a is a block diagram and flow-chart delineating the information flow and major functions of the system of FIG. 2. 
     FIG. 3b is a continuation of FIG. 3a. 
     FIGS. 4a-4i are flow charts depicting major functions that are carried out by various components of the invention. 
     FIGS. 5a-5d are sample computer screens generated in the course of the collection agent component of the present invention performing its tasks. 
     FIGS. 6a-6e are flow charts which depict interactions between various components of the system of the present invention. 
     FIGS. 7a-7c are sample security reports produced by the present invention. 
     FIGS. 8a-8h show further computer operator screens generated in the course of the operation of the present invention. 
     FIGS. 9a-9b are further flow charts illustrating the operation of the present invention. 
     FIG. 10 shows an information entry block form used to add an account in the system of the present invention. 
     FIGS. 11a-11c show portions of computer source code used to implement certain functions performed by the present invention. 
    
    
     DETAILED DESCRIPTION OF THE INVENTION 
     With reference to FIG. 1, typical large business or governmental organizations have complex computer systems comprising many different computer hardware units or networks that operate under diverse and disparate software products which are intrinsically incompatible with one another. In a typical system, one group of computers may operate under a Netware software system 12, another group 14 may use the Unix operating system 14, a third Windows NT 16, or AIX 18 or constitute a database operating under the Sybase 20 database software system. Each of these systems has a different and unique security management approach and protocol, as represented by the security system software blocks 22, 24, 26, 28, 30 which correspond to the software systems 12, 14, 16, 18, 20, respectively. 
     To the extent that a system administrator wishes to exercise supervision and control over security issues relating to such systems, it is necessary for the various groups of computers to be connected to a central security administration system 10 via specifically designated lines 32, 34, 36, 38 and 40. In the prior art, the security administration system 10 may comprise no more than individual computer terminal(s) (not shown) which allow security personnel to individually query and maintain security standards at the different computer systems on a system-by-system basis. The approach of the prior art is cumbersome and not particularly reliable. 
     The present invention allows a security administration system 50 (conceptually shown in FIG. 2) to handle security issues on a global basis by enabling personnel which are responsible for it or automatic computer equipment to issue common commands that are applicable to the various pieces of hardware and software subsystems. With reference to FIG. 2, a company-wide computer network 52 consists of different hardware/software subsystems, 12, 14, 16, 18 and 20 each of which has a specific security domain 22-30 (FIG. 1) are all coupled to an abstraction facility 54 which serves to reformat and standardize security related data packets. Thereby, the abstraction facility 54 is able to provide over line 55 security data pertaining to all of the subsystems 12-20 for the purpose of being handled by the central security processor 60 in a consistent and standard manner. This enables the security administration or personnel 62 which is coupled to the central security processor 60 to handle and deal with security issues in a direct, globally applicable and standardized format. Indeed, the central processor 60 is programmed to act on many security related decisions automatically. Either way, when a decision concerning security matters is made, the processor responds by taking several actions, including providing relevant information and commands to a compliance facility 58 which process the information and causes the central security processor 60 to issue the appropriate commands to the local commands translator 56. 
     The function of the local commands translator 56 is to convert common security-related instructions to group-wise or device-specific instructions which can be understood by the individual subsystems 12-20 of the computer network 52. The compliance facility 58 also interfaces with an alerting facility agent 64 that is able to contact key personnel or other computer systems, e.g. an external system 68, regarding security breaches. Appropriate hard copy reports and the like can be provided through a reports generator 66. 
     Reference is now made to FIGS. 3a and 3b which explain in greater detail the system configuration and overall software flow of the system of the present invention. The technology specific layer consists of many groups of security related software modules which are depicted in FIG. 3a as security domains 70a, 70b, 70c . . . 70n. The security domains 70a-70n represent workstations, servers, LANs, Windows NT and other such computer software or hardware that are of interest to security officers and auditors. The definition of a security domain depends on the security architecture of the platform. For example, Windows NT normally manages security at a domain level, managing a group of machines, while NetWare™ manages it on a per-machine basis. Each security domain houses its own store of security information, i.e. parameter settings, user Ids, passwords, etc. 
     The security domains 70a-70n communicate with collection agents 72a, 72b, 72c . . . 72n, respectively. These collection agents 72a-72n, a part of security administration system 50, represent software facilities written specifically for the corresponding operating system or system software components, for example the workstation server, LAN or NetWare™ software facility comprising the security domains 70a-70n. Therefore, there are many different collection agents, each of which is associated with a specific security domain type. The present invention has been reduced to practice with collection agents specific to Netware™ 3.1, NetWare™ 4.0, Windows NT, two different remote access servers, RACF, ACF2, Sybase, Oracle, AS 400, VAX/VMS, Tandem, Lotus Notes, four different UNIX operating systems and an Internet firewall. 
     The collection agents 72a-72n use system utilities and/or APIs (Application Programming Interfaces) to extract from the individual security domains 70a-70n specific data defining security information pertaining to the system users, passwords, security groups, and where applicable: permissions, access controllers, logon events, file access events, system management events, file attributes, software and hardware versions, password control parameters, system parameters and the like. The information they collect is passed to the collection agent abstraction layer or facility 74 for further processing. 
     The collection agent abstraction facility 74 comprises a rule-driven software facility that rationalizes the data collected by the collection agents 72a-72n into standardized sets of data. This allows software modules which subsequently handle the data to ignore platform specific differences, in a manner which enables further processing of security data to be handled as source-independent information. The collection agent abstraction facility 74 takes into account platform differences as well as other differences such as administrative conventions used at each specific security domain. It enhances the data by identifying account owners, thereby forming a link to personnel and organizational information. This facility 74 is a key component of the solution because it allows auditors and security officers to view their many environments with a single tool, and a single, enhanced view of the data. 
     The collection agent abstraction facility 74 may run on one or more computers, as may be necessitated by system considerations. Furthermore, more than one software package may run on the same machine. The collection agent abstraction facility 74 may execute on the same machine and at the same time as other software (to be described) is running. 
     The information developed and organized by the collection agent abstraction facility 74 is stored in the database 76. This database 76 uses off-the-shelf software for storing and receiving collected data. In an embodiment of the invention which has been reduced to practice the database 76 has been implemented through the use of the well-know Sybase™ database engine. Data rationalized by the collection agent abstraction facility 74 has been organized and stored in the embodiment that has been reduced to practice in the manner shown in the Table I below. 
     
                       TABLE I______________________________________DATABASE TABLES (Technology Independent)Table Name   Column Name______________________________________User accounts        security domain type code        security domain name        user account id        user account name        user account last login date        user account creation date        user account created by id        user account disabled        user account name tokens        user account ssn token        user account department token        user encrypted passwordPrivilege groups        security domain type code        security domain name        group namePrivilege group members        security domain type code        security domain name        group name        user account idSecurity domains        security domain type code        security domain name        security domain minimum password length        security domain password requires alpha and        num        security domain password history count        security domain password reuse count        security domain password pre-expired indicator        security domain failed login disable count        security domain workstation disable indicator        security domain legal notice indicator        security domain operating system version        security domain operating system type______________________________________ 
    
     
                       TABLE I______________________________________DATABASE TABLES (Technology Independent)Table Name   Column Name______________________________________        security domain operating system patch number        security domain hardware informationResource access        security domain type codeprivileges   security domain name        user account id        resource name        resource type        resource access privilegesMonitored files        security domain type code        security domain name        file name        file creation data        file created by        file last updated date        file last updated by        file size        file permissions        file locationAudit events security domain type code        security domain name        event code        event date and time        event user        event success or fail indicator        event file name        event other informationSecurity policies        security policy minimum password length        security policy password requires alpha and        num        security policy password history count        security policy password reuse count        security policy password pre-expired indicator______________________________________ 
    
     
                       TABLE I______________________________________DATABASE TABLES (Technology Independent)Table Name   Column Name______________________________________        security policy failed login disable count        security policy workstation disable indicator        security policy legal notice indicatorBaseline files        security domain type code        file name        file creation data        file created byUser account security domain type codemaintenance  security domain name        user account id        user account name        user account disabled        user account ssn token        user account department token        maintenance action codePrivilege groups        security domain type codemaintenance  security domain name        group name        maintenance action code (add. remove)Privilege group members        security domain type codemaintenance  security domain name        group name        user account id        maintenance action code (add. remove)Resource access        security domain type codeprivilegesmaintenance______________________________________ 
    
     
                       TABLE I______________________________________DATABASE TABLES (Technology Independent)Table Name   Column Name______________________________________        security domain name        user account id        resource name        resource type        resource access privileges        maintenance action code (add. remove. change)______________________________________ 
    
     The database component 76 also includes graphical user interface (GUI) programs that allow the system&#39;s administrators to maintain &#34;static&#34; tables, such as the security policy and base file tables, as shown in Table I. 
     Referring now to FIG. 3b, note that the standardized information in the database 76 is accessible to several different software facilities identified as the compliance agent 78, the alert agent 80 and the query agent 82. 
     The compliance agent software 78 is software that analyzes collected data to determine if user and system data complies with security policy requirements. This component of the invention is another key component of the solution, which allows auditors and security officers to automatically monitor the computer network security environments. In the prior art, security officers had to manually check the settings for each machine, LAN, domain, etc. The compliance agent 78 produces exception reports identifying non-complying systems and users, and also passes its findings to a system component called the active agent 84 for further processing. 
     The active agent 84 is software that determines whether and how to bring non-complying computer subsystems into compliance. To this end, the active agent 84 issues instructions and commands to the maintenance agent abstraction layer or facility 90. Typical instructions are to disable user accounts of terminated employees, disable accounts that have not been used recently, change server parameters to ensure adequate password rules and force users to change their non-compliant passwords at the next logon, when this is warranted. The active agent 84 can be suppressed for certain user accounts or certain ones of the security domains 70a-70n, based on exception records stored in the database 76. For example, administrator or supervisor accounts may be dormant for many months on a particular computer, but must not be disabled or deleted. The active agent 84, operating in conjunction with the compliance agent 78 constitutes a self-policing, self-enforcing security system that operates automatically to keep the individual security domains 70a-70n in compliance with company security policies and regulations. 
     The logical flow and key software steps of the active agent comprise the self-explanatory steps 84a, 84b, 84c, 84d and 84e shown in FIG. 4f. The interaction of the active agent 84 with a data block 76d of the database 76, which contains exception parameters, and with other components of the invention is illustrated in FIG. 6c. 
     Typical instructions of the active agent 84 includes such instructions as to disable user accounts of terminated employees, disable accounts that have not been used recently, change server parameters to ensure adequate password rules and force users to change their non-compliant passwords at the next logon. The active agent 84 can be suppressed for certain user accounts or security domains, based on exception records stored in the database 76. 
     Commands and instructions concerning security measures to be taken relative to the security domains 70a-70n are also received by the maintenance agent abstraction facility 90 from the manual maintenance agent 86. The manual maintenance agent receives manual inputs 87 which are translated into commands concerning security issues that are manually inputted by the administrator or security officer of the system of the present invention. 
     The maintenance agent abstraction facility 90 is accordingly configured to received hardware and software independent instructions from the active agent 84 and from the manual maintenance agent 86. It converts these instructions into general hardware and software instructions that pertains to the individual platforms, i.e. security domains 70a-70n. More specifically, the maintenance agent abstraction facility 90 passes the instructions and commands to the individual maintenance agents 92a-92n. Each of these maintenance agents 92a-92n communicates exclusively with a corresponding one of the security domains 70a-70n and is designed to convert the general hardware and software instructions to specific instructions that can be understood by the individual platforms, i.e. security domains 70a-70n. Since the data collection is standardized by the collection agent abstraction facility 74 and the issuance of instructions to the security domains 70a-70n is also standardized in the maintenance agent abstraction facility 90, the invention obviates the need for separate local databases. This allows account maintenance to be done using any available tools such as native environment tools, or by the manual maintenance agent 86 or the active agent 84 working in conjunction with the compliance agent 78. 
     Internally (FIG. 9b), the maintenance agent abstraction facility 90 receives incoming platform independent instructions 93 (via the manual maintenance agent 86) and requests 95 involving requests for changes and deletions (via the active agent 84). It then parses and validates these requests as shown at step 97. It converts the parsed requests into platform-specific requests as shown at steps 99a and 99b of FIG. 9b. It does this by consulting internal mapping tables 91 which direct movement of data from the input fields to the output fields, i.e. from the general format security instruction protocol to the protocol that is more appropriate to the individual security domains. Finally, the maintenance agent abstraction facility commands the appropriate maintenance agents 92a-92n to carry out the specific requests and/or commands. In this manner, one platform independent request might result in iterative execution of a single maintenance agent function and/or the execution of multiple maintenance agent actions depending on the request. 
     The maintenance agents 92a-92n comprise platform-specific software, so there are many different types of maintenance agents. This software invokes the security processing of the native platforms, i.e. of the security domain 70a-70n, through commands or programming APIs, to accomplish the work passed from the active agent 84 and the manual maintenance agent 86 through the maintenance agent abstraction facility 90. The broadly described program steps 93a, 93b and 93c are self-explanatorily depicted in FIG. 4i. 
     The specific architectures of the various maintenance agents 92a-92n can take on different forms depending on the environment. For example, in the NetWare™ environment, the maintenance agent is a Visual Basic™ application that issues NetWare™ API calls to accomplish its work. In the Windows NT environment, the maintenance agent is also a Visual Basic™ application, but uses the Win32 API. For Unix environments, the maintenance agent may be a C program that issues Unix commands and operates on the security files. In the RACF and ACF2 environments, the maintenance agents produce command files which are uploaded to the hosts and executed there. Since the maintenance agent abstraction facility 90 has already prepared most of the protocol and command structure necessary to control the security domains 70a-70n, the maintenance agents 92a-92n are generally simpler programs. The overall flow diagram of the maintenance agents 90a-90n includes steps 93a, 93b and 93c which are presented in FIG. 4i. 
     As described above, the system of the present invention constitutes a self-correcting data security audit system which operates both in an automatic mode and in response to specific inputs from the administrator or other security personnel through the manual maintenance facility 86. The invention automatically takes actions and changes system parameters or user parameters as necessary. The invention automatically, reliably and consistently captures all of the security data from all of the different platforms, consolidates the data and operates on it in accordance with a common format and protocol. It then acts on that information to control the system, again employing a common format that gets translated only at the last layer via the maintenance agents 92a-92n to fit the specific formats required by the security domains 70a-70n. Additional functions and features of the aforementioned components of the system of the present invention are described in further detail with reference to the remaining figures. 
     FIGS. 4a-4c provide three examples of procedures used in the collection agents 72a-72n by setting forth various process steps executed in those elements of the instant invention. More specifically, FIG. 4a shows the steps 75a, 75b, 75c, 75d, 75e, 75f, 75g, 75h, 75i, 75j and 75k for a Unix controlled security domain. FIG. 4b shows steps 75l through 75t for a Windows NT security domain and FIG. 4c the steps 75u-75ab for a NetWare™ environment. In this connection, Table II reproduced below shows the data that is collected by the collection agents 72a-72n and passed to the collection agent abstraction facility 74, via database 76. 
     
                       TABLE II______________________________________COLLECTION AGENT OUTPUT HELDSField Name         Unix     NT    NetWare______________________________________USER ACCOUNT RELATEDuser account id    x        x     xuser account name  x        x     xuser account last login date              x        x     xuser account creation date              x        x     xuser account created by id        xuser account disabled              x        x     xuser encrypted password              x        xSECURITY GROUP RELATEDgroup name         x        x     xgroup user accounts              x        x     xSECURITY DOMAIN RELATEDsecurity domain type code              x        x     xsecurity domain name              x        x     x______________________________________ 
    
     
                       TABLE II______________________________________COLLECTION AGENT OUTPUT HELDSField Name             Unix   NT    NetWare______________________________________security domain minimum password length                  x      x     xsecurity domain password requires alpha and numsecurity domain password history count                         x     xsecurity domain password reuse count                         xsecurity domain password pre-expired indicator                  x            xsecurity domain failed login disable count                  x      x     xsecurity domain workstation disable indicatorsecurity domain legal notice indicator                  x      xsecurity domain operating system version                  x      x     xsecurity domain operating system type                  x      x     xsecurity domain operating system patch number                  x      x     xsecurity domain hardware information                  x      xRESOURCE ACCESS RELATEDuser account idresource name          x      x     xresource type          x      x     xresource access privileges                  x      x     xFILE RELATEDfile name              x      x     xfile creation data     x      x     xfile created by               x     xfile last update date         xfile last updated by          xfile size              x      x     xfile permissions       x      x     xfile location          x      x     xAUDIT EVENT RELATEDevent code                    x     xevent date and time           x     xevent user                    x     xevent success or fail indicator                         x     xevent file name               x     xevent other information       x     x______________________________________ 
    
     For example, the collection agents are able to extract and report to the collection agent abstraction facility the &#34;user account ID&#34; for the Unix, Windows NT and NetWare™ platforms. However, a field such as the &#34;user account created by ID&#34; can only be gathered from the NetWare™ platform. Table II further shows that the different data pieces can be grouped into different categories, for example, a group of data which is &#34;user account&#34; related and another which is &#34;security group&#34; related, etc. 
     FIGS. 5a and 5b show, respectively, computer screens 85a, 85b provided to the system operator to enable the selection and control of collection activities and the entering of necessary parameters for the NetWare™ environment. Sample screens 85c, 85d for Window NT environments are shown in FIGS. 5c and 5d. 
     As previously noted, only information provided by the various collection agents 70a-70n is provided to the collection agent abstraction facility 74, which performs the major function steps identified in FIG. 4e. These steps include step 100a involving scheduling the starting of the program at a designated time of day. This is followed by steps 100b, 100c, 100d, 100e and 100f which entail such functions as reading data from the particular collection agents, determine the type of environment of the received data; mapping the data to a generic language using an appropriate map for the environment, sending the map data to the database 76 and repeating the above steps for the remaining collection agents. 
     FIG. 11a is an example of source code or control statements for a parsing utility used as a part of the implementation of the collection agent abstraction facility 74 for NetWare™ parsing. Its basic function is to rearrange and decipher platform-specific input fields into the common format. FIG. 11b is an example of the beginning of a Perl script used to parse and reformat detailed Windows NT security log records into the standard internal format used for audit data. FIG. 11c is a continuation of the Perl script of FIG. 11b. 
     While Table II presented above shows the type of data that is input to the collection agent abstraction facility 74, Table III reproduced below shows the output data fields of the collection agent abstraction facility. 
     
                       TABLE III______________________________________Collection Agent Abstraction Layer Output Field(technology independent)______________________________________USER ACCOUNT RELATEDsecurity domain type codesecurity domain nameuser account iduser account nameuser account last login dateuser account creation dateuser account created by iduser account disableduser account name tokensuser account ssn tokenuser account department tokenuser encrypted passwordSECURITY GROUP RELATEDsecurity domain type codesecurity domain namegroup namegroup user accountsSECURITY DOMAIN RELATEDsecurity domain type codesecurity domain namesecurity domain minimum password lengthsecurity domain password requires alpha and numsecurity domain password history countsecurity domain password reuse countsecurity domain password pre-expired indicatorsecurity domain failed login disable countsecurity domain workstation disable indicatorsecurity domain legal notice indicatorsecurity domain operating system versionsecurity domain operating system typesecurity domain operating system patch numbersecurity domain hardware informationRESOURCE ACCESS RELATEDsecurity domain type codesecurity domain nameuser account idresource nameresource typeresource access privilegesFILE RELATEDsecurity domain type codesecurity domain namefile namefile creation datafile created byfile last update datefile last updated byfile sizefile permissionsfile locationAUDIT EVENT RELATEDsecurity domain type codesecurity domain nameevent codeevent date and timeevent userevent success or fail indicatorevent file nameevent other information______________________________________ 
    
     The major enhancement to the collected data centers around decoding information that is normally placed in the name field of each user account record. Common practice is to include name and/or payroll number and/or organization code. The name is also split into &#34;tokens&#34; to allow searching and facilitate analysis of collected information. 
     As shown in FIG. 6a, the database 76 stores data 76a obtained from the security domains 70a-70n which has been rationalized and reformatted by the collection agent abstraction facility 74. It also holds policy data 76b which reflects the set of rules and regulations applicable to the security system which has been manually inputted by security personnel as indicated by reference numeral 77 in FIG. 3b or pre-stored therein. The compliance agent 78 serves to review the reformatted data 76a and the policy data 76b and to compare the same. Whenever the collected data indicates non-compliance or less stringent compliance than standard policy requirements an exception is triggered and appropriate exception reports 79 are generated. Certain ones of the exception reports 79 may also be sent to the active agent 84 as indicated by line 85, for further processing and action by the active agent. FIGS. 7a, 7b and 7c are examples of compliance agent reports, i.e. the exception reports 79. 
     The following is a partial list of exception conditions: 
     minimum password length is too short 
     password life is longer than 90 days 
     more than 3 failed logins are being allowed before an account is disabled 
     concurrent logins are allowed 
     account has not been used in 90 days and is not disabled 
     account was used after employee termination date 
     Certain conditions can be automatically fixed by the system. Unused accounts can be automatically disabled. Password length and life parameters can be changed. In cases where automatic correction is desired, the compliance agent 78 sends instructions to the active agent 84 specifying what needs to be changed. The active agent 84 can then correct the exception condition by sending the appropriate instruction to the maintenance agent abstraction facility 90. FIG. 4d presents in a self-explanatory manner the key steps 78a, 78b, 78c, 78d and 78e that are carried out by the compliance agent 78. 
     Referring again to FIG. 3b, the alert agent 80 comprises software that analyzes collected data residing in the database 76 to determine if unusual security activities have taken place. An example of such activity is an unusually large increase in the number of failed access attempts, repeated failed attempts from a single user or location, or modification of certain key security or operating system files within any one of the security domains 70a-70n. The alert agent 80 automatically notifies appropriate personnel by e-mail, phone and/or pager. This is indicated by the alarm arrow 81 in FIG. 3b. The alert agent 80 is unique in that it is able to monitor across dissimilar environments, protecting against more sophisticated intrusion attacks that cannot be detected with previous generations of tools, which could only monitor one security domain at a time. The main sequence of program events taking place at the alert agent 80 are indicated in FIG. 4h. The logic of the alert agent 80 is shown in FIG. 4h to include the major software steps 102a, 102b, 102c, 102d and 102e, which are self-explanatorily presented. 
     As further shown in FIG. 6b, the database 76 also includes a threshold parameters data block 76c and the alert agent 80 is responsive both to the security domain collected data 76a and to the threshold parameters 76c. The alert agent 80 scans the collected data looking mostly at an event audit table which has the general organization shown in FIG. 8a (in which server names and user IDs have been blanked out for security reasons). It counts failed login attempts and failed file accesses by user, domain, location, file name, computer name, etc. It reports exception conditions based on reaching thresholds that are kept in the database as parameters 76c. The alert agent 80 also reports on single critical events such as a change made to a key security control (e.g. the stopping of the logging or counting of failed logins), or deactivation or failure of a security component (for example clearing of a security log file). The alarm line 81 of FIG. 3b can result in the automatic placements of a phone call 81a or an e-mail message 81b or a pager message 81c as indicated in FIG. 6b. 
     The query agent 82 of FIG. 3b similarly interfaces with the database 76 and comprises an interface software that allows system users to access the database information. Both standard and ad-hoc queries are supported by the software implementation of the agent 82. The query agent 82 has been reduced to practice in a form that uses an Internet/Intranet technology, i.e. a web browser, to allow access with a minimum of connectivity and software distribution problems. Any query tools that handles Sybase™ could be used in the implementation. The tool used in the embodiment that has been reduced to practice is Sybperl™. The flow logic of the query agent 82 is shown in FIG. 4g to include major software steps 104a, 104b, 104c, 104d and 104e, which are self-explanatorily presented. 
     As shown in FIG. 6d, the query agent 82 supports queries on the following data objects: user accounts 82a, security groups 82b, security domain reports 82c, operating system and security product reports 82d and standard audit/alert reports 82e. The foregoing queries on objects 82a through 82b allow the user to select which data fields to report, sort order, and record selection criteria. 
     In addition to customizable queries, the query agent 82 also supports standard reports 82e, for example, accounts used after an employee is terminated and a report of users of &#34;high risk applications&#34;. A typical standard report from the query agent 82 is shown in FIG. 8b. 
     The manual maintenance agent software 86 (FIG. 3b) is a user interface software that allows maintenance to be done on any supported platform using a standard user interface, for example, a user interface that operates in accordance with the flow-chart of FIG. 9a. Such a user interface may comprise a search screen 86a, a list of accounts screen 86b, a single account detail screen 86c, an account updating screen 86d and such other screens as are necessary to provide full and effective communication by users of the system. Differences between different platforms are handled behind the scenes by the maintenance agent abstraction facility 90 (FIG. 3b) which receives instructions from the manual maintenance agent 86. 
     As shown in FIG. 6e, the manual maintenance agent software 86 allows the user to query collected data and make changes based on manual/user inputs 87 which are conveyed to the maintenance agent abstraction facility 90. Complex queries are supported, such as the ability to reveal all accounts for a single user. Complex changes are also supported, including the ability to propagate a single change to multiple security domains 70a-70n. This is useful, for example, when a user&#39;s name changes, or when a new user is added to several environments and services. Changes are stored in separate database tables from the collected data. 
     The manual maintenance agent 86 takes inputs from the user and converts them into platform independent security maintenance instructions which are then processed by the maintenance agent abstraction facility 90. Examples of platform independent security maintenance categories and data are as follows: 
     AddUserAccount(id, platformList, name, Payroll Number, expenseCode) 
     RemoveUserAccount(id, platformList) 
     AddUserAccountToGroup(id, platformList, GroupName) 
     RemoveUserAccountFromGroup(id, platformList, GroupName) 
     ModifyUserAccountName(id, platformList, name) 
     ModifyUserAccountPay(id, platformList, Pay) 
     ModifyUserAccountExpenseCode(id, platformList, expenseCode) 
     DisableUserAccount(id, platformList) 
     FIG. 8c shows the screen used to designate how often data should be collected. FIG. 8d shows the screen used to designate the server from which data should be collected. FIG. 8e shows the screen used to designate high risk applications. FIG. 8f shows the screen used to designate the environment. FIG. 8g shows the screen used to designate high risk reports. FIG. 8h shows the screen used to designate event code mapping of native codes to the common system code. 
     The mapping tables are generated from data entered by the user. FIG. 10 shows the input screen presented to the user. For a NetWare™ platform, the data provided by the user would be placed into two field in the following format: 
     ID=ID 
     Name=Name+/+Dept+/+Pay. 
     For an NT platform, the same data would be placed in different fields as: 
     Name=Name 
     Extra Info=Dept+Pay. 
     Although the present invention has been described in relation to particular embodiments thereof, many other variations and modifications and other uses will become apparent to those skilled in the art, such as the functional split between collection agents 72a-72n and the collection agent abstraction layer or facility 74, and between the individual maintenance agents 92a-92n and the maintenance agent abstraction layer or facility 90. It is preferred, therefore, that the present invention be limited not by the specific disclosure herein, but only by the appended claims.