2003年5月22日
『OPENROWSET とレジストリ設定』
現実の世界で猛威をふるっているウィルス「 SARS 」。
被害にあわれていた方々、対策にされている方々、経済的に影響を受けている
方々が、より早くいい方向に向かうことを祈っています。
一方で、サイバー世界のリスクと現実世界のリスクという面から、各国、関係
機関、メディアの対応、その評価すべき点と、問題点、影響をみさせていただ
いております。コンピュータが着実に生活に入ってきている今、今後のサイバ
ー世界のリスクは、今回の SARS と同様な対応、リスク評価が必要になると思
われます。
つい昨日、知人がいったことばがあります。
「被害にあっていない人には、被害にあったことの
ある人の危機感は、なかなか伝わらない」
それは、SARS についていえば、渦中にある台湾の対応と、日本の対応となっ
て現れているように思います。SARS 対策について情報を集められるのでした
ら、できれば台湾など SARS の渦中にある国々の対応が参考になると思います。
また、アジア貿易に関連する日本のサイトも参考になります。
■OPENROWSET とレジストリ設定
今月中旬、二回目の読み合わせ会を、マイクロソフトで SQL Server のサポー
トされている平山様におこなっていただきました。
報告: 5 / 15 (木) 16 : 00 〜第 2 回サポート情報読み合わせ会のお知らせ
http://www.sqlpassj.org/bbs/ml_disp.aspx?forum_id=5¤t_page=1&disp_mode=0&detail_mode=1&message_id=15701
この中で取り上げたサポート情報について、まとめておきたいと思います。
◇[FIX] SQL Server Service Pack 3 ではシステム管理者のみが
アドホック クエリを実行できる
http://support.microsoft.com/default.aspx?scid=kb;ja;327969
このサポート情報をまとめると次のようになります。
SQL Server は、Transact-SQL の中で、外部のデータを利用することができま
す。たとえば、次のようになります。
SELECT *
FROM OPENROWSET(
'SQLOLEDB'
, 'ServerX';'Taro';'PASSWORD'
, 'select * from pubs.dbo.authors'
)
SELECT *
FROM OPENROWSET(
'MSDASQL'
, 'DRIVER={Microsoft Text Driver (*.txt;
*.csv)};DBQ=C:\;Extensions=txt;Persist Security Info=False'
, 'SELECT * FROM test.csv'
)
上のクエリーは、ServerX の pubs.dbo.authors に SELECT を実行して結果を
取得しています。下のクエリーは、カンマ形式ファイル「 C:\test.csv 」に
SELECT して、結果を取得しています。
外部のデータとしては、OLEDB, ODBCプロバイダの提供されているデータが対
象となります。外部のデータには、SQL Server, Oracleなどの RDBMS、Access,
Excel,カンマ形式ファイル、テキストファイル、また、Active Directory、
LDAP、ハードディスク中のファイルなどがあります。
●問題点
ここで、問題があります。
不正アクセス者が、SQL Serverの脆弱性または、システムの脆弱性をついて、
OPENROWSET を利用し、外部データを参照、更新する可能性があるのです。
●仕様
このため、 SQL Server Service Pack 3 は、次のような仕様になっています。
1. SQL Server の sysadmins に所属するアカウントを利用する場合、
OPENROWSET は制限なく利用できる。
例: Windows の Administrators グループのユーザや、sa など。
2. sysadmins 以外のアカウントは、レジストリにて明示的に利用を許可され
た OLEDB プロバイダのみ OPENROWSET を利用してアクセスすることができ
る。
レジストリは、次の場所にある
キー: HKEY_LOCAL_MACHINE\Software\Microsoft\MSSQLSERVER\Providers\プロバイダ名
値: DisallowAdhocAccess
タイプ: REG_DWORD
DisallowAdhocAccess = 0 の場合、OPENROWSET(プロバイダ名, )は 許可。
DisallowAdhocAccess = 1 の場合、OPENROWSET(プロバイダ名, ) 不許可
DisallowAdhocAccess がない場合も、不許可。
普通にセットアップした場合、プロバイダ名 「SQLOLEDB」でのみ
DisallowAdhocAccess = 0
と定義されている。他のプロバイダには、DisallowAdhocAccess はない。
SQLOLEDB は、SQL Server用 OLEDB プロバイダ。
以上です。
このサポート情報では、SP3 での仕様がどうなのか、SP3 より前にはどのよう
な問題があったのか、よくわかりませんでした。
そこで、サポート情報読み合わせ会の後、再度、マイクロソフトの技術者の方
に確認をとって、今回の情報をまとめました。
サポート情報読み合わせ会は、重点的なサポート情報を確認するだけでなく、
さらに、その情報に関連する問題、課題、疑問点を明らかにするいい機会です。
ぜひ、ストリーミングやチャットでも参加できますので、ぜひ一度、ご参加い
ただければと思います。
次回予定: 6 / 12 (木) 16 : 00 - 17 : 30 ( 90 分)
意見交換分科会 : pml-web
さて、この原稿を書いている間にも、SARS 対応に関する報道が次々と
行われています。今年はじめの Slammer のときのマイクロソフトを含む
関係各位の対応とも比較しつつ、対応していきたいと思います。
|