SQL Server に格納されている DTS パッケージのセキュリティ保護
MicrosoftSQL Server 2000 データ変換サービス (DTS) で作成され、msdb データベースに格納されているパッケージでは、セキュリティの問題が発生する場合があります。この問題は主に、DTS パッケージの最も一般的なタスクを実行するシステム ストアド プロシージャに関連します (一般的なタスクを実行するシステム ストアド プロシージャの例としては、msdb データベースに格納されている DTS パッケージの一覧を表示する sp_enum_dtspackages ストアド プロシージャや DTS パッケージをクライアント アプリケーションに読み込む sp_get_dtspackage システム ストアド プロシージャがあります)。SQL Server 2000 Enterprise Manager、SQL Server Management Studio、および DTS API では、これらのストアド プロシージャを使用して一般的なタスクを実行します。
DTS のシステム ストアド プロシージャに関する潜在的なセキュリティの問題を理解すれば、直ちにこの問題を軽減するための適切な処理を行うことができます。
重要 |
---|
データ変換サービス (DTS) の使用は推奨されていません。詳細については、「データ変換サービス (DTS)」を参照してください。 |
潜在的なセキュリティの問題について
SQL Server 2008 より前のバージョンの SQL Server では、DTS のシステム ストアド プロシージャの実行権限が PUBLIC に付与されています。この設定を使用すると、msdb データベースにログオンできるユーザーは次のタスクを実行できます。
DTS パッケージの一覧を取得する。
パッケージ自体を取得する。
新しいパッケージを保存する。
ただし、新しいバージョンのパッケージを保存して既存のパッケージを変更したり、パッケージを削除したりできるのは、パッケージの所有者だけです (DTS では、パッケージに変更を加えた場合は、新しいバージョンとしてパッケージが保存されます。パッケージの現在のバージョンは上書きされません)。
DTS パッケージを所有するログインを使用してアプリケーションから SQL Server に接続すると、セキュリティの問題が発生する可能性があります。この場合は、SQL インジェクション攻撃によって既存のパッケージが変更または削除されるというリスクが生じます。
影響を受ける DTS のシステム ストアド プロシージャ
実行権限が PUBLIC に付与されており、セキュリティの問題を引き起こす可能性のある DTS のシステム ストアド プロシージャを次に示します。
sp_add_dtspackage
sp_drop_dtspackage
sp_dump_dtslog_all
sp_dump_dtspackagelog
sp_dump_dtssteplog
sp_dump_dtstasklog
sp_enum_dtspackagelog
sp_enum_dtspackages
sp_enum_dtssteplog
sp_enum_dtstasklog
sp_get_dtspackage
sp_get_dtsversion
sp_log_dtspackage_begin
sp_log_dtspackage_end
sp_log_dtsstep_begin
sp_log_dtsstep_end
sp_log_dtstask
sp_make_dtspackagename
sp_reassign_dtspackageowner
影響を受けない DTS のシステム ストアド プロシージャ
実行権限が PUBLIC に付与されていない DTS のシステム ストアド プロシージャを次に示します。
sp_add_dtscategory
sp_drop_dtscategory
sp_enum_dtscategories
sp_modify_dtscategory
sp_reassign_dtspackagecategory
上記のシステム ストアド プロシージャは名前に "dts" という文字が含まれていますが、このトピックで説明しているセキュリティの問題を引き起こすことはありません。
潜在的なセキュリティの問題の軽減
DTS パッケージのセキュリティを強化するために、SQL Server 2008 では、次の状況における既定の設定が変更されました。
新規インストール。SQL Server 2008 の新規インストールを実行すると、DTS のシステム ストアド プロシージャに対する PUBLIC の実行権限が取り消されます。DTS パッケージを管理および実行する権限は、次に示す Integration Services のデータベース レベルのロールに付与するか、これらのロールを介して付与することしかできません。
db_ssisadmin
db_ssisltduser
db_ssisoperator
後でこの SQL Server 2008 インスタンスの msdb データベースに DTS パッケージをインポートする場合は、上記の Integration Services のロールに属しているアカウントだけが DTS パッケージを正常に管理および実行できます。
アップグレード。以前のバージョンの SQL Server を SQL Server 2008 にアップグレードすると、DTS のシステム ストアド プロシージャに対する PUBLIC の実行権限は取り消されません。これにより、既存のアプリケーションとの互換性は維持されます。また、アップグレードすると、前述の Integration Services のデータベース レベルの 3 つのロールに実行権限が付与されます。システム管理者は、できるだけ早く、次のセクションで説明するストアド プロシージャを実行して、実行権限を PUBLIC から取り消す必要があります。
Integration Services のロールの詳細については、「Integration Services のロールの使用」を参照してください。
新しい sp_dts_secure ストアド プロシージャの使用
SQL Server 2008 には、DTS パッケージのセキュリティを管理するための新しいシステム ストアド プロシージャ sp_dts_secure が用意されています。このプロシージャには、必須の入力パラメータが 1 つあります。このパラメータによって、DTS のシステム ストアド プロシージャに対する PUBLIC の実行権限を取り消したり付与したりします。
PUBLIC の実行権限を取り消し、Integration Services のデータベース レベルのロールに対するアクセス、およびこれらのロールを介したアクセスのみを許可するには、パラメータに 1 を指定して sp_dts_secure プロシージャを実行します。
sp_dts_secure 1
DTS のストアド プロシージャへのアクセスを権限のあるユーザーに制限するには、アップグレードして Integration Services のデータベース レベルのロールを適用した直後に、このプロシージャを実行します。
注意 SQL Server 2008 の新規インストールを実行すると、DTS のシステム ストアド プロシージャに対する 2 つのアクションが実行されます。最初に、PUBLIC の実行権限が取り消されます。次に、前述の Integration Services のデータベース レベルのロールに実行権限が付与されます。ただし、sp_dts_secure 1 を手動で実行すると、このストアド プロシージャによって、DTS のシステム ストアド プロシージャに対する PUBLIC の実行権限が取り消されるだけです。Integration Services のデータベース レベルのロールは個別に適用する必要があります。
DTS のストアド プロシージャに対する PUBLIC の実行権限を付与するには、パラメータに 0 を指定して sp_dts_secure プロシージャを実行します。
sp_dts_secure 0
セキュリティの制限を再度有効にする準備をする際に、既存のアプリケーションとの互換性を維持する必要がある場合は、新規インストールでもこのストアド プロシージャを使用できます。
|