Security logging

I'm working on an RFP for a new client who will go live on 15.1. Part of their requirements is full logging with attribution of security changes. Specifically, they need to capture every time:

  • A login is added or removed.
  • Password, disabled flag, enable date, expire date, module access levels are changed. (Logging the hashed password is sufficient and optional.)
  • User is added or removed from a role.
  • Permissions are granted or removed from a user or role.
  • Keywords (legacy iMIS) are changed for a user.
  • Keywords are changed for an area of iMIS.
  • Security-related configuration items are changed. (E.G. things along the lines of "allow delete from palette".

With each event, they need to capture date/time and the iMIS user (when known) who made the change. If a change is made outside of iMIS, it must still be logged using the Windows or SQL credentials.

I know how to do all this on the legacy iMIS tables using triggers, since under Model 2 JSMITH_imis_i maps to iMIS user JSMITH. With the app server in the mix, I can only tell the SQL credentials for changes coming from iMIS, but hopefully iMIS logs what I need with UpdatedByUserKey in the right places. Fortunately, they will follow best practices on the SQL side: each user will have their own login, and none will use "sa".

My questions:

  1. How much of this will iMIS log automatically? Where can I get to it?
  2. Since I need to cover the not-through-iMIS scenario, it sounds like I will still need triggers. What tables should I look at to determine when a user is added/removed from a role?
  3. Where do I look to see permissions added/removed for a role?
  4. Where do I capture security-related configuration changes?

This is a critical item for this client.

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

Adding/Removing logins,

Adding/Removing logins, changing passwords, module access levels, etc: Track UserMain, Users, Name_Security, and aspnet_Users and aspnet_Membership.

Tracking role/group memberships: UserRole, GroupMember, GroupMemberDetail, Name_Security_Groups. Possibly UserToken could simplify things a little bit (it's updated every time the user logs in, sometimes more often).

Permissions changed: Track AccessMain, AccessItem, AccessArea, and any AccessKey columns in the DB (definitely the one in DocumentMain, for example).

Keywords: Track Gen_Tables (keyword definitions), Users (for user keywords).

Security-related config items: System_Params and SystemConfig.

Things that iMIS will track the last update user for you: UserMain, Users, GroupMember, GroupMemberDetail, Access*, most tables with AccessKey columns, SystemConfig

That should at least get you to the point where you can ask more specific questions. :)

Sounds like I'm on the right track.

It sounds like my guesses were on the right track. I'll definitely have to dig into some of those more specific questions.

Thanks for the quick response to an urgent issue!

-- Bruce