So you want to protect sensitive data. I'm thinking Salary information
would be a good candidate, just so we don't make this too abstract of
a discussion.
The Employee table has a 1:1 relation with the Salary table
(EmployeeID, SalaryAmount).
You are considering putting this table in the front-end (FE). I think
that's only a good idea if the data is readonly (next time we adjust
salary we will deploy a new version of the FE) or if only one person
uses the information (perhaps one person in the Payroll dept). In most
other cases the table should be in the BE.
A very cheap way of protecting the data is to hide the Salary table.
Right-click the table and check the Hidden attribute. The innocent
user will never realize it is there. By default the option to show
hidden and system objects is off.
A much more complicated option is to use ULS = user-level security
(aka workgroup security) which is an advanced topic you should not get
into without first downloading, studying, and fully understanding the
Security FAQ from microsoft.com. As my friend Larry says: 37 pages
without any filler.
Encryption is NOT a good solution by itself. The SecFaq adresses this
to some extent. You have to realize what Encryption of a database
does: it prevents you from opening the db in Notepad or any Hex editor
and seeing ANYTHING useful. It does NOT prevent any Access user from
opening the Salary table and seeing it in plain text.
You could encrypt the SalaryAmount column using your own encryption
scheme. For example you could add 123456789 dollars to the annual
amount and to the casual observer this column (especially if given an
innocent name like InsuranceID, in an innocent table name like
tblInsurance) it would seem to contain only uninteresting garbage
information. This technique is called "hiding in plain sight".
Anyway, this is a big topic and I'm hoping some of these ideas pertain
to your situation.
-Tom.
Microsoft Access MVP
[quoted text clipped - 29 lines]