There is no doubt that "user-level security" is not supported any longer,
with the Access 2007 file format (.accdb). See
http://office.microsoft.com/en-us/access/HA012301871033.aspx?pid=CH100621891033.
So, what I am looking for is if anyone has created, or knows of, a guide to
replicating "user-level security" via VBA within the new Access 2007 file
format, or if it is even possible. Can anybody help me?
|
|
0
|
|
|
|
Reply
|
Utf
|
3/1/2010 9:56:06 PM |
|
I went with a solution that uses 3 tables to manage what person does and
does not have access to.
tblMenuFunctions - List of menu fuctions
tblUserProfiles - List of 'groups' to which a user can belong with relevant
descriptions (Regular Access for Warehouse)
tblUserProfileDetails - List of child records to tblUserProfiles that
defines which Menu Functions belong to a group
tblUsers - List of users that captures the identifies which group their
Windows User ID belongs to
I grabbed some code from mvps.org that gets the Windows User Id of the
person currently logged on to the machine. The value is then used to get the
group that the person belongs to and subsequently the Menu Functions that
they have access to.
In short, I'm using their Windows User ID and several tables to fill a
listbox on the main form that the user has access to.
tblMenuFunctions
ShortName LongName OpensForm
FormName SortOrder ExposeFunction AccessFullVersion
Only
AddShow Show Information - Add Show False
Null 500 False
False
QuitApp Quit & Exit Access False
Null 9999 True
False
TrailerActivity Trailer Activity
True frmTrailerActivity 1000 True
False
OpensForm & FormName allows the code behind the Main Form to be streamlined
using the .Column(n) property of the list box to grab the neccessary
information to Open the Form, all other code resides in individual modules
that are called by a SELECT CASE. The double click on the list box runs it
all. SortOrder allows for a custom sort. ExposeFunction indicates if the
function should be displayed on the main form, there are several points in
the application where the user can Add a Show, however the idea was to
expose the functionality on those forms as opposed to the main form.
AccessFullVersionOnly restricts the function if the user is not using the
full version of Access, like showing the DB window. It serves the dual
function of keeping unauthorized users out of the DB window, since they only
have the Runtime only and it prevents an error from being thrown if the
function happens NOT to be available at all.
tblUserProfiles
ShortName LongName Description
Admin Administration
LTSmith User Profile - LT Smith User specific
profile for LT Smith
tblUserProfileDetails
ID UserProfileShortName
MenuFunctionShortName
(autonumber) Admin
PartMaintenance
Admin
QuitApp
I've been wanting to write it up and publish it, but just haven't had the
time.
"Barry" <Barry@discussions.microsoft.com> wrote in message
news:8D4394AD-D55B-4B62-9BC8-1C809045C373@microsoft.com...
> There is no doubt that "user-level security" is not supported any longer,
> with the Access 2007 file format (.accdb). See
> http://office.microsoft.com/en-us/access/HA012301871033.aspx?pid=CH100621891033.
> So, what I am looking for is if anyone has created, or knows of, a guide
> to
> replicating "user-level security" via VBA within the new Access 2007 file
> format, or if it is even possible. Can anybody help me?
|
|
0
|
|
|
|
Reply
|
David
|
3/2/2010 12:22:48 AM
|
|
Barry wrote:
> There is no doubt that "user-level security" is not supported any longer,
> with the Access 2007 file format (.accdb). See
> http://office.microsoft.com/en-us/access/HA012301871033.aspx?pid=CH100621891033.
> So, what I am looking for is if anyone has created, or knows of, a guide to
> replicating "user-level security" via VBA within the new Access 2007 file
> format, or if it is even possible. Can anybody help me?
If you can use Active Directory, have a look at:
http://accesssecurityblog.com
If you don't have AD, I'm sure you can come up with something similar
(e.g. combination of user name + computer name for instance).
Be aware while this is very effective at providing object-level security
and navigation access, it doesn't actually protect data within the file
itself. If you need the data to be protected, then you would need to
move data into a server-based RDBMS, of which there are free editions
such as MySQL, PostgreSQL, SQL Server Express, etc.
If you are after something more "corral" than "security", then maybe
this may be interesting to you:
http://www.utteraccess.com/forum/index.php?showtopic=1917534
HTH.
|
|
0
|
|
|
|
Reply
|
Banana
|
3/2/2010 12:27:16 AM
|
|
Crap, I posted a length reply and its not here.
I went with a solution that defined Menu Functions in one table, Users,
UserProfiles and UserProfileDetails in other tables. The Users table lists
out users and contains their Windows User Id to tie it to a specific user.
UserProfiles describes user groups such as 'Admin', 'Warehouse', etc.
UserProfileDetails defines the MenuFunctions that a specific group is
authorized to use. There's code on mvps.org that returns the User Id of the
person currently logged in to Windows. I use that to pull the UserProfile
that the person belongs to and subsequently the MenuFunctions they they're
authorized to use and then populate a List Box on the main form with the
result. If somebody does open the .mdb file from the lan, they're simply
presented with a blank list box and a QUIT button. If a user is set up,
they're automatically presented with the functions that they have access
to.To protect the underlying tables from being viewed the have the prefix
USys which is an old trick telling Access that they are System Tables and
should be hidden. An alternative would be to connect to the tables to grab
the menu functions the person has access to and then detach so that no one
can actually see them without digging into the code, impossible if its a
MDE.
"Barry" <Barry@discussions.microsoft.com> wrote in message
news:8D4394AD-D55B-4B62-9BC8-1C809045C373@microsoft.com...
> There is no doubt that "user-level security" is not supported any longer,
> with the Access 2007 file format (.accdb). See
> http://office.microsoft.com/en-us/access/HA012301871033.aspx?pid=CH100621891033.
> So, what I am looking for is if anyone has created, or knows of, a guide
> to
> replicating "user-level security" via VBA within the new Access 2007 file
> format, or if it is even possible. Can anybody help me?
|
|
0
|
|
|
|
Reply
|
David
|
3/2/2010 1:44:22 PM
|
|
David C. Holley wrote:
> To protect the underlying tables from being viewed the have the prefix
> USys which is an old trick telling Access that they are System Tables and
> should be hidden. An alternative would be to connect to the tables to grab
> the menu functions the person has access to and then detach so that no one
> can actually see them without digging into the code, impossible if its a
> MDE.
Nice trick, David.
So Barry & other readers are aware - USys prefixing works well for
hiding from UI, but there is an option to 'view system tables' which it
will then show up and it does not actually deny access to the table, so
this is just security through obscurity. May be good enough for casual
users, though.
David - I'm not following how connecting to tables to grab menu
functions hides the function? Seem to me that it would have to be
completely inside the VBA code to be non-diggable? Also, note that all
literals and constants are plaintext and thus can be readable even in a
MDE when opened in a hex editor.
|
|
0
|
|
|
|
Reply
|
Banana
|
3/2/2010 1:59:05 PM
|
|
Thanks guys...do you know where I may find guidance or examples of creating
the permissions (such as pointing to the permission tables David explained)
in VBA?
"Banana" wrote:
> David C. Holley wrote:
> > To protect the underlying tables from being viewed the have the prefix
> > USys which is an old trick telling Access that they are System Tables and
> > should be hidden. An alternative would be to connect to the tables to grab
> > the menu functions the person has access to and then detach so that no one
> > can actually see them without digging into the code, impossible if its a
> > MDE.
>
> Nice trick, David.
>
> So Barry & other readers are aware - USys prefixing works well for
> hiding from UI, but there is an option to 'view system tables' which it
> will then show up and it does not actually deny access to the table, so
> this is just security through obscurity. May be good enough for casual
> users, though.
>
> David - I'm not following how connecting to tables to grab menu
> functions hides the function? Seem to me that it would have to be
> completely inside the VBA code to be non-diggable? Also, note that all
> literals and constants are plaintext and thus can be readable even in a
> MDE when opened in a hex editor.
> .
>
|
|
0
|
|
|
|
Reply
|
Utf
|
3/2/2010 2:41:02 PM
|
|
The idea is that the Usys linked tables are linked on the fly, queried, and
then detached. That way if a user happens to expose the database window and
changes the view of the system objects, they don't see them at all because
they simply aren't there. You'd use code to attach to them just long enough
to get the information and then detach. By placing the code within an MDE,
the user would have no way of knowing that the tables are used at all.
"Banana" <Banana@Republic> wrote in message
news:4B8D19A9.7070505@Republic...
> David C. Holley wrote:
>> To protect the underlying tables from being viewed the have the prefix
>> USys which is an old trick telling Access that they are System Tables and
>> should be hidden. An alternative would be to connect to the tables to
>> grab the menu functions the person has access to and then detach so that
>> no one can actually see them without digging into the code, impossible if
>> its a MDE.
>
> Nice trick, David.
>
> So Barry & other readers are aware - USys prefixing works well for hiding
> from UI, but there is an option to 'view system tables' which it will then
> show up and it does not actually deny access to the table, so this is just
> security through obscurity. May be good enough for casual users, though.
>
> David - I'm not following how connecting to tables to grab menu functions
> hides the function? Seem to me that it would have to be completely inside
> the VBA code to be non-diggable? Also, note that all literals and
> constants are plaintext and thus can be readable even in a MDE when opened
> in a hex editor.
|
|
0
|
|
|
|
Reply
|
David
|
3/2/2010 8:51:39 PM
|
|
Send me an email at David C Holley at Hotmail with periods for the spaces.
I'll send a sample mdb file.
"Barry" <Barry@discussions.microsoft.com> wrote in message
news:83C07CC5-C269-4431-B861-4A20B4A504D7@microsoft.com...
> Thanks guys...do you know where I may find guidance or examples of
> creating
> the permissions (such as pointing to the permission tables David
> explained)
> in VBA?
>
> "Banana" wrote:
>
>> David C. Holley wrote:
>> > To protect the underlying tables from being viewed the have the prefix
>> > USys which is an old trick telling Access that they are System Tables
>> > and
>> > should be hidden. An alternative would be to connect to the tables to
>> > grab
>> > the menu functions the person has access to and then detach so that no
>> > one
>> > can actually see them without digging into the code, impossible if its
>> > a
>> > MDE.
>>
>> Nice trick, David.
>>
>> So Barry & other readers are aware - USys prefixing works well for
>> hiding from UI, but there is an option to 'view system tables' which it
>> will then show up and it does not actually deny access to the table, so
>> this is just security through obscurity. May be good enough for casual
>> users, though.
>>
>> David - I'm not following how connecting to tables to grab menu
>> functions hides the function? Seem to me that it would have to be
>> completely inside the VBA code to be non-diggable? Also, note that all
>> literals and constants are plaintext and thus can be readable even in a
>> MDE when opened in a hex editor.
>> .
>>
|
|
0
|
|
|
|
Reply
|
David
|
3/2/2010 8:52:34 PM
|
|
Banana <Banana@Republic> wrote in news:4B8C5B64.5030001@Republic:
> If you can use Active Directory, have a look at:
>
> http://accesssecurityblog.com
>
> If you don't have AD, I'm sure you can come up with something
> similar (e.g. combination of user name + computer name for
> instance).
>
> Be aware while this is very effective at providing object-level
> security and navigation access,
How, exactly, does AD provide "object-level security?" You're not
doing anything to protect the object from being opened or edited
with AD, all you can do is control access within your code. That may
be controlling "object availability" in terms of who can open
particular forms or reports via your coded user interface, but it
doesn't do anything regarding the security on how they are stored
and who has access to them outside the flow of your application.
I would not use the term "security" at all for anything you're doing
with AD, as it really isn't security by any definition of the term.
You're just controlling program flow and who has access via the
program to which parts of the app.
That's simply not security.
--
David W. Fenton http://www.dfenton.com/
usenet at dfenton dot com http://www.dfenton.com/DFA/
|
|
0
|
|
|
|
Reply
|
David
|
3/2/2010 9:10:34 PM
|
|
> The idea is that the Usys linked tables are linked on the fly, queried,
> and then detached.
Cool idea. Duly noted for future use. Thanks.
|
|
0
|
|
|
|
Reply
|
Stuart
|
3/2/2010 11:23:40 PM
|
|
David C. Holley wrote:
>The idea is that the Usys linked tables are linked on the fly, queried, and
>then detached. That way if a user happens to expose the database window and
>changes the view of the system objects, they don't see them at all because
>they simply aren't there. You'd use code to attach to them just long enough
>to get the information and then detach. By placing the code within an MDE,
>the user would have no way of knowing that the tables are used at all.
Instead of actually creating a linked Usys table, how about
just using a query with IN in the FROM clause?
--
Marsh
MVP [MS Access]
|
|
0
|
|
|
|
Reply
|
Marshall
|
3/3/2010 4:31:42 AM
|
|
David W. Fenton wrote:
> How, exactly, does AD provide "object-level security?" You're not
> doing anything to protect the object from being opened or edited
> with AD, all you can do is control access within your code.
We discussed this before, I think. By objects, I'm referring to
forms/reports and other general functionality. I had neglected to
mention that this also requires a MDE/ACCDE but the idea of using this
in conjecture with AD is to guarantee that a user won't get to the form
that would otherwise make it easy for them to update stuff that they
shouldn't be. MDE may prevent someone from editing Access objects but it
does nothing in regards of access control, hence the need for AD to
provide access control.
My previous reply also makes clear that it does nothing whatsoever to
actually protect the data itself, however, and moving it off to a server
based RDBMS is necessary if they are after the security against the data.
|
|
0
|
|
|
|
Reply
|
Banana
|
3/4/2010 1:21:41 AM
|
|
Marshall Barton <marshbarton@wowway.com> wrote in
news:95pro51r97k6k1ou5mr55ffsdidepe7ems@4ax.com:
> Instead of actually creating a linked Usys table, how about
> just using a query with IN in the FROM clause?
Or writing the recordsources on the fly with that.
--
David W. Fenton http://www.dfenton.com/
usenet at dfenton dot com http://www.dfenton.com/DFA/
|
|
0
|
|
|
|
Reply
|
David
|
3/4/2010 5:15:22 AM
|
|
|
12 Replies
394 Views
(page loaded in 0.23 seconds)
Similiar Articles: Possible to create user-level security in Access 2007 format w/VBA ...There is no doubt that "user-level security" is not supported any longer, with the Access 2007 file format (.accdb). See http://office.microsoft.... Create relationship by VBA Code - microsoft.public.access ...Possible to create user-level security in Access 2007 format w/VBA ... help with hidden relationship - microsoft ... security and the ability to code sign modules of ... VBA in Excel 2007 date formatting - microsoft.public.excel ...Possible to create user-level security in Access 2007 format w/VBA ... Date input mask - microsoft.public.access ... and the ability to code sign modules of Visual Basic ... Programatically open Access DB with user level security ...Possible to create user-level security in Access 2007 format w/VBA ..... is no doubt that "user-level security" is not supported any longer, with the Access ... How to set concurrent multiple user access on MS Access 2003 ...Possible to create user-level security in Access 2007 format w/VBA ... How to set concurrent multiple user access on MS Access 2003 ... Possible to create user-level ... VBA Input box (or MsgBox) with pull down or choices - microsoft ...Possible to create user-level security in Access 2007 format w/VBA ... I use that to pull the UserProfile that ... Nede to make Visio layers visible in VBA by using a ... Creating forms on the fly? - microsoft.public.access.forms ...Possible to create user-level security in Access 2007 format w/VBA ... The idea is that the Usys linked tables are linked on the fly, queried, and ... that claim? ... input mask for proper case on form - microsoft.public.access.forms ...Possible to create user-level security in Access 2007 format w/VBA ... input mask for proper case on form - microsoft.public.access.forms ... It's not a form property, it ... zipcode lookup table-Access 2007 - microsoft.public.access.forms ...Possible to create user-level security in Access 2007 format w/VBA ... It's not a form property, it's VBA code ... Format a social security in an Access report - microsoft ... Setting Default encryption level via GPO - microsoft.public.word ...Possible to create user-level security in Access 2007 format w/VBA ... Setting Default encryption level via GPO - microsoft.public.word ..... if that is possible and is ... Link Tables in MDE file - microsoft.public.accessPossible to create user-level security in Access 2007 format w/VBA ..... not supported any longer, with the Access 2007 file ... digging into the code, impossible if its ... Setting the Startup Options for an Access 2007 database using VBA ...... rather than the security and ... Full Access 2007; Creating User Interface Objects ... options in Office Access 2007. ... the database uses Visual Basic for Applications (VBA ... How to keep access report format in word - microsoft.public.access ...How To Sort Names And Social Security ... MS Access ... Possible to create user-level security in Access 2007 format ... How to save ms access 2003 report to pdf ... Import limit problem? - microsoft.public.access.formscoding ...... User Level Security ... possible > solution without going to an mde format. Thanks.This works okay.But I should just create ... 2007 Data Export Limit - microsoft.public.access ... Checklist w/in Checklists and pulling files into a word document ...I am trying to create a template for checklist in ... XML to HTM with VBA - microsoft.public.access ... Rendering ... from Another Program (Word 2007 ... Checklist w/in ... Office System 2010: List of Controls IDs - microsoft.public.word ...Possible to create user-level security in Access 2007 format w/VBA ... Office System 2010: List of Controls IDs - microsoft.public.word ... It is not possible to override ... Input Form Field Names in VBA - microsoft.public.access.forms ...Input Form Field Names in VBA - microsoft.public.access ... automatically in your Visual Basic for Applications ... ... pending input from the user (if even possible within VBA ... How to print multiple envelopes at same time w/return add only ...Possible to create user-level security in Access 2007 format w/VBA ..... AccessFullVersion Only AddShow Show Information - Add ... code on mvps.org that returns ... in ... Displaying FileStream from SQL Server 2008 to Access 2007 ...... in Access 2007 adp ... Format Date Display in Access ADP ... ... Possible to create user-level security in Access 2007 ... ... 2008, from, MS, Access, 2007, vba, ? Can't attach the AdventureWorks Database to my Sql Express ...Possible to create user-level security in Access 2007 format w/VBA ... Can anybody help me? If you can use ... access, it doesn't actually protect data within the ... Possible to create user-level security in Access 2007 format w/VBAPossible to create user-level security in Access 2007 format w/VBA - answer - There is no doubt that "user-level security" is not supported any longer, with the ... Possible to create user-level security in Access 2007 format w/VBAIf you can use Active Directory, have a look at: http://accesssecurityblog.com If you don't have AD, I'm sure you can come up with something similar Possible to create user-level security in Access 2007 format w/VBA ...There is no doubt that "user-level security" is not supported any longer, with the Access 2007 file format (.accdb). See http://office.microsoft.... Access 2007 user-level security not supported! - Microsoft Access ...... Access 2007 user-level security not supported!. Microsoft Access / VBA ... format, will I need to hand code user access ... possible future migration path to PostgreSQL for Access Security Considerations and Guidance for Access 2007Converting Databases to Access 2007 and Removing Jet User-Level Security ... from the earlier format to Access 2007 ACCDB ... updates to it. Is it possible to do this from VBA? Get started with Access 2007 security - Access - Office.com... security features from previous versions, including user-level security and the ability to code sign modules of Visual Basic for Applications ... Access 2007 file format or ... What happened to user-level security? - Access - Office.comUser-level security is not supported by the new file formats in Microsoft Office Access 2007. Resolution. You can continue to manage user-level security in database files ... Access 2007 user level security (lack thereof)Is it possible to create and work with user-level security from within the Visual Basic Editor, though in ACCDB file format? Re: Access 2007 ... your VBA s that when you make ... Creating Managed Add-ins for Access 2007 - Microsoft Corporation ...... written in Microsoft Visual Basic for Applications ... all with the same security level. (An ... you clarify if it is possible to package a COM addin with the Access 2007 ... Create relationship by VBA Code - microsoft.public.access ...Possible to create user-level security in Access 2007 format w/VBA ... help with hidden relationship - microsoft ... security and the ability to code sign modules of ... 7/22/2012 12:23:48 PM
|