Date: Tue, 19 Dec 1995 09:46:15 -0500 Reply-To: The NOMAD2 Discussion List Sender: The NOMAD2 Discussion List From: "Darrell R. Pitzer" Subject: NO SUBJECT From: Darrell R. Pitzer Subject: Securing a db against knowledgable opponent Regarding the post about securing a shared database from a knowledgeable opponent (original post omitted to save space), I think that David TvE et al have outlined a number of good ideas. Here are a couple more: (a) You CAN provide userid based security in the profile. The database profile will be executed on the server, so hide it (e.g., make it an A0 file if you are on VM). In the database, put in a table that is keyed on userid (or userid & node if you are using NOMAD's remote shared database feature). Add some items to that table that tell you what to do if a userid tries to connect to the database. (e.g., here, we have an item that says who can/cannot change the userid/permission table ... if they can't, we do a MODIFY ACCESS READONLY on that table). In the profile, user &&Userid to look up the user in the permission table. If it is the "bad actor", deny access (in TRANS mode, do a DBCLEAR and EXIT), or if he/she has to have access, print a message saying that access is being logged, etc. If this person has to have access to the database, and you are worried that they might see the userid/permission table, then REMOVE that table after you've looked them up & set up security based on their userid. I've not found a way around a database profile security check (on VM). I'm sure that Thomson would be interested if you found a way. (b) Have your database profile activate the application, and after the application ends, have the database profile remove the CHANGE/INSERT/REPLACE/DELETE & SLIST commands. Also, do a DBCLEAR to keep them from seeing the database. If they need access in interactive NOMAD for reporting, you could do a MODIFY ACCESS READONLY on all segments just to keep them from finding a way to change things. E.g., call MAINPROG; !-- Invokes your menu application --! trans; remove prescan commands change replace insert delete slist; modify MASTER1 access readonly; modify MASTER2 access readonly; ...etc.... untrans; You could add a check on a field from the permission table if you need to let certain userids (e.g., your own) still have access after the application (e.g., add an IF block around the TRANS/UNTRANS statements above: IF &PERM_DBA <> 'Y' THEN DO;) There isn't a way to activate a shared database without going through the profile, and if your profile changes the NOMAD environment as above, they can't do anything nasty or even see what the database looks like (by REMOVE on the SLIST command). Regards, Darrell Pitzer, Exxon R&D, (504) 359-1130, Darrell.R.Pitzer@Exxon.Sprint.COM back to index