You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

获取SQL数据库所有者与用户列表及权限清理、漏洞修复方案问询

SQL数据库用户权限清理及漏洞修复方案

一、正确查询用户与对应权限的SQL语句

你当前用的sys.sysusers视图只能获取用户基础信息,没法关联权限关系。可以通过系统视图关联查询,直接查看每个用户的权限详情:

SQL Server用户权限查询语句:

SELECT
    dp.name AS 用户名,
    dp.type_desc AS 用户类型,
    dp.default_schema_name AS 默认架构,
    perm.permission_name AS 权限名称,
    perm.state_desc AS 权限状态,
    obj.name AS 关联对象名
FROM
    sys.database_principals dp
LEFT JOIN
    sys.database_permissions perm ON dp.principal_id = perm.grantee_principal_id
LEFT JOIN
    sys.objects obj ON perm.major_id = obj.object_id
ORDER BY
    dp.name, perm.permission_name;

这个查询会返回每个用户的类型、默认架构,以及他们拥有的具体权限(比如SELECT、INSERT、ALTER等)和对应的数据库对象。

如果要查看服务器级权限,用以下语句:

SELECT
    sp.name AS 登录名,
    sp.type_desc AS 登录类型,
    perm.permission_name AS 服务器权限,
    perm.state_desc AS 权限状态
FROM
    sys.server_principals sp
LEFT JOIN
    sys.server_permissions perm ON sp.principal_id = perm.grantee_principal_id
ORDER BY
    sp.name;

二、移除不必要权限/用户的操作

  1. 删除无用用户:确认无业务依赖后执行
    DROP USER [用户名];
    -- 删除对应服务器登录名
    DROP LOGIN [登录名];
    
  2. 撤销不必要权限:针对特定用户撤销指定权限
    REVOKE INSERT ON [表名] TO [用户名];
    -- 撤销该用户在某对象上的所有权限
    REVOKE ALL ON [表名] TO [用户名];
    

三、其他漏洞修复方案

  • 严格遵循最小权限原则:只给用户完成工作所需的最低权限,比如只读业务账号只赋SELECT权限,禁止普通用户拥有ALTER、DROP等高风险权限。
  • 用角色管理权限:把权限赋给角色,再将用户加入对应角色,避免直接给用户赋权,简化权限维护。比如用内置角色db_datareader、db_datawriter,或自定义业务角色。
  • 定期做权限审计:每月/季度自动执行权限查询,对比权限基线,发现异常变更及时处理。
  • 禁用闲置账号:长期未使用的账号先禁用而非直接删除,留足回溯空间:
    ALTER USER [用户名] WITH DISABLE;
     ALTER LOGIN [登录名] DISABLE;
    
  • 使用AD集成认证:避免用SQL本地账号,通过域账号统一管理,方便权限回收和身份验证。
  • 监控权限变更:开启SQL Server审计功能,记录所有权限变更操作,违规操作可快速溯源。

内容的提问来源于stack exchange,提问作者tehais

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 13:05:19