David said:
Right, because anyone that we grant access to in SQL Server could use a
System DSN to create their own Access front end and connect to the tables in
SQL Server. The bet that we're making is that the users that we're
installing the app on don't have the interest or ability to do so.
Right. Also, as I noted earlier, this is a case where I think it makes
sense to trust the employees- the employees usually already have an
incentive to keep the system working so they won't want to fiddle with
it. If the company was sufficiently concerned about their disgruntled
employee stealing or tampering with the data, then I would think they
have much more bigger problem on their hands than the problem of
securing it properly! As long their computers are firewalled and
inaccessible externally, this is good enough in my book.
1) Does a ODBC connection (DSN or DSN-less) created on the fly store any
user name/password information if you're using Windows integrated
authentication?
Good question. I don't know this for a fact but I would expect that it
pass some kind of a token or hash to identify a computer/user to the SQL
Server (or maybe to the AD provider). If you look in the registry hive,
however, you won't see anything like that. There's just a key for "Use
Trusted Connection" and LastUser.
HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC.INI\<Name of DSN>
Note that for SQL Server authentication, the password isn't stored also;
they require that the password be manually entered everytime. However,
for a DSN for other data sources (Access and MySQL for example), the
password is stored there plaintext. Scary!
When you choose "Save Password" in Access at linking-time, what it means
is that the Connect property of the linked table will now embed the
credentials so it's not in Windows Registry but it's certainly in Access
..mdb/.accdb files and it's certainly readable.
This can be prevented on server side by creating a MSysConf table and
inserting in a row with the flag set accordingly. Access will respect
the setting if such table exists on the server. I don't think it'll help
with DSNs though.
2) If Access creates an ODBC connection (DSN or DSN-less) on the fly, will
the user see the connection if they open the ODBC Data Source Administrator
utility?
No. Administrator deals only with DSN definition & configurations, not
the actual connections, generally speaking.
3) Only having Access 2007 runtime on the user's machines is another vaible
means of creating an obstacle for them, although they might still be able to
access SQLServer via Excel and ODBC?
Yes. DSN is not restricted to a single application - if the application
can use ODBC, then it can use any DSN that was created by other
applications/developer. Even in case of using DSN-less connections, it
only means that the user has to find the connection string and use it in
other application to get the same access.