I am familiar with ODBCs by system (system DSNs) and ODBCs by user (user DNSs). I want to have ODBCs by application. I want to limit the ODBC connections available to a specific application, GP 2010. I have multiple GP applications installed on a terminal server (multiple GP directories within Program Files storing multiple Dynamics.exe applications), and I have multiple ODBCs to which to connect from GP 2010.
I want to enforce a rule whereby only specific GP 2010 applications (Dynamics.exe) can launch and connect to specific ODBCs. In other words, I want to impose a rule which creates a 1:1 relationship between:
- a GP 2010 application (Dynamics.exe), and
- an ODBC (a SQL instance which supports GP)
Environment info:
- Windows Server 2012 Standard 64-bit
- SQL 2008 R2 SP2
- GP 2010 SP3
What I have tried/learned thus far:
I have seen attempts in certain GP environments to use group policy to limit ODBCs available to Windows users via the use of user DSNs. However, such an approach is not helpful where a Windows user legitimately has access to multiple GP applications. When they launch a GP application, they are able to select any ODBC available to their Windows user.
I have experimented with the use of GP 2010 login macros to try and solve this issue. However, this method is insecure and does not scale. Firstly, it assumes that a username and password will be known to the administrator and will usually remain unchanged. If this is the case, the credentials--along with the ODBC--can be embedded into a login macro (which is stored in plain text somewhere). Even still, in order to be used, the login macros must be passed to the GP 2010 shortcut that users launch. In order to be able to specify a generic target path for each GP application, the login macro for each user will have to be stored in a common-per-user location (ex. on their user's desktop). Since this has to be configured per user, this administrative overhead limits scalability.