[comp.os.vms] Protected access to data files

oakley%36975%1029%astro.span@SDS.SDSC.EDU (07/29/87)

    It would be desirable if non-privileged programmers could control
    access to their data files through the programs that they write. An 
    "end-user" could only access the data through the program - not
    DCL or a program that the end-user might write. A solution to
    this problem should NOT require the system manager to install the
    non-privileged programmers image.
    
    I have been thinking about how to provide this capability and
    have some ideas. But I heard a rumor the other day that DEC was
    going to provide this capability in a future release. The
    capability would involve adding another kind of ACE. I attended 
    several futures sessions at Nashville, but never heard of this.
    Has anyone heard of this capability being provided?

    The approach I have tried involves a pair of user-written system 
    services that can be called from an application program. One
    system service is used to change the process uic to that of the
    uic of the image file. The second system service would restore
    the process uic to what it was originally. A run-down handler
    and control-C and control-Y handlers are also provided so that 
    the end-user could not escape to DCL with the wrong uic.

    I have observed that VMS performs a protection check when a
    file is opened, not when information in the file is 
    read/written/updated/deleted. Thus it would only be necessary
    to change the process uic to open the file. The process uic
    could be restored after the file is open.

    Does anyone have any ideas or see any problems with this approach? 
    Has anyone ever done this, or is there a better solution? Thanks!

    Mark Oakley
    Battelle Memorial Institute
    (614) 424-7154

    ARPAnet:  oakley%36975%1029%astro.span@sdsc-sds.ARPA
              (I know this is a deadfully long address. We hope
               to become an ARPAnet node in the near future.)

dp@JASPER.PALLADIAN.COM (Jeffrey Del Papa) (07/31/87)

    Date:    Tue, 28 Jul 87 21:45:09 GMT
    From:     oakley%36975%1029%astro.span@Sdsc-Sds.Arpa

	It would be desirable if non-privileged programmers could control
	access to their data files through the programs that they write. An 
	"end-user" could only access the data through the program - not
	DCL or a program that the end-user might write. A solution to
	this problem should NOT require the system manager to install the
	non-privileged programmers image.
    
	I have been thinking about how to provide this capability and
	have some ideas. But I heard a rumor the other day that DEC was
	going to provide this capability in a future release. The
	capability would involve adding another kind of ACE. I attended 
	several futures sessions at Nashville, but never heard of this.
	Has anyone heard of this capability being provided?

Honeywell Multics (which has been abandoned) had this feature.

	The approach I have tried involves a pair of user-written system 
	services that can be called from an application program. One
	system service is used to change the process uic to that of the
	uic of the image file. The second system service would restore
	the process uic to what it was originally. A run-down handler
	and control-C and control-Y handlers are also provided so that 
	the end-user could not escape to DCL with the wrong uic.

	I have observed that VMS performs a protection check when a
	file is opened, not when information in the file is 
	read/written/updated/deleted. Thus it would only be necessary
	to change the process uic to open the file. The process uic
	could be restored after the file is open.

	Does anyone have any ideas or see any problems with this approach? 
	Has anyone ever done this, or is there a better solution? Thanks!

how do you protect the system services? (wsince you don't want to install
the image...]

	Mark Oakley
	Battelle Memorial Institute
	(614) 424-7154

	ARPAnet:  oakley%36975%1029%astro.span@sdsc-sds.ARPA
		  (I know this is a deadfully long address. We hope
		   to become an ARPAnet node in the near future.)

<dp>

Peck@RADC-MULTICS.ARPA (Rodney) (08/04/87)

  oh please don't compare VMS to Multics.  They are entirely different.
Multics was designed from the beginning to have ACLs and Rings and
two-dimentional segments.  VMS has sort-of forced ACLS into DCL after 4
major revisions.
  Anyway, Multics has NOT been abandoned.  Note my address.
 
  rodney peck II, a proud Multician.

dp@JASPER.PALLADIAN.COM (Jeffrey Del Papa) (08/04/87)

    Date:  Tue, 4 Aug 87 11:49 EDT
    From:  Rodney <Peck@RADC-MULTICS.ARPA>


      oh please don't compare VMS to Multics.  They are entirely different.
    Multics was designed from the beginning to have ACLs and Rings and
    two-dimentional segments.  VMS has sort-of forced ACLS into DCL after 4
    major revisions.
      Anyway, Multics has NOT been abandoned.  Note my address.
 
      rodney peck II, a proud Multician.


it was supposed to be an example of something that got it right. the reference to
abandonment was from honeywells point.. last I heard, they shut the group down. I
assumed that there were still user sites (tho I think MIT is going soon)
<dp>

kenw@noah.arc.CDN (Ken Wallewein) (08/05/87)

>  It would be desirable if non-privileged programmers could control
>    access to their data files through the programs that they write. An
>    "end-user" could only access the data through the program - not
>    DCL or a program that the end-user might write. A solution to
>    this problem should NOT require the system manager to install the
>    non-privileged programmers image.

  You're talking about an application for one of my pet ideas: A way to access
user-written software via a device driver. 
 
  Consider: You define a logical for the file/service desired, and everyone
opens it like a file. On the other end, maybe it opens a file, maybe it runs a
program that opens a file, maybe something else. The server program may use
it's own access control list, or whatever. 

  A given piece of application software shouldn't need to distinguish between
active and passive files. Just open it, do reads and writes, and close it.
Who care what the actual data path is?

  Except... say you wanted your files to be encrypted, but you didn't want
every application that accessed them to containg the encryption/decryption
algorithms? Active files to the rescue! Your front end does it all.

  You could sort of fake it by using mailboxes and a detached process. However,
access control is poor, and there is no way to do special open/close handling.
Also read/write syncronization is very weak, and shared access could get rather
tricky. What we want is transparency at the user level, right?

  I think such a piece of software would have so many uses we'll never be able
anticipate them all. Come on, all you device driver hacks, what do you think?
One of these days, if I ever learn enough about it, I way just write one
myself! 

/kenw
                                                                 A L B E R T A
Ken Wallewein                                                  R E S E A R C H
                                                                 C O U N C I L

MOSS@cs.umass.EDU ("Eliot Moss, GRC A351B, x5-4206") (08/06/87)

Funny you should talk about using a device driver to fire up a user program
for access to files, etc. You see, years ago at an Institute not so far away
(MIT), there was (still is perhaps) an operating system called ITS for the
PDP-10 and its descendants. While definitely very much a home brew system
full of hacks (even the name ITS is a joke: Incompatible Timesharing System;
remember CTSS, the Compatible Time SHaring System?), ITS did provide a lot
of advanced features. One was the ability to run many processes at once,
organized as a tree in which each node could control its children. Another,
relevant to the case at hand, was the ability to define new devices in
software, that could do anything whatsoever (e.g., provide protected access
to files -- except ITS has no protection, so why bother, unless maybe the
active program decrypts an encrypted file, but beware! The source is
probably accessible to everyone...) Anyway, it worked by causing a job to be
fired off for each open on the device (called a JOB device, logically
enough), and the job could then open the "other side" of the device (called
the BOJ device) and extract details of each I/O request as they became
available. The OS would translate all the possible requests to a smaller
number of requests in canonial form, simplifying the BOJ device end, and
would also handle providing the data back to the client (as well as
accepting data for writes). I actually wrote one of these; it displayed a
laser printer spooler queue as I recall. Anyway, it's been done before; you
could probably get the spec to get ideas on what is necessary; and I think
it's a great idea to try to build one for VMS!

						Eliot Moss