zoukankan      html  css  js  c++  java
  • SQL SERVER

    转自:https://blog.sqlauthority.com/2016/04/03/sql-server-changed-password-sql-login-interview-question-week-065/?tdsourcetag=s_pctim_aiomsg

    我的客户注意到,随机地,SQL“SA”帐户密码被重置,他们想知道谁在做这件事?我知道SQL Server错误日志不记录登录密码更改事件。所以我的下一个想法是“默认跟踪”应该有这些数据。在我的实验室机器上,我在查询下面运行以查找捕获的事件

    1
    2
    3
    4
    6
    7
    8
    9
    10
    11
    12
    13
    DECLARE @Trace_ID INT;
     
    SELECT @Trace_ID = id
    FROM sys.traces
    WHERE is_default = 1;
     
    SELECT t.EventID
        ,e.NAME AS Event_Description
    FROM sys.fn_trace_geteventinfo(@Trace_ID) t
    INNER JOIN sys.trace_events e ON t.eventID = e.trace_event_id
    WHERE e.name like '%Audit%'
    GROUP BY t.EventID
        ,e.NAME;

    EventID Event_Description 
    - ------- 
    18审计服务器启动并停止
    20审计登录失败
    102审计数据库范围GDR事件
    103审计架构对象GDR事件
    104审计Addlogin事件
    105审计登录GDR事件
    106审计登录更改属性事件
    108审计添加登录到服务器角色事件
    109审核添加数据库用户事件
    110审核将成员添加到数据库角色事件
    111审核添加角色事件
    115审核备份/还原事件
    116审核DBCC事件
    117审核更改审核事件
    152审核更改数据库所有者
    153审核架构对象获取所有权事件
    175审核服务器更改跟踪事件

    SolarWinds的

    遗憾的是,SQL Server默认跟踪仅记录审核登录更改属性事件类,而不记录审核登录更改密码事件类。因此,客户端可能需要运行自定义跟踪来跟踪密码更改。

    因此,我们别无选择,只能通过新的跟踪进行监控。我想到的另一个想法是我们可以使用fn_dblog来读取事务日志。我告诉我的客户,这个方法是完整无证的。此方法的另一个问题是,如果检查点被触发,则数据将在T-log中刷新,因为主数据库处于简单恢复模型中。但对于他们至少调试系统中发生的事情来说,这是一个很好的开始。

    以下是我提供的脚本故障排除方法:

    创建登录以进行演示

    1
    2
    3
    4
    6
    USE [master]
    GO
     
    CREATE LOGIN [SQLLogin1] WITH PASSWORD=N'@Very$trongP@ssw0rd123', DEFAULT_DATABASE=[master],
    DEFAULT_LANGUAGE=[us_english], CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF
    GO

    用它来更改密码

    1
    2
    3
    4
    USE [master]
    GO
    ALTER LOGIN [SQLLogin1] WITH PASSWORD=N'VerystrongP@ssword123'
    GO

    查询以查找更改密码的人员

    1
    2
    3
    4
    SELECT  [Transaction SID]
        ,suser_sname([Transaction SID]) AS 'Login Name'
    FROM::fn_dblog(DEFAULT, DEFAULT)
    WHERE [Transaction Name] = 'ALTER LOGIN'

    SQL SERVER  - 谁更改了SQL登录密码?  - 第0周的采访问题#01

    查询以查找更改了哪个帐户密码

    1
    2
    3
    SELECT [Lock Information]
    FROM::fn_dblog(DEFAULT, DEFAULT)
    WHERE [Lock Information] LIKE '%SERVER_PRINCIPAL%'

    SQL SERVER  - 谁更改了SQL登录密码?  - 本周访谈问题#065谁-02

    现在我们可以使用下面的内容来查找哪个帐户是270(如上所示)

    1
    2
    3
    SELECT name 
    FROM sys.server_principals
    WHERE principal_id = 270

    SQL SERVER  - 谁更改了SQL登录密码?  - 本周访谈问题#065谁-03

    你有没有用过这种无证的命令?请谨慎使用,因为这不是受支持的命令。因此请确保您在使用时要小心。我相信你有很多有趣的方式可以使用这个博客,我非常有兴趣了解其中的一些。请告诉我。

  • 相关阅读:
    _ 下划线 Underscores __init__
    Page not found (404) 不被Django的exception中间件捕捉 中间件
    从装修儿童房时的门锁说起
    欧拉定理 费马小定理的推广
    线性运算 非线性运算
    Optimistic concurrency control 死锁 悲观锁 乐观锁 自旋锁
    Avoiding Full Table Scans
    批量的单向的ssh 认证
    批量的单向的ssh 认证
    Corrupted MAC on input at /usr/local/perl/lib/site_perl/5.22.1/x86_64-linux/Net/SSH/Perl/Packet.pm l
  • 原文地址:https://www.cnblogs.com/gered/p/10571510.html
Copyright © 2011-2022 走看看