Container audit files are treated as an extension of the container itself. Consequently, container audit files are replicated to the same servers on which the container itself is replicated. These replicas are maintained in an inaccessible directory in volume SYS: of the servers where the container is replicated.
The inaccessible directory is a protected directory that network clients cannot directly read by issuing file and directory NCP messages. The names of the audit files are derived by the server from the name of the Audit File object when each file is created; however, these filenames are not meaningful outside the server's auditing software.
Each container audit file consists of a header (such as creation time) and a sequence of audit event records. Audit records are usually, but not necessarily, sequenced in order of increasing time.
Container audit files are not necessarily a fixed size. The server writes an audit record, then checks to see whether the audit file has exceeded the desired size. If so, the server executes a background thread to perform the file rollover; however, during this time, the server might add even more events before the file is rolled over. Because of the synchronization of audited events to replicas on different servers, individual replicas of audit files are not necessarily the same size.
Records are stored in the audit file in a "null-compressed" format (0xE0 = 1 null byte, 0xE1 = 2 null bytes, ..., 0xEE = 15 null bytes, 0xEF = next byte actual). After encoding all natural nulls in the audit record, the server then uses a null character (0x00) as a record separator.
The following sections describe the internal format of audit files within the server ("internal format") and the AUDITCON display format for each audit trail.
Each container audit file contains an audit file header that defines the audit status and configuration data for the audit file. Table 23 defines the format of the container audit file header. The data types "uint8", "uint16", and "uint32" refer to 8-, 16-, and 32-bit integers, respectively.
This section defines the binary format of each audit record in the container audit trail. Each container audit record has a fixed header and, potentially, additional event-specific data.
The container audit record header (audit_container_rcd_hdr) is a fixed structure that contains data for each audit event in the container audit file. Table 24 shows the contents of the container audit record header.
101 |
ADD_ENTRY Audits the creation of a new object entry in NDS and any associated attributes (properties)of that object. If multiple attributes are created by this action, NDS writes an audit record for each attribute. |
BYTE; EntryName []; WORD Length-Preceded RDN of new object entry BYTE; AttrName []; WORD Length-Preceded Name of attribute that is defined by creation of object (optional) |
102 |
REMOVE_ENTRY Audit removal of an NDS object entry. |
BYTE; EntryName []; WORD Length-Preceded RDN of removed object entry |
103 |
RENAME_OBJECT Audit renaming of an NDS object. |
(Note: DS sets the processUniqueID in the audit record header to object ID of the renamed object.) BYTE; EntryName []; WORD Length-Preceded new RDN for object BYTE; oldEntryName []; WORD Length-Preceded old RDN of object |
104 |
MOVE_ENTRY Audit move of a leaf object to a new location in the tree. |
(Note: NDS sets the processUniqueID in the audit record header to object ID of the moved object.) BYTE; ObjectName1[]; WORD Length-Preceded Original RDN for object BYTE; ObjectName2 []; WORD Length-Preceded New RDN for object |
105 |
CHANGE_SECURITY_EQUIV Audit one or more changes to an object's Security Equals attribute. |
BYTE; EntryName []; WORD Length-Preceded RDN of specified object entry BYTE; ObjectName []; WORD Length-Preceded RDN of object to which object EntryName is security equivalent (Note: The audit record will contain an additional ObjectName for each additional equivalence). |
106 |
CHG_SECURITY_ALSO_EQUAL Audit one or more changes to an object's Security Also Equals attribute. |
BYTE; EntryName; WORD Length-Preceded RDN of specified object entry BYTE; ObjectName; WORD Length-Preceded RDN of object to which EntryName can assume equivalent rights (Note: The audit record will contain an additional ObjectName for each additional equivalence). |
107 |
CHANGE_ACL Audit one or more changes to an object's Access Control List. Each ACL item specifies an attribute of the current object, another object who has rights to that attribute, and the rights granted to the other object. |
unicode; EntryName; RDN of specified object entry LONG; Privileges; Rights associated with access change unicode; ObjectName; RDN of object that is assigned rights to an attribute of the current object unicode; AttrName; Name of attribute (Note: The audit record will contain additional repetitions of Privileges, ObjectName, and AttrName for each additional ACL element.) |
108 |
CHG_STATION_RESTRICTION Audit a change to Network Address Restriction property. |
unicode; EntryName; RDN of user or printer object entry LONG; Nbytes; Number data bytes (10) BYTE; address[10]; IPX address restriction |
109 |
LOGIN Audit a user's login to NDS. |
LONG; UserID; User entry ID on server BYTE; NetworkAddrType; IPX=1 BYTE; NetworkAddrLen; Length; IPX uses 10 BYTE; NetworkAddress[ ]; IPX network address BYTE; UserName[ ]; WORD Length-Preceded RDN of logged-in user. |
110 |
LOGOUT Audit a user logout from NDS. |
BYTE; EntryName; WORD Length-Preceded RDN of logged out user |
111 |
CHANGE_PASSWORD Audit a password change for the object. Note that the user password itself is not recorded. |
BYTE; EntryName; WORD Length-Preceded RDN of User object who changed password |
112 |
USER_LOCKED Audit setting of the Locked by Intruder attribute of an NDS User object. |
BYTE; EntryName; WORD Length-Preceded RDN of locked user |
113 |
USER_UNLOCKED Audit clearing the Locked by Intruder attribute of an NDS User object. |
BYTE; EntryName; WORD Length-Preceded RDN of unlocked user |
114 |
USER_DISABLE Audit clearing of the Login Disabled attribute of an NDS User object. |
BYTE; EntryName; WORD Length-Preceded RDN of user that was disabled |
115 |
USER_ENABLE Audit setting of the Login Disabled attribute of an NDS User object. |
BYTE; EntryName; WORD Length-Preceded RDN of user being enabled |
116 |
CHANGE_INTRUDER_DETECT Audit a change to Login Intruder Limit setting for a container object (the container being audited). |
LONG; Nbytes; Size of attribute Data[ ] array BYTE; Data[Nbytes]; New data for attribute LONG Length-Preceded BYTE; AttrName; Name of intruder detection attribute WORD Length-Preceded (Note: The audit record will contain additional iterations of Nbytes, Data and AttrName for each additional intruder detection attribute.) |
119 |
ADD_REPLICA Audits addition of a replica of an existing Directory partition to a server. |
BYTE; partName; WORD Length-Preceded common name of partition of the partition root BYTE; serverName; WORD Length-Preceded FDN of server object LONG; replicaType; whether it's a Master, Read-Write, or Read-Only replica |
120 |
REMOVE_REPLICA Audits removal of a replica from the replica set of an Directory partition |
BYTE; partName; WORD Length-Preceded RDN of the partition root BYTE; serverName; WORD Length-Preceded RDN of server object |
121 |
SPLIT_PARTITION Records splitting an Directory partition into two partitions at a specified object. |
BYTE; OldRootName; WORD Length-Preceded RDN of original partition root entry BYTE; NewRootName; WORD Length-Preceded RDN of new partition root entry |
122 |
JOIN_PARTITIONS Audit joining of a subordinate partition to its parent. (This event occurs twice in succession; first for the subordinate partition and then for the joined partition.) |
BYTE; EntryName; WORD Length-Preceded RDN of joined partition root. |
123 |
CHANGE_REPLICA_TYPE Audit change to replica type of a given replica on a given server |
LONG; oldType; previous replica type (Read Only, Secondary, Master) LONG; newType; new replica type BYTE; entryname; WORD Length-Preceded RDN of partition root BYTE; server name; RDN of server that holds the partition |
124 |
REPAIR_TIME_STAMPS Audit setting object and object property timestamps for a replica to the local server time. |
BYTE; EntryName; WORD Length-Preceded RDN of partition root of the replica that was synchronized |
126 |
ABORT_PARTITION_OP Audit termination of a repartitioning operation. |
BYTE; EntryName; WORD Length-Preceded RDN of partition root |
127 |
SEND_REPLICA_UPDATES Audit transmission of an update to another Directory partition. |
BYTE; EntryName; WORD Length-Preceded RDN of replica root that sent updates |
128 |
RECEIVE_REPLICA_UPDATES Audit receipt of an update from another Directory partition. |
BYTE; EntryName; WORD Length-Preceded RDN of replica root that received updates |
129 |
ADD_MEMBER Records creating an object using Bindery emulation. |
BYTE; ObjectName; WORD Length-Preceded RDN of object entry BYTE; MemberName []; WORD Length-Preceded ID of member having rights to property BYTE; PropertyName; WORD Length-Preceded Name of bindery property |
130 |
BACKUP_ENTRY Records backing up an NDS object, including its attributes. |
BYTE; EntryName; WORD Length-Preceded RDN of NDS object |
131 |
CHANGE_BIND_OBJ_SECURITY Records a change to a Bindery object's access rights through Bindery emulation. |
BYTE; ObjectName; WORD Length-Preceded Name of Bindery object LONG; ObjectSecurity; Bindery access level Read (0-4), Write (0-4) |
132 |
CHANGE_PROP_SECURITY Records a change to a Bindery property's access rights through Bindery emulation. |
BYTE; PropertyName; WORD Length-Preceded Bindery property name LONG; PropertySecurity; Bindery access level Read (0-4), Write (0-4) WORD Length-Preceded; TargetObjectName[]; Name of the bindery object for which the change occurred |
133 |
CHANGE_TREE_NAME Records renaming an NDS tree. The audit record is logged in the audit file of the Root container for the Directory tree. |
BYTE; NewTreeName; WORD Length-Preceded Name of the Directory tree |
134 |
CHECK_CONSOLE_OPERATOR Records a client's request to check it's console rights. The audit record is associated with the user identified in the audit record header. |
BYTE; ServerName; WORD Length-Preceded RDN of server object BYTE; UserName; WORD Length-Preceded Name of user being checked for console rights LONG; isOperator; Flag identifying console rights: zero (not console operator), non-zero (is a console operator) |
135 |
COMPARE_ATTR_VALUE Records a comparison of a client-supplied value to the value of a property in NDS. |
BYTE; EntryName; WORD Length-Preceded Name of object entry for which attribute is being compared BYTE; AttrName; WORD Length-Preceded Name of specified attribute |
136 |
CREATE_PROPERTY Records creating a property of a Bindery object through bindery emulation. |
BYTE; ObjectName; WORD Length-Preceded Name of Bindery object BYTE; PropertyName; WORD Length-Preceded Name of Bindery property LONG; PropertySecurity; Bindery access level Read (0-4), Write (0-4) |
137 |
CREATE_SUBORDINATE_REF Records adding a subordinate reference to the parent partition. |
BYTE; EntryName; WORD Length-Preceded RDN of parent partition root entry |
138 |
DEFINE_ATTR_DEF Records defining a new attribute in the NDS schema. |
BYTE; AttrName; WORD Length-Preceded Name of new attribute |
139 |
DEFINE_CLASS_DEF Records defining a new object class in the NDS schema. |
BYTE; ClassName; WORD Length-Preceded Name of new object class |
140 |
DELETE_MEMBER Records deleting an object through bindery emulation. |
BYTE; ObjectName; WORD Length-Preceded RDN of object entry BYTE; MemberName []; WORD Length-Preceded Name of object deleted BYTE; PropertyName; WORD Length-Preceded Name of bindery property |
141 |
DELETE_PROPERTY Records deleting a property of a Bindery object through bindery emulation. |
BYTE; ObjectName; WORD Length-Preceded Name of Bindery object BYTE; PropertyName; WORD Length-Preceded Name of bindery property |
142 |
DS_NCP_RELOAD Records restarting NDS. |
(None) |
143 |
RESET_DS_COUNTERS Records resetting the NDS counters. |
BYTE; ServerName; WORD Length-Preceded RDN of specified server object |
144 |
FRAG_REQUEST Records a fragmented request to a server. |
(None) |
145 |
INSPECT_ENTRY Records querying an NDS object for partition status and other information. |
BYTE; EntryName; WORD Length-Preceded RDN of queried object |
146 |
LIST_CONTAINABLE_CLASSES Records retrieving the set of object classes that can be subordinate to an object. |
BYTE; EntryName; WORD Length-Preceded RDN of specified object |
147 |
LIST_PARTITIONS Records listing the Directory partitions on a server. |
BYTE; PartitionRootName; WORD Length-Preceded RDN of partition root entry |
148 |
LIST_SUBORDINATES Records retrieving the subordinate objects to an object. |
BYTE; EntryName; WORD Length-Preceded RDN of specified object |
149 |
MERGE_TREE Records merging two Directory trees. |
(None) |
150 |
MODIFY_CLASS_DEF Records modification of an NDS class definition in the schema. |
BYTE; ClassName; WORD Length-Preceded Name of modified class definition |
151 |
MOVE_TREE Records moving a portion of the Directory tree. |
BYTE; SrcParentName; WORD Length-Preceded RDN of source container name of the root of the subtree. BYTE; DestParentName; WORD Length-Preceded RDN of destination container name of the root of the subtree. |
152 |
OPEN_STREAM Records opening a stream property of an NDS object. |
BYTE; EntryName; WORD Length-Preceded RDN of NDS object BYTE; AttrName; WORD Length-Preceded Name of NDS attribute BYTE; DesiredRights; WORD Length-Preceded Object property rights for stream file |
153 |
READ Records reading one or more properties of an NDS object. |
BYTE; EntryName; WORD Length-Preceded RDN of object entry BYTE; AttrName; WORD Length-Preceded Name of attribute to be read |
154 |
READ_REFERENCES Records retrieving the list of references for an object. |
BYTE; EntryName; WORD Length-Preceded RDN of requested object |
155 |
REMOVE_ATTR_DEF Records removing an attribute definition from the NDS schema. |
BYTE; AttrName; WORD Length-Preceded Name of removed attribute definition |
156 |
REMOVE_CLASS_DEF Records removing a class definition from the NDS schema. |
BYTE; ClassName; WORD Length-Preceded Name of removed class definition |
157 |
REMOVE_ENTRY_DIR Records removing the queue directory from an NDS object. |
BYTE; EntryName; WORD Length-Preceded RDN of NDS object for which queue directory was removed |
158 |
RESTORE_ENTRY Records restoring an NDS entry and its attributes from a backup. |
BYTE; EntryName; WORD Length-Preceded RDN of restored entry |
159 |
START_JOIN Records the beginning of a tree join operation. |
BYTE; ParentRootEntryName; WORD Length-Preceded RDN of root object (container) that is parent of joined tree BYTE; ChildRootEntryName; WORD Length-Preceded RDN of root object that is joined as a child |
160 |
START_UPDATE_REPLICA Records starting to update a replica from another server. |
BYTE; ReplicaName; WORD Length-Preceded RDN of root object for replica |
161 |
START_UPDATE_SCHEMA Records starting to update the schema from another server. |
BYTE; ClientServerName; WORD Length-Preceded RDN of server object |
162 |
SYNC_PARTITION Records a request by a server to synchronize a partition with another server. |
BYTE; PartitionDistName; WORD Length-Preceded RDN of root object of partition |
163 |
SYNC_SCHEMA Records a request by a server to synchronize its schema with another server. |
(None) |
164 |
UPDATE_REPLICA Records making updates to a replica as a result of a skulk from another server. |
BYTE; ReplicaName; WORD Length-Preceded RDN of root object of replica that is updated |
165 |
UPDATE_SCHEMA Records making updates to the schema as a result of a skulk from another server. |
BYTE; ClientServerName; WORD Length-Preceded RDN of server object |
166 |
VERIFY_PASSWORD Records an attempt to verify a user's password. |
BYTE; EntryName; WORD Length-Preceded RDN of specified User object entry |
167 |
ABORT_JOIN Records a failed attempt to join Directory partitions. |
BYTE; ParentRootEntryName; WORD Length-Preceded RDN of root object (container) that was to be parent of joined tree BYTE; ChildRootEntryName; WORD Length-Preceded RDN of root object that was to be joined as a child |
168 |
RESEND_ENTRY Records an attempt to resend an NDS update. |
BYTE; EntryName; WORD Length-Preceded RDN of object to be replicated |
169 |
MUTATE_ENTRY Records a change to an NDS object's class.unicode; EntryName; RDN of object to be changed |
BYTE; NewClassName; Name of object's new class BYTE; FieldName []; WORD Length-Preceded |
170 |
MERGE_ENTRIES Records a merger of two NDS containers. |
BYTE; WinnerEntry; WORD Length-Preceded RDN that continues to exist in merged container BYTE; LoserEntry; WORD Length-Preceded RDN that loses its identity after being merged. |
171 |
END_UPDATE_REPLICA Records completion of replica update |
BYTE; EntryName; WORD Length-Preceded RDN of root object of replica |
172 |
END_UPDATE_SCHEMA Records completion of schema update. |
BYTE; EntryName; WORD Length-Preceded RDN of server object. |
173 |
CREATE_BACKLINK Records creation of a back pointer to an NDS object on another server. |
BYTE; EntryName; WORD Length-Preceded RDN of NDS object entry. |
174 |
MODIFY_ENTRY Records modification of an NDS object entry and (potentially) an attribute of that object. If multiple attributes are modified by this action, NDS writes an audit record for each attribute. |
BYTE; EntryName; WORD Length-Preceded RDN of object BYTE; AttrName; WORD Length-Preceded Name of attribute that is modified (optional) |
176 |
NEW_SCHEMA_EPOCH Records changes to the schema epoch. |
(None) |
177 |
CLOSE_BinderyRecords that bindery was closed |
(None) |
178 |
OPEN_BINDERYRecords that bindery was opened |
(None) |
Events 58 (AUDITING_ACTIVE_CONNECTION_RCD) and 98 (AUDITING_CONTAINER_NAME_RCD2) are pseudo-events (that is, they do not represent actual events).
Pseudo-events are used so that each audit data file can be self-contained. If a user logs in, event 109 (ADS_LOGIN) is generated (as shown in Table 25). If a subsequent audit reset occurs, the pseudo-event 58 would be generated for each logged in user, so the new audit data file would have a record of all logged in users (thus making subsequent references in the audit file to connection numbers meaningful).
Event 98 is always the first audit event in each container audit file, recording the container which caused generation of the audit file.
There is a one-to-one correspondence between the binary audit record format and the textual representation of the event. Refer to View Audit File and View Audit History for examples of the AUDITCON report format.