Best Practices
Handling Usernames and Passwords
You should devise a plan now for how you deal with user ids and passwords required for connecting to the EDW and make sure all your applications adhere to it.
- create an "include" file with the connection string needed to connect to the EDW.
For example: connect to oracle as edw (user=xxxxxx orapw=xxxxx path='dsprod01')
Whenever your programs need to connect to the EDW, include this file instead of hard-coding our password and login. Store file in a directory with read permission limited to the original programmer. This ensures that the program can be run only by the original programmer unless a new user inserts his/her own connection string or his/her own include fileref in place of the original include file. - use a SAS library approach
The library approach has some advantages and disadvantages to the "connect to" approach. ("Connect to" is faster, but libraries can be accessed in DATA steps as well as PROC SQL steps.) For those who don't know SAS, or are just starting to,
a "library" is simply an alias or reference for a file location. Our technical gurus inserted script into the SAS startup file, which calls macros (such as "include") that prompt the user to log into our main data sources (IRT, EDW, Sybase warehouse). The script assigns the sources library names, which solves one key to program sharing with the library approach, namely that everyone must assign the same library name to the same data source or the program won't run properly. So two users can run the same programs, stored in the same locations, from their own machines, but each is logged in independently across secure network connections. Neither can see the other's login. - use an INI file with your SQL Server DTS Package
For SQL Server DTS users... sensitive connection information can be saved with the DTS package. Without passwords on the DTS package
itself, it leaves the ability to execute the package fairly open. It also proves problematic when wanting to share the DTS package... since
the username and password get saved with it.
The INI file can contain all the connection properties (source and destination servers, password, username). The "Dynamic Properties" task
would fetch the parameters. The file is stored on the server that would be executing the package. The password is in clear text, but the file
would be secured using file permission restrictions.
Here's an article that steps through the INI/DTS Connection Properties setup.
http://databasejournal.com/features/mssql/article.php/3073161
My only problem with the direction was figuring out how to "unsave" my password from my connection icon/object. To control the persisting of
the authentication information, use the Persist Security Info option in the Advanced Connection Properties dialog box in DTS Designer. This
option only exists for SQL Server connections. Also, on the workflow properties(options) of the connection, make sure you check "close
connection on completion."
Handling Package Security in DTS
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dtssql/dts_pkgmng_sec_09dl.asp - Link Access tables without the Save Password Feature
Access databases can store the userid and password unencrypted for linked tables. So a savvy user can enable viewing system tables and voila know what they are for any systems you are linked to. Before sending the database to users, delete the tables and make them link them, or relink them yourself WITHOUT the save password feature.
Structuring Local Tables to Mirror EDW
- allows for portability and sharing of sql
- removes one layer of translation and potential for error
- To avoid incomplete data, run your jobs having confirmed that the nightly DS ETL has completed
- How To:
http://www.ds.uillinois.edu/docs/HowTo_GeneralDW_ETLRuntimeTable.pdf
