温馨提示×

如何在Debian上管理SQL Server用户权限

小樊
42
2025-11-30 21:04:00
栏目: 云计算

在 Debian 上管理 SQL Server 用户权限

一 环境准备与连接

  • 安装 SQL Server 命令行工具(含 sqlcmd):sudo apt update && sudo apt install -y mssql-tools,并将工具目录加入 PATH(例如 /opt/mssql-tools/bin)。
  • 使用 sqlcmd 连接本地实例:sqlcmd -S localhost -U SA -P ‘YourStrongPassword’。
  • 如需远程管理,确保 Debian 防火墙放行 1433/TCP,并在 SQL Server 配置中启用远程连接。

二 核心概念与最小权限原则

  • 区分层级:
    • 实例级主体:登录名(LOGIN),用于连接到 SQL Server 实例。
    • 数据库级主体:用户(USER),映射到登录名,在特定数据库内被授予权限。
  • 角色与权限:
    • 固定数据库角色:如 db_owner、db_datareader、db_datawriter,便于快速授权。
    • 细粒度权限:使用 GRANT/REVOKE/DENY 在对象(库、表、视图、存储过程等)级别控制。
  • 安全建议:遵循最小权限原则,避免使用 SA 进行日常操作,为应用与人员分别创建登录名与用户。

三 常用操作速查

  • 登录名管理(实例级)
    • 创建:CREATE LOGIN login_name WITH PASSWORD = ‘StrongP@ssw0rd’;
    • 改密:ALTER LOGIN login_name WITH PASSWORD = ‘NewP@ssw0rd’;
    • 删除:DROP LOGIN login_name;
  • 数据库用户管理(数据库级)
    • 创建:USE MyDB; CREATE USER user_name FOR LOGIN login_name;
    • 删除:USE MyDB; DROP USER user_name;
  • 角色管理
    • 添加成员(新语法):ALTER ROLE db_datareader ADD MEMBER user_name;
    • 移除成员(新语法):ALTER ROLE db_datareader DROP MEMBER user_name;
    • 兼容旧语法:EXEC sp_addrolemember ‘db_datareader’, ‘user_name’;
  • 对象级权限
    • 授予:GRANT SELECT, INSERT, UPDATE, DELETE ON dbo.YourTable TO user_name;
    • 撤销:REVOKE SELECT ON dbo.YourTable FROM user_name;
  • 验证与审计
    • 查看某用户权限:USE MyDB; SELECT * FROM sys.database_permissions WHERE grantee_principal_id = USER_ID(‘user_name’);
    • 登录审计:可创建服务器/数据库审计规范,记录失败与成功登录,用于安全合规。

四 典型场景与命令示例

  • 只读用户(库级)
    • USE MyDB; CREATE USER app_read FOR LOGIN login_read;
    • ALTER ROLE db_datareader ADD MEMBER app_read;
  • 读写用户(库级)
    • USE MyDB; CREATE USER app_rw FOR LOGIN login_rw;
    • ALTER ROLE db_datareader ADD MEMBER app_rw;
    • ALTER ROLE db_datawriter ADD MEMBER app_rw;
  • 表级只读
    • USE MyDB; GRANT SELECT ON dbo.Orders TO analyst;
  • 应用专用账户(最小权限)
    • 仅授予目标 schema 的读写:
      • USE MyDB; CREATE USER app FOR LOGIN login_app;
      • GRANT INSERT, UPDATE, DELETE ON SCHEMA::dbo TO app;
      • GRANT SELECT ON SCHEMA::dbo TO app;
  • 撤销与验证
    • 撤销某表的 UPDATE:REVOKE UPDATE ON dbo.Orders FROM app_rw;
    • 验证:以该用户身份登录并执行相应操作,或用 sys.database_permissions 检查。

五 图形化管理与排错

  • 图形化管理:可使用 SQL Server Management Studio(SSMS) 连接 Linux 上的 SQL Server,在“Security/Logins/Users”中管理登录名、用户、角色与对象权限。
  • 常见问题排查:
    • 连接失败:检查服务是否运行(sudo systemctl status mssql-server)、监听端口 1433、以及防火墙策略。
    • 权限不足:确认用户已映射到正确的登录名,并已被加入相应数据库角色或授予对象权限。
    • 密码策略:修改密码需满足实例的密码复杂度策略。

0