前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >数据库角色

数据库角色

作者头像
用户1217611
发布2022-05-06 16:36:38
7370
发布2022-05-06 16:36:38
举报
文章被收录于专栏:文渊之博文渊之博

数据库角色

为了帮助管理数据库级别的安全性,SQL Server具有数据库角色。就像服务器角色一样,也有两种不同类型的数据库角色:固定的和用户定义的。固定的数据库角色就像固定的服务器角色一样,这意味着它们拥有一组特定的权限,这些权限不能被更改。

固定的数据库角色只提供对特定数据库中的数据库资源的权限。如果数据库用户是固定数据库角色的成员,则它们继承为固定数据库角色预定义的权限。每个数据库包含相同的固定数据库角色集。表2包含每个固定数据库角色定义的名称和定义,如Microsoft文档中所示。

Table 2: 固定数据库角色

名称

成员权限描述

db_owner

可以对数据库执行所有的配置和维护活动,也可以在SQL Server中删除数据库。(在SQL Database和Azure Synapse中,一些维护活动需要服务器级别的权限,不能由db_owner执行。)

db_securityadmin

只能修改自定义角色的角色成员关系和管理权限。这个角色的成员可以潜在地提升他们的特权,他们的行为被监视。

db_accessadmin

可以为Windows登录用户、Windows组和SQL Server登录用户添加或删除对数据库的访问。

db_backupoperator

可以备份数据库

db_ddladmin

可以在数据库中运行任何DDL命令。

db_datawriter

增加、删除或者改变数据,在用户的表里面的

db_datareader

读取所有用户的表数据

db_denydatawriter

不能添加、修改或删除数据库中用户表中的任何数据。

db_denydatareader

不能读取数据库中用户表中的任何数据。

就像固定的服务器角色一样,可以使用许多系统存储过程、命令、视图和函数来显示和管理固定的数据库角色。清单4中的代码展示了如何使用这些系统存储过程sp_dbfixedrolepermission之一,显示与每个固定数据库角色相关联的所有权限在AdventureWorks2019数据库中,以及如何使用该存储过程显示的权限与单一db_datareader固定数据库角色。

Listing 4: 展示固定数据角色权限

USE AdventureWorks2019; GO -- Show all permissions for fix database roles EXEC sp_dbfixedrolepermission; GO --Show permissions for db_datareader EXEC sp_dbfixedrolepermission @rolename =  'db_datareader';

 为了让数据库用户继承固定数据库角色的权限,他们需要是固定数据库角色的成员。要确定数据库用户是否为数据库角色的成员,可以使用SSMS检查角色成员关系,具体步骤如下

  1. 连接到一个实例
  2. 扩展数据库
  3. 展开要查看固定数据库角色的数据库
  4. 展开Security项
  5. 展开Roles项
  6. 展开数据库角色项目
  7. 双击要在其中查看成员的角色
  8. 查看属性窗口显示以查看角色的成员

Figure 2 展示db_datareader 角色:

Figure 2:检查固定的数据库角色权限

应用程序可能需要以编程方式确定数据库用户是否是角色的成员。IS_MEMBER函数允许您编写TSQL代码来实现这一点。使用此函数将允许您构建一个应用程序,该应用程序根据当前用户的数据库角色为不同的数据库用户显示不同的菜单选项。以编程方式确定当前登录的数据库用户是否为db_datawriter角色的成员

Listing 5:

代码语言:javascript
复制
USE AdventureWorks2019;
GO
SELECT IS_MEMBER('db_datawriter');
GO

如果当前用户是db_datawriter角色的成员,则IS_MEMBER函数返回1;如果用户不是该角色的成员,则返回0。

预定义的服务器或数据库角色

SQL server中提供了几种预定义的服务器角色和数据库角色。这些预定义的角色为成员提供了一组基于角色的固定权限。通过使用这些预定义的角色,只需将登录用户或数据库用户设置为服务器或数据库角色的成员,就可以轻松地向他们授予对一组预定义权限的访问权限。在使用固定的服务器和数据库角色时要记住的一件事是,权限不能更改或扩展。使用预定义的服务器和数据库角色是一种极好的方式,可以通过最少的管理工作提供一组对服务器和/或数据库资源的固定访问。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-03-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 数据库角色
  • 预定义的服务器或数据库角色
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档