同时具有授权和日志插入功能的登录触发器

问题描述 投票:0回答:1

我在 SQL Server 2019 实例中创建了登录触发器。

我们的想法是两者兼得:

  1. 授权 - 控制谁可以登录,谁不能登录。例如主机名、IP ....(为简单起见,下面与用户名相关联 - 有些必须登录,有些则不能)
  2. 每个案例都有日志记录,授权进入、未授权进入

触发器示例是:

CREATE OR ALTER TRIGGER [trigger_name]
ON ALL SERVER WITH EXECUTE AS 'sa'
FOR LOGON
AS
BEGIN
    BEGIN TRAN
        INSERT INTO LOG_TABLE ...

    COMMIT TRAN

    IF ORIGINAl_LOGIN() = 'TEST2' 
    BEGIN
        ROLLBACK;
    END;
END

我测试与用户 TEST1 和 TEST2 的连接。

测试:

  • 与用户 TEST1 连接。用户登录,日志被写入。
  • 与用户 TEST2 连接。用户未登录(如预期 - 触发错误),但日志未写入 LOG_TABLE。

问题:没有为

TEST2

写入日志
sql-server authentication triggers
1个回答
0
投票

回滚触发器的事务后即可写入日志。 EG

CREATE OR ALTER TRIGGER [only_sa_allowed]
ON ALL SERVER WITH EXECUTE AS 'sa'
FOR LOGON
AS
BEGIN

    IF ORIGINAl_LOGIN() <> 'sa' 
    BEGIN
        ROLLBACK;
    END;
    INSERT INTO LOG_TABLE(user_name) values (ORIGINAL_LOGIN());
END
© www.soinside.com 2019 - 2024. All rights reserved.