当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] SQL Server 权限指南

作者:精品下载站 日期:2024-12-14 06:05:29 浏览:12 分类:玩电脑

SQL Server 权限指南


对于管理 SQL Server 数据库的任何人来说,了解权限对于确保只有授权用户才能查看和修改数据至关重要。

本文介绍不同类型的 SQL Server 权限,包括服务器级和数据库级用户权限,并提供有关如何管理它们的指南。

SQL Server 安全性的关键组件

Microsoft SQL Server 是一种关系数据库管理系统 (DBMS),支持企业 IT 环境中的各种事务处理、商业智能和分析应用程序。 Microsoft SQL Server 是市场领先的三大数据库技术之一。

SQL Server 具有三个主要安全组件,使 DBA 和系统管理员能够控制哪些用户可以登录服务器、他们可以访问哪些数据以及允许他们对这些数据执行哪些操作。这些组件是:

  • 安全主体 - 被授权访问特定 SQL Server 实例的人员或进程
  • 安全对象 - 访问受到监管的服务器和数据库资源
  • 权限 - 主体对特定安全对象拥有的访问类型

安全负责人

安全主体是使用 SQL Server 的身份,可以被授予访问和修改数据的权限。主体可以是被视为人的个人、用户组、角色或实体(例如 dbowner、dbo 或 sysadmin)。

安全主体可以通过两种方式创建和管理:

  • SQL Server Management Studio (SSMS) - 此环境专为管理各种 SQL 基础结构而构建,包括 SQL Server 和 Azure SQL 数据库。 SMSS 提供的工具用于:

    • SQL Server 和数据库配置、监控和实例管理
  • 部署、监控和升级数据层应用程序组件
  • 构建查询和脚本
  • Transact-SQL (T-SQL) — 这种 SQL 的专有扩展对于利用 Microsoft SQL 服务至关重要。本文提供的所有数据库命令都是T-SQL语句。
  • 基于角色的安全性

    SQL Server 支持安全主体的基于角色的访问控制。角色与 Microsoft Windows 安全组类似:您可以定义各种角色,分配权限和限制,并将用户添加到与其工作职责相对应的服务器角色中。分配给特定角色的权限由该角色的所有成员继承,因此无需为各个用户创建和管理唯一的权限集。

    服务器级和数据库级角色都可以使用。

    服务器级角色

    顾名思义,服务器角色允许您授予服务器级别的权限。服务器角色有两种类型:

    • 固定服务器角色 - SQL Server 提供九种固定服务器角色;您可以将主体分配给这些角色,但无法更改角色权限。固定服务器角色很方便并且支持向后兼容性,但建议尽可能使用用户定义的角色,因为它们使您能够微调权限。请注意,SQL 数据库支持固定服务器角色。但是,它包含两个角色:dbmanagerloginmanager,其行为类似于服务器角色。
    • 用户定义的服务器角色 - 您可以分配主体并更改角色权限。

    创建用户定义的服务器角色很简单:

    1. 使用以下命令创建角色:
    CREATE SERVER ROLE serverrole
    1. 使用如下示例所示的命令向角色授予权限:
    GRANT ALTER ANY DATABASE TO serverrole
    1. 使用以下命令将主体添加到角色:
    ALTER SERVER ROLE serverrole ADD MEMBER [testexampleuser]

    重复步骤 2 和 3 以授予其他权限并向角色添加更多主体。

    数据库级角色

    数据库角色的工作方式与服务器角色相同,只不过数据库角色允许您分配数据库级权限而不是服务器级权限。

    要创建数据库角色,请使用上面针对服务器角色详细介绍的相同过程。例如,您可以使用以下命令:

    CREATE ROLE dbrole
    
    GRANT SELECT ON DATABASE::TestDatabase TO dbrole
    
    ALTER ROLE dbrole ADD MEMBER exampleuser2

    有价证券

    委托人获得对安全资产的许可。安全资产是对其访问进行监管的资源。安全对象可以具有嵌套的层次结构,称为“范围”,这些层次结构也可以受到保护。安全范围是服务器、数据库和模式。 (数据库模式是一种骨架结构,代表整个数据库的逻辑视图。它定义了数据的组织方式以及数据之间的关系如何相关。它阐明了必须应用于数据的所有约束。)

    权限

    权限是授予特定安全对象的访问类型。在服务器级别,权限分配给 SQL Server 登录名和服务器角色。在数据库级别,它们被分配给数据库用户和数据库角色。

    您可以通过三种主要方式来控制权限:

    • Grant — GRANT 语句使主体能够访问指定的安全对象。
    • 拒绝 - DENY 语句阻止主体访问指定的安全对象。
    • 撤销 - REVOKE 语句删除先前授予特定安全对象的权限。

    请注意,DENY 权限语句会覆盖所有授予的权限。

    权限的层次结构

    安全对象被组织成由服务器、数据库、模式以及这些模式中包含的对象组成的层次结构。可以在服务器、数据库、模式或单个对象级别分配权限。

    请注意,在层次结构的较高级别授予的权限会自动应用于较低级别,除非您明确拒绝将这些权限授予安全对象的子对象和孙对象。

    如何安全地管理 SQL Server 权限

    错误分配的权限可能会给数据安全带来严重风险,并对试图完成任务的员工造成重大干扰。以下最佳实践将帮助您避免这些问题。

    坚持最小特权原则

    仅授予每个用户执行其任务所需的权限 - 不多也不少。以下是一些用户示例以及他们可能需要的访问级别:

    • SQL Server 管理员 - 需要能够添加和删除整个数据库
    • 开发人员 — 需要创建、设计、修改和删除数据库对象
    • 应用程序 - 需要查看和编辑数据
    • 最终用户 - 需要以只读方式使用数据,或者同时读取和编辑数据

    使用角色

    利用 SQL Server 提供的基于角色的安全选项来分配权限。使用角色,而不是为单个用户分配独特的权限,不仅更方便,而且更准确。

    了解权限和继承的层次结构

    如前所述,SQL Server 安全对象按层次结构分组。服务器拥有其上的数据库,数据库拥有模式,模式拥有对象。可以在这些级别中的任何级别分配权限。授予用户或角色对特定级别的访问权限会自动授予他们对其以下所有级别的访问权限,除非针对子对象或孙对象明确拒绝或撤销访问权限。

    此外,由于嵌套的层次结构,主体、安全对象和权限都可以相互继承。例如,主体可以是一个角色,分配给它的所有权限将自动应用于该角色的所有成员。

    Netwrix Auditor 如何增强 SQL Server 安全性

    了解 SQL Server 权限对于有效管理它们至关重要。 Netwrix Auditor for SQL Server 可以帮助您了解权限并监视权限的更改。 你得到:

    • 控制 SQL Server 权限 - 帮助您了解谁有权访问 SQL Server 中的内容并确定如何授予这些权限
    • 服务器级别更改审核 - 跟踪所有 SQL Server 配置更改,例如权限更新或 SQL Server 实例删除
    • 数据库级更改审核 - 监控数据库内容和对象更改

    此外,Netwrix Auditor 还提供:

    • 详细的登录监控 - 报告登录 SQL Server 的成功和失败尝试,以帮助您检测和解决未经授权的访问和网络攻击
    • 威胁模式警报 - 通知您需要立即关注的关键事件,例如权限更改和尝试访问重要数据库
    • 自动化审计报告和仪表板 - 通过提供具有过滤、排序和导出功能的全面预定义报告和仪表板来增强 SQL 审计日志

    您需要 登录账户 后才能发表评论

    取消回复欢迎 发表评论:

    关灯