Access : リンクテーブルで [パスワードの保存] が危険な理由
Access ではリンクテーブルを構成することで外部のデータソースを Access のテーブルのように扱うことができます。
リンクテーブルを構成する際に接続先として SQL Server について定義した ODBC DSN を選択し、SQL Server 認証のパスワードを保存するよう設定を行うと、パスワードを保存することの危険性を告知するメッセージが表示されます。
それが実際にどれだけ危険なことなのかを紹介します。
- 予め定義してある ODBC DSN を使ってリンクテーブルを構成します。
この例では SQL Server 2005 に接続します。
- [SQL Server ログイン] ダイアログでは SQL Server 認証を使用してログイン情報を構成します。
- [テーブルのリンク] ダイアログで [パスワードの保存] をチェックします。
- 「ファイルに保存する前にパスワードは暗号化できません。ファイルのソースを表示できるユーザーはアカウントのユーザー名とパスワードを見ることができます。」というメッセージを確認します。
ここでは [パスワードの保存] を選択します。
- 作成したリンクテーブルはパスワードを保存した結果ユーザーによる認証情報の入力無しで内容を確認することができます。
ここまでの作業で一件落着となりがちですが、ここで ODBC 接続のパスワードを保存した accdb (mdb) ファイルをバイナリエディタで開いてみます。
(テキストエディタでも可能です)
パスワードを含む接続文字列が丸見えなのが分かります。
これではデータソースに強力なパスワードを設定したところで意味がありません。
なお、accde (mde) 形式でも同様に接続文字列が平文で格納されます。
この問題を回避するためには、SQL Server に接続する際の認証方式として Windows 認証 を使用します。
ODBC 用語? では [セキュリティ接続を使用する] となります。
Windows 認証を使用して作成したリンクテーブルを含む Access のファイルをバイナリエディタで開いてみます。
この通り、接続文字列で Trusted_Connection=Yes が定義され、パスワードが保存されなくなりました。