2016-10-21 9 views
3

すべてのアプリケーションユーザーがWindows認証を使用してアクセスできるデータベースがあります。 SQL Server Management Studioに直接ログインするのではなく、アプリケーションユーザーインターフェイスを介してのみ更新可能にするテーブルが1つあります。SQL Serverセキュリティ:アプリケーションからのテーブル更新を許可する

私はSQL Serverのセキュリティについて調査しましたが、ユーザーがデータベースオブジェクトにアクセスしている場合は、どのインターフェイスや管理スタジオでも許可されています。私は、この奇妙なシナリオに対する解決策があるのだろうかと思います。

ありがとうございました!

答えて

2

TriggerをSSMSからの更新を防ぐために作成します。

及びシステム機能を使用してを介してアプリケーション名を異なる:

APP_NAME() 

例:

--Create Test table 
Create table test (id int , name varchar (20)) 
go 
--insert dummy data 
insert into Test values (1, 'aaaa'), (2,'bbbb') 
go 

-- create our trigger for preventing updating via SSMS 
CREATE TRIGGER trgPreventUpdateTestTableViaSSMS 
ON test 
FOR UPDATE AS 
BEGIN 
    IF APP_NAME() = 'Microsoft SQL Server Management Studio - Query' 
    begin 
     RAISERROR('Cannot update test table via using SSMS',16,1) 
     rollback 
     end 
END 
GO 

-- try update 
update Test set name = 'cccc' where id = 2 

結果:

enter image description here

2

テーブルのアクセス許可をSELECTのみに調整できます。次に、このテーブルを更新するためのストアドプロシージャを作成することができます。このテーブルの更新が許可されているユーザーに実行権限を与えます。

アプリケーションから実行するには、アプリケーションから渡される(アプリケーションにハードコードされた)パラメータ(@authentication_keyなど)を追加することができます。 SPでは、あらかじめ定義された値と一致する場合、そのキーを検証します。

SPコードを読み取れないようにするには、WITH ENCRYPTIONオプションを使用してSPを作成します。 SQL Serverからソースを取得することができないので、これを行うときには、他の場所のSPのサラリーを保存する必要があります

関連する問題