Skip to content

Commit 9355218

Browse files
committed
Add script WhiteListIPTable with trigger
1 parent aebc7a6 commit 9355218

File tree

1 file changed

+59
-0
lines changed

1 file changed

+59
-0
lines changed

Scripts/WhiteListIPTable.sql

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
/*
2+
Author: Patrick Keisler
3+
Original link: http://www.patrickkeisler.com/2017/05/create-whitelist-for-sql-server-updated.html
4+
*/
5+
6+
USE master;
7+
GO
8+
9+
IF OBJECT_ID('dbo.WhiteList') IS NOT NULL
10+
DROP TABLE dbo.WhiteList;
11+
GO
12+
13+
CREATE TABLE dbo.WhiteList
14+
(
15+
Id INT IDENTITY(1,1) PRIMARY KEY
16+
,LoginName VARCHAR(255)
17+
,HostName VARCHAR(255)
18+
,HostIpAddress VARCHAR(50)
19+
,Comments VARCHAR(2000)
20+
);
21+
GO
22+
23+
GRANT SELECT ON dbo.WhiteList TO PUBLIC;
24+
GO
25+
26+
INSERT dbo.WhiteList(LoginName,HostName,HostIpAddress,Comments)
27+
VALUES
28+
('*','ECHOBASE1','*','Any user from the workstation "ECHOBASE1" is allowed to connect, regardless of IP address.')
29+
,('WebSiteLogin','webserver1','192.168.100.55','Only the WebSiteLogin from webserver1 with an IP of 192.168.100.55 is allowed access.');
30+
GO
31+
32+
CREATE TRIGGER WhiteListTrigger
33+
ON ALL SERVER FOR LOGON
34+
AS
35+
BEGIN
36+
DECLARE
37+
@LoginName VARCHAR(255) = ORIGINAL_LOGIN()
38+
,@HostName VARCHAR(255) = HOST_NAME()
39+
,@HostIpAddress VARCHAR(50) = CONVERT(VARCHAR(50),CONNECTIONPROPERTY('client_net_address'));
40+
41+
IF
42+
(
43+
SELECT COUNT(*) FROM dbo.WhiteList
44+
WHERE
45+
(
46+
(LoginName = @LoginName) OR (LoginName = '*')
47+
)
48+
AND
49+
(
50+
(HostName = @HostName) OR (HostName = '*')
51+
)
52+
AND
53+
(
54+
(HostIpAddress = @HostIpAddress) OR (HostIpAddress = '*')
55+
)
56+
) = 0
57+
ROLLBACK;
58+
END;
59+
GO

0 commit comments

Comments
 (0)