SQL Serverで Ole Automation Procedures Server Configuration Option を有効にする必要がありますが、そうすることでどのようなセキュリティリスクが発生するのか疑問に思っていましたか?
このオプションを有効にしてセキュリティを利用する方法の例は何ですか?
私はそれを搾取の観点から見るつもりはないと思います。これは、(同じセキュリティ問題ではないにしても)_xp_cmdshell
_によく似ています。これらは、有効になっている場合に実行できる内容の点で広く開かれており、SQL Serverの外部に到達するプロセスの場合、SQL Serverを実行しているサービスアカウントのセキュリティコンテキストを使用します(ただし、_xp_cmdshell
_には少なくともsysadmin
ユーザー以外のプロキシアカウントを設定するオプション)。
ただし、_sp_OA*
_プロシージャを実行する(または明示的にsysadmin
権限を付与する)ためには、EXECUTE
インスタンスレベルのロールに属している必要があるため、少なくともすべての使用を、次のストアドプロシージャの範囲内で維持できます。 Module Signing を使用して昇格されたアクセス許可を取得します(はい、_WITH EXECUTE AS N'dbo'
_の指定は、dbo
ユーザーに関連付けられたログインがsysadmin
ロールにあり、モジュール署名がより良い)。
@ kevinskyの回答 のCIS引用文を見る(つまり、「」これらは、SQL ServerユーザーがSQL Serverの外部の機能を実行できるようにする拡張ストアドプロシージャです。 ")、私が何かを見逃していない限り、それは誇張された、またはおそらく無知の反応のようです。 would確かに大きな問題になりますallユーザーがアクセスした場合有効になっていた場合。しかし、実際には、_sp_OA*
_ストアドプロシージャの使用を許可されているのは、 "OLEオートメーションプロシージャ"を有効にする機能を既に持っているユーザーだけです。使用しない場合は有効にする必要があると言っているわけではありませんが、これは固有のセキュリティリスクではないようです。
セキュリティの「問題」は、ネットワークやファイルシステム、またはOSレベルで承認できないことを行う開発者がコードを作成できるか、または意図しない結果が生じる可能性があることだと思います。
そうは言っても、サポートする必要があるレガシーコードに関して質問する場合は、理想的ではありませんが、おそらく機能します。ただし、これが新しい開発に関するものである場合は、OLE Automation;を使用しないでください。代わりに [〜#〜] sqlclr [〜# 〜] 。SQLCLRは、OLEオートメーションを超える(ただし、これらに限定されません))よりも多くの利点があります。
SAFE
)か、外部リソースにアクセスできるがシステムを変更したり非同期作業を実行したりできないように制限できます(_EXTERNAL_ACCESS
_)CISコントロール SQL Server 2008および2016の場合、この表現を使用します
Oleオートメーションプロシージャオプションは、OLEオートメーションオブジェクトをTransact-SQLバッチ内でインスタンス化できるかどうかを制御します。これらは、SQL ServerユーザーがSQL Serverの外部で関数を実行できるようにする拡張ストアドプロシージャです。
理論的根拠:このオプションを有効にすると、SQL Serverの攻撃範囲が拡大し、ユーザーがSQL Serverのセキュリティコンテキストで機能を実行できるようになります。
リスクは、ストアドプロシージャから呼び出しているオブジェクトが、思ったように動作しないことです。私の知る限り、Ole Automationオブジェクトに署名したり、それらが実行しているアクションが意図したとおりであることを保証したりすることはできません。
再度述べると、oleオブジェクトは、ストアドプロシージャに許可が与えられて実行されている信頼できないソースです。緩和策は、プロシージャを呼び出し、それを作成するときに使用のコンテキストを4に設定するユーザーに最小限の権限のみを付与することです。
ローカルOLEサーバーはSQL Serverリソースにアクセスできず、SQL Serverのメモリまたはリソースに損傷を与えることはありません。
詳細については ここ を、 例 はここを参照してください。この例で示されないのは、これがどのようにうまくいかないかです。質問を「返されたデータが正しくない場合はどうなりますか?」と言い換えた方がよい場合があります。
余談ですが、SQL Server 2008 R2は2019年7月にサポートが終了します。おそらくアップグレードを検討する必要があります。