温馨提示×

SQL Server在Ubuntu上的权限管理策略

小樊
45
2025-11-16 11:53:01
栏目: 云计算

SQL Server 在 Ubuntu 上的权限管理策略

一 管理边界与总体原则

  • 权限分为两层:
    1. 服务器级(实例范围,如登录名、服务器角色、端点、可用性组等);
    2. 数据库级(数据库范围,如数据库用户、数据库角色、对象级权限)。
  • 坚持最小权限原则:生产环境避免使用sysadmin,为应用与运维创建最小必要的登录与角色。
  • 采用职责分离:分离 DDL(结构变更)与 DML(数据操作)权限,分账号治理。
  • 全程使用强口令定期轮换,并启用登录审计定期权限复核

二 服务器级权限配置

  • 连接实例:在 Ubuntu 上使用命令行工具 sqlcmd 进行管理。示例:sqlcmd -S localhost -U SA -P 'YourStrongP@ssw0rd'
  • 创建登录名(SQL 身份验证):CREATE LOGIN [AppLogin] WITH PASSWORD = 'StrongP@ssw0rd!';
  • 服务器角色分配(示例:将登录加入 dbcreator,用于创建数据库):ALTER SERVER ROLE [dbcreator] ADD MEMBER [AppLogin];
  • 安全基线建议:
    • 禁止在生产直接使用 SA,为日常管理创建具备必要服务器角色的管理员登录;
    • 仅开放必要端口与来源 IP,配合防火墙限制访问;
    • 启用登录审计,记录成功与失败登录,便于安全追踪。

三 数据库级权限配置

  • 在目标数据库内创建数据库用户并映射登录名:USE YourDB; CREATE USER [AppUser] FOR LOGIN [AppLogin];
  • 使用内置数据库角色进行授权(示例):
    • 只读访问:ALTER ROLE [db_datareader] ADD MEMBER [AppUser];
    • 读写访问:ALTER ROLE [db_datawriter] ADD MEMBER [AppUser];
    • 结构变更(谨慎):ALTER ROLE [db_ddladmin] ADD MEMBER [AppUser];
  • 对象级精细授权(示例):GRANT SELECT, INSERT, UPDATE ON dbo.Orders TO [AppUser];
  • 自定义数据库角色(推荐用于业务最小权限):
    • 创建角色:CREATE ROLE [AppRole_RW];
    • 授予权限:GRANT SELECT, INSERT, UPDATE ON SCHEMA::dbo TO [AppRole_RW];
    • 绑定用户:ALTER ROLE [AppRole_RW] ADD MEMBER [AppUser];
  • 审计与复核:定期查询 sys.database_principalssys.database_role_memberssys.database_permissions 等系统视图,验证权限分配是否符合策略。

四 Ubuntu 主机与网络安全

  • 服务账户与文件系统:SQL Server 在 Linux 上默认以 mssql 用户运行,数据/日志目录应归属 mssql:mssql,避免以 root 运行。
  • 端口与防火墙:仅开放 TCP 1433,并限制来源网段。示例:sudo ufw allow from 192.168.1.0/24 to any port 1433 proto tcp;变更后执行 sudo ufw reload
  • 变更与重启:修改实例或代理配置后,使用 sudo systemctl restart mssql-server 使配置生效。
  • 安全加固:保持 操作系统与 SQL Server 补丁更新,限制物理与逻辑访问,仅开放必要端口与协议。

五 审计与合规实践

  • 启用登录审计:记录成功与失败登录,便于入侵检测与合规审计。
  • 启用 SQL Server 代理并审计作业:生产环境建议开启代理,对关键作业设置失败告警与审计日志。
  • 定期复核:周期性审查高权限账号、登录历史与权限分配,清理过期/冗余账户与权限。
  • 加密与密钥管理:对敏感数据启用列级或透明数据加密(TDE),妥善保管证书与密钥,实施最小访问分权保管

0