您现在的位置是:亿华云 > 域名

数据库权限分配探讨

亿华云2025-10-08 23:20:01【域名】0人已围观

简介上周, 有位朋友给我提出了这样的需求:区分用户访问数据库的权限。顺便总结了下有如下要求:某个用户查询所有数据库的权限 某个用户只有备份数据库的权限 给一个用户只能查看指定数

上周,数据 有位朋友给我提出了这样的库权需求:区分用户访问数据库的权限。顺便总结了下有如下要求:

某个用户查询所有数据库的限分权限 某个用户只有备份数据库的权限 给一个用户只能查看指定数据库的权限 给一个用户只有某个表的权限

要进行以上任务,首先我们先了解下数据库的配探权限相关的内容

主体

“主体” 是可以请求 SQL Server资源的实体。 与 SQLServer授权模型的数据其他组件一样,主体也可以按层次结构排列。库权 主体的限分影响范围取决于主体定义的范围(Windows、服务器或数据库)以及主体是配探否不可分或是一个集合。 例如,数据Windows登录名就是库权一个不可分主体,而Windows组则是限分一个集合主体。 每个主体都具有一个安全标识符(SID)。配探

Windows级别的数据主体

Windows域登录名

Windows 本地登录名

SQL Server-级的主体

SQL Server登录名

服务器角色

数据库级的主体

数据库用户

数据库角色

应用程序角色

SQLServer sa登录名

SQL Server sa登录名是服务器级的高防服务器主体。 默认情况下,库权该登录名是限分在安装实例时创建的。

public数据库角色

每个数据库用户都属于 public数据库角色。 当尚未对某个用户授予或拒绝对安全对象的特定权限时,则该用户将继承授予该安全对象的public角色的权限。

INFORMATION_SCHEMA和 sys

每个数据库都包含两个实体:

INFORMATION_SCHEMA和 sys,它们都作为用户出现在目录视图中。这两个实体是 SQL Server 所必需的。 它们不是主体,不能修改或删除它们。

基于证书的 SQL Server登录名

名称由双井号 (##)括起来的服务器主体仅供内部系统使用。 下列主体是在安装 SQL Server时从证书创建的,不应删除。

##MS_SQLResourceSigningCertificate##

##MS_SQLReplicationSigningCertificate##

##MS_SQLAuthenticatorCertificate##

##MS_AgentSigningCertificate##

##MS_PolicyEventProcessingLogin##

##MS_PolicySigningCertificate##

##MS_PolicyTsqlExecutionLogin##

guest用户

每个数据库包括一个guest。 授予guest用户的权限由对数据库具有访问权限,但在数据库中没有用户帐户的用户继承。不能删除guest用户,但可通过撤消该用户的亿华云计算CONNECT权限将其禁用。 可以通过在master或 tempdb以外的任何数据库中执行 REVOKE CONNECTFROM GUEST来撤消 CONNECT权限。

客户端和数据库服务器

根据定义,客户端和数据库服务器是安全主体,可以得到保护。 在建立安全的网络连接前,这些实体之间可以互相进行身份验证。 SQLServer支持 Kerberos身份验证协议,该协议定义客户端与网络身份验证服务交互的方式。

创建数据库用户

SQL2016中支持11种用户类型:

用户基于登录名在 master这是最常见的用户类型。

基于登录名基于的Windows Active Directory帐户的用户

CREATE USER [Contoso\Fritz];

基于Windows组的登录名的用户。 CREATE USER [Contoso\Sales];

基于使用 SQLServer身份验证的登录名的用户。 CREATE USER Mary;

在数据库进行身份验证的用户建议以帮助使你的数据库可移植性。

始终允许在 SQL Database。 中包含的数据库中只允许存在 SQL Server。

基于无登录名的 Windows用户的用户

CREATEUSER [Contoso\Fritz];

基于无登录名的服务器托管Windows组的用户。 CREATE USER [Contoso\Sales];

中的用户 SQLDatabase或 SQL数据仓库 基于 Azure Active Directory的用户。 CREATE USER [Contoso\Fritz] FROMEXTERNAL PROVIDER;

拥有密码的包含数据库用户。 (在中不可用 SQL数据仓库。)CREATE USER Mary WITHPASSWORD =

很赞哦!(45874)