クライアント システムに SQL Server 2008 R2 Express をインストールしています。Management Studio を開いてデータを変更するだけの人がいるという情報を入手しました。
どうすればこのような事態を防ぐことができ、彼らによって何が変更されているかをログに記録できますか?
クライアント システムに SQL Server 2008 R2 Express をインストールしています。Management Studio を開いてデータを変更するだけの人がいるという情報を入手しました。
どうすればこのような事態を防ぐことができ、彼らによって何が変更されているかをログに記録できますか?
どうすればこの出来事を止めることができますか
SQL Server のログインを変更します。ユーザーは、資格情報を持っているデータベースとサーバーにのみ接続できます。
runas
認証にWindowsログインを使用している場合は、アプリケーションへのアクセスのみを許可するだけで、独自のログインを使用してデータベースを必要とするアプリケーションを実行する必要があります。
私はのアイデアを得ることができませんでした。しかし、runas
私は@Martin Smithのアイデアを使用して、以下のソリューションを構築しました。
これは、ログインでアクティビティを実行しているすべての非saユーザーを無効にするために使用されます。ActiveDirectoryではテストしていません。
接続するSQLを拒否します。
Create TRIGGER DisableSMSSEntry_trigger
ON ALL SERVER WITH EXECUTE AS 'sa'
FOR LOGON
AS
BEGIN
DECLARE @NtUserName AS NVARCHAR(100)
IF ( (SELECT DISTINCT RTRIM(LTRIM(nt_user_name)) AS LogedUser FROM sys.dm_exec_sessions WHERE is_user_process = 1 AND login_name !='sa') >0 )
BEGIN
SET @NtUserName= (SELECT DISTINCT RTRIM(LTRIM(nt_domain+'\'+nt_user_name)) AS LogedUser FROM sys.dm_exec_sessions WHERE is_user_process = 1 AND login_name !='sa')
DECLARE @membername AS varchar(100),@rolename AS varchar(100)
SET @membername=@NtUserName
set @rolename ='DB_DenyDataWriter'
EXEC sp_addrolemember @membername,@rolename
set @rolename = 'DB_DenyDataReader'
EXEC sp_addrolemember @membername,@rolename
exec (' DENY VIEW ANY DATABASE TO '+ @NtUserName )
exec ('DENY SQL CONNECT ' + @NtUserName )
ROLLBACK
END
END