[PHP-users 6989] 認証とDBアクセス用のIDとpasswdについて

Tatsuya Matsuyama php-users@php.gr.jp
Fri, 19 Apr 2002 03:37:26 +0900


松山と申します。

MS-SQLserver寄りの
しかも
ソリューション的な質問ですが、
php方面のご意見をうかがいたく
postさせていただきます。

現在、グループェア的なWebDBの開発をすすめています。
社内には既存のサーバーとして認証用にNT4.0、
DBとしてMS-SQLserver7.0(以下SQLserver)が
稼動しています。

また、同じネットワーク内で
インターネットからのアクセスに対して
グローバルIPでRedhat7.2Jがホストしています。

グループウェアは30人から50人ぐらいでの利用を想定しています。

単なる認証には、
RedHat7.2J+apache+php4.1.2で
NTのIDとPasswdを使って様々な方法(sambaのwinbindやmod_auth_kerbなど)
で成功しました。

ところが、phpからMS-SQLserverへのアクセスの際
NTのIDとpasswdで接続する方法がどうしても見当たりません。
# freeTDSを試しましたが、
# NT認証については、まだインプリメントされていない(?)ようです。
# conf設定http://www.freetds.org/userguide/x358.htm
# にそれっぽい設定はありますが、設定しても動作しません。
# 初期値はあるようですが、「meaning」に「Not active. 」とあります。
# 過去のphp-mlにもいくつか質問がありますが、
# 最終的にfreeTDSの*NT認証*で成功した方いらっしゃいますか?

Windows版のphp4.1.2でmssql_connect()でもうまくいきません。
# 実験用にWindows2000server+IIS5.0+aspでも
# ドライバを変えながら試しましたがダメでした。
# イントラで「信頼関係接続」があれば問題ありませんが、
# IDとpasswdをSQLserverに渡すとダメです。
# 「できて当然」と思われるので
# この結果については、大いに疑問ですが...

質問は、
「認証用のIDとpasswdをNTで使っているものと一本化するには
どうすればよいでしょうか?」
です。

phpからSQLserverにNTのIDとpasswdを渡しても意味がないとなると
SQLserver上に全てのユーザーIDを(SQL認証用に)用意する
必要がありますが、
SQL認証用とNTのpasswdの同期が難しく(?)
管理の負担が大きいのが問題です。

一方、
認証管理だけNTにまかせて
SQLserverにはadmin,publicなどのユーザーを目的別に数個だけ登録して
NTのIDをそれらのユーザーに分けて接続する方法もありますが、
運用面でカバーするとしても
接続用のpasswdが事実上固定になるため
また
最終的な接続者の特定が難しく
セキュリティ的にも好ましくありません。

phpでDBも一緒に管理されている方も多いと思いますが、
どのような解決策があるでしょうか?

# postgresでは、要望の動作を実現できていますが
# 既存DBの引越しが難しい状況です。
# それでも、他に方法がない場合は最終手段として考えています。

よろしくお願いします。