Preventing outside applications from changing values in a Notes database?

Our audit department seems to be concerned that users have the ability to modify documents using external applications like NotesSQL or COM.

We all know that the ACL can be used to prevent a user from modifying a particular document. Let us assume that the ACL is configured properly and a user has legitimate author access to a document. A form can be used to limit what values a user can put in a particular field or prevent them from changing a particular field at all. We can disable Create private agents to prevent the user from changing a value on a document outside the allowed ranges of values. But what about external methods such as NotesSQL or COM (Visual Basic). Is there any way to limit the changing of values on a document to using only the Notes form?

The only way I can think of is to create a “fake form” . This “fake form” would be filled out by the user and a temporary document would be created. A agent (which would check the values) would use this document to create or update the actual document. This is not a very attractive solution as it would be very time consuming to create an application.

Any other ideas on how to ease audits concerns?

Subject: Preventing outside applications from changing values in a Notes database?

Sorry, but that’s just the way Notes is structured. The data stored in the database is proctected by the ACL, Reader/Author fields, Encryption, and Only-Editor-can-modify fields only. There is nothing that you can build into the GUI design that will protect your data from outside access.

The up-side/down-side to this is that Notes databases can be access, and modified by any tool, as long as the user has ACL access to the document. If I’m an editor, I have the authority to modify any field in any document that I’m a reader for - and that IS the Notes security model.

If you need to secure data tighter than that, it needs to be done at the very core of your application.

Only allow Author access for general users

If a user does not need to modify a field, mark it as Editor Update Only

Use Reader fields

If there’s data that must be protected, store it in documents that the user has no update access to, and update it via a trusted signed agent

Store the data in a external database, and write the code to extract and update values

You may also need to consider that the Notes security model does not meet your business needs, and look at alternate tools.

Subject: Preventing outside applications from changing values in a Notes database?

I can think of following solution:1) On the form create a computed field, which computes to the current time. The field works only if you save the document in front-end using Notes (or web) client.

  1. Create a server add-on, which compares the value of that computed field with current time. If difference between current time and field’s value is more than X seconds, add-on refuses to save the document, or sets a flag on it.

NotesSQL and COM clients are not able to automatically update the computed field to the correct value (unless programmed to do so), thus such changes will be caught by the add-on.

For an example of a similar add-on, see here:

http://www.openntf.org/Projects/pmt.nsf/ProjectLookup/Trigger%20Happy

There are also a couple of similar commercial applications, which are used for monitoring of changes, but probably can be modified for your needs. Here is an example of such app: http://www.dysant.com/site/en/ToAuFAQ/show.html

/Andrei

http://dominounlimited.blogspot.com