Windows認証を使用して、ユーザーがODBCを介してデータベースに接続することを禁止する方法はありますか?
このシナリオで役立つように設計された機能は アプリケーションロール です。アプリケーションロールを使用すると、ユーザーにターゲットデータベースへの接続を許可できますが、アプリケーションがアプリケーションロールをアクティブ化するためのシークレットを提供するまで、クエリを実行できません。
possibleソリューションは、app_name()
をチェックするサーバーログオントリガーを作成することです。ローカルインスタンスに次のサーバートリガーを作成し、ODBC経由で接続しようとしました。接続は拒否されました。必要に応じて変更する必要があります。
CREATE TRIGGER trgGetAppName ON ALL SERVER
FOR LOGON AS
IF APP_NAME() NOT LIKE ('Microsoft SQL Server Management Studio%')
AND APP_NAME() NOT LIKE ('.Net SqlClient Data Provider%')
BEGIN
ROLLBACK
END
ログオントリガーに関する注意事項:
ログオントリガーにより、sysadmin固定サーバーロールのメンバーを含むすべてのユーザーがデータベースエンジンに正常に接続できなくなる可能性があります。ログオントリガーによって接続が妨げられている場合、sysadmin固定サーバーロールのメンバーは、専用の管理者接続を使用するか、データベースエンジンを最小構成モードで起動して接続できます(-f)。