C
Charles Hudson
Please pardon yet another post on the subject of Access and user-level
security. I am inexperienced and greatly appreciate any help I can
receive. I would like to ask a question about the internal organization of
MS Access (or, perhaps, Jet) security.
I am developing an application which will give multiple users access to
various tables and forms, and with various permissions for reading,
entering, updating and deleting data. Eventually this will be deployed on
the Internet. I have read and experiemented and thus far have successfully
created a new workgroup, added a password for the Admin role, added groups,
users, user IDs and passwords for users and allocated permissions on the
database objects. I have demonstrated that these "roles", to borrow an
Oracle term, are restricted as intended. Some questions remain about
andministering multiple users, multiple System.mdw files ("workgroups") and
remote logins to a secured database.
As I understand matters, the Microsoft Jet engine enforces Access security
rules, and security is always enforced when Jet runs, according to the
settings it reads. The System.mdw file contains the security settings for
all users. Upon installation, Access creates the System.mdw file as a
default, with the only user, Admin, as a member of the Admins and Users
groups, and places the .mdw file in the owner's documents and settings path.
Presumably, Access knows where to reference this file. As a member of
Admins, Admin is has all permissions for all objects and, by default, there
is no password for this user. When anyone logs on to the unsecured
database, they are logging on as Admin, all-powerful, no password required.
In order to secure the database it is necessary to at least create a
database password. Doing so will create a prompt for any (anonymous) user
to gain access to the database, but once admitted, they are once again
all-powerful Admin. In order to differentiate powers, as it were, it is
necessary to define "user-level security", which means, at a minimum,
creating a password for the Admin. Once Admin has a password created for
their account, the database can no longer be accessed without specifying a
"user name" and password, if any, both. In the previous case we assume no
database password has been created. I don't know what would happen if both
a database password and user-level security were enforced, or if they can be
at the same time.
The Admin can create other users and groups, and add users to groups. If a
user has been created, the Admin can also create a password for them, or can
leave this field blank. If the password is blank, the user can create their
own, using the same security tools the Admin has used, albeit with fewer
options, if they are not a member of the Admins group themselves. Once
users are individuated, permissions can be granted for various groups of
users: some, like the Admins, can set permissions for users and other groups
that Admins may have created. "User-level" (non-Admins) have their
permissions set for them. The Admins grant or deny read, write, update and
delete permissions for tables, forms, queries, reports, macros etc.
Here I am at the limits of my knowledge:, and the questions begin:
Permissions are attached to the object itself, say my references. I take
this to mean that if a table were imported into another database (by linking
or by copying, does it make a difference?) then the permissions would
accompany it. In practice, does this mean that a database that was
unsecured now requires a logon?
A workgroup is a collection of users, objects, groups, permissions, and
passwords, it seems. It is represented by a file with .mdw as its
extension. Is a workgroup file associated with Access itself, with Jet, or
with a database? Does Access keep track of where this file is, internally
with some pointer? Is it a Registry key? Does Access read this file each
time it starts up, or only when it opens an associated database - in other
words, is the pointer to the security .mdw file stored in the database
itself?
And what about the Jet engine? I created a secured database that required
user names and password access, then stored it in a webroot folder and
created ASP pages to query and post to the database. Despite being password
protected, no username or password was provided in the ADODB connection
string, yet the information was returned to my browser from a query. it's
possible that I received the contents of a browser cache instead of a
database hit, I realize now, but I don't think that's what happened.
If it is possible to have more than one workgroup, there must be more than
one .mdw file. Some references suggest making a backup of System.mdw and
renaming it something other than System.mdw. How does Access know that you
have done this? How does one switch between multiple .mdws, as one post
suggested earlier? The workgroup administrator offers the option of
creating a new workgroup or joining an existing one. Who or what is it that
"joins" a workgroup: the Access application, the current database or the
user?
In order for the .mdw file to be read by others on a network, it has to be
in a shared folder, say my references. If my database were in a shared
folder but my system.mdw folder were not, could others open the database in
question? If they were using a copy of Access on their own machine, would
they reference their local System.mdw file containing different settings,
and perhaps over-ride security?
As you can see, I'm confused. I have reference books but they are somewhat
sketchy. Sorry for the long-winded post, but if anyone has information on
these issues, please feel free to respond. Again, my apologies for going
over the same ground once again.
-CH-
security. I am inexperienced and greatly appreciate any help I can
receive. I would like to ask a question about the internal organization of
MS Access (or, perhaps, Jet) security.
I am developing an application which will give multiple users access to
various tables and forms, and with various permissions for reading,
entering, updating and deleting data. Eventually this will be deployed on
the Internet. I have read and experiemented and thus far have successfully
created a new workgroup, added a password for the Admin role, added groups,
users, user IDs and passwords for users and allocated permissions on the
database objects. I have demonstrated that these "roles", to borrow an
Oracle term, are restricted as intended. Some questions remain about
andministering multiple users, multiple System.mdw files ("workgroups") and
remote logins to a secured database.
As I understand matters, the Microsoft Jet engine enforces Access security
rules, and security is always enforced when Jet runs, according to the
settings it reads. The System.mdw file contains the security settings for
all users. Upon installation, Access creates the System.mdw file as a
default, with the only user, Admin, as a member of the Admins and Users
groups, and places the .mdw file in the owner's documents and settings path.
Presumably, Access knows where to reference this file. As a member of
Admins, Admin is has all permissions for all objects and, by default, there
is no password for this user. When anyone logs on to the unsecured
database, they are logging on as Admin, all-powerful, no password required.
In order to secure the database it is necessary to at least create a
database password. Doing so will create a prompt for any (anonymous) user
to gain access to the database, but once admitted, they are once again
all-powerful Admin. In order to differentiate powers, as it were, it is
necessary to define "user-level security", which means, at a minimum,
creating a password for the Admin. Once Admin has a password created for
their account, the database can no longer be accessed without specifying a
"user name" and password, if any, both. In the previous case we assume no
database password has been created. I don't know what would happen if both
a database password and user-level security were enforced, or if they can be
at the same time.
The Admin can create other users and groups, and add users to groups. If a
user has been created, the Admin can also create a password for them, or can
leave this field blank. If the password is blank, the user can create their
own, using the same security tools the Admin has used, albeit with fewer
options, if they are not a member of the Admins group themselves. Once
users are individuated, permissions can be granted for various groups of
users: some, like the Admins, can set permissions for users and other groups
that Admins may have created. "User-level" (non-Admins) have their
permissions set for them. The Admins grant or deny read, write, update and
delete permissions for tables, forms, queries, reports, macros etc.
Here I am at the limits of my knowledge:, and the questions begin:
Permissions are attached to the object itself, say my references. I take
this to mean that if a table were imported into another database (by linking
or by copying, does it make a difference?) then the permissions would
accompany it. In practice, does this mean that a database that was
unsecured now requires a logon?
A workgroup is a collection of users, objects, groups, permissions, and
passwords, it seems. It is represented by a file with .mdw as its
extension. Is a workgroup file associated with Access itself, with Jet, or
with a database? Does Access keep track of where this file is, internally
with some pointer? Is it a Registry key? Does Access read this file each
time it starts up, or only when it opens an associated database - in other
words, is the pointer to the security .mdw file stored in the database
itself?
And what about the Jet engine? I created a secured database that required
user names and password access, then stored it in a webroot folder and
created ASP pages to query and post to the database. Despite being password
protected, no username or password was provided in the ADODB connection
string, yet the information was returned to my browser from a query. it's
possible that I received the contents of a browser cache instead of a
database hit, I realize now, but I don't think that's what happened.
If it is possible to have more than one workgroup, there must be more than
one .mdw file. Some references suggest making a backup of System.mdw and
renaming it something other than System.mdw. How does Access know that you
have done this? How does one switch between multiple .mdws, as one post
suggested earlier? The workgroup administrator offers the option of
creating a new workgroup or joining an existing one. Who or what is it that
"joins" a workgroup: the Access application, the current database or the
user?
In order for the .mdw file to be read by others on a network, it has to be
in a shared folder, say my references. If my database were in a shared
folder but my system.mdw folder were not, could others open the database in
question? If they were using a copy of Access on their own machine, would
they reference their local System.mdw file containing different settings,
and perhaps over-ride security?
As you can see, I'm confused. I have reference books but they are somewhat
sketchy. Sorry for the long-winded post, but if anyone has information on
these issues, please feel free to respond. Again, my apologies for going
over the same ground once again.
-CH-