设置数据库角色:更佳实践攻略 (数据库角色如何设置)

随着公司业务的不断扩张,数据库角色的设置变得越来越重要,它可以管理数据库中不同的用户和数据访问权限。如果角色设置不当,那么就可能导致安全漏洞和数据丢失等问题。

因此,一份完善的数据库角色设置方案是任何企业应该考虑的关键问题之一。本文将介绍一些更佳实践攻略,帮助您正确地设置数据库角色,以确保数据的安全性、完整性和可靠性。

准则 1:分配最少的权限

最小权限原则是设置数据库角色的基本原则之一。实现这一原则的唯一方法是只为每个角色授予它所需要的更低级别的页面访问权限。

这是因为配置角色太多权限会增加不必要的风险,若有人因为错误而获得数据库管理员角色,则他/她可以更改有关数据库的任何项目,包括创建、删除或更改表格、修改数据库安全设置等。此外,它还可以访问数据库服务器上的所有文件,甚至是操作系统级别的文件。因此,要保护数据库,需为每个角色分配最少的权限。

准则 2:角色应该指定单个用户或用户组

在创建角色时,更好明确规定角色是针对单个用户还是用户组而创建的。通过这样设置角色,可以确保在对数据库的访问方面保持全面的控制。如果您实施了这样的设置,则您不必担心未经授权访问数据库的问题。

另外,如果您分配角色给一个用户组,那么您可以通过简单地从该用户组中删除某个用户来减少数据库的可访问性。这对于正在处理组合记录或关系的数据库来说,是非常重要的。

准则 3:分类数据访问

对于特定类型的数据库,例如金融服务、医疗保健等相关行业,严格对数据访问进行分类极其重要。您可以根据数据的公开性、隐私级别等重要性因素,将数据库用户分配到不同的角色中。

更进一步地说,可根据各用户的职能说明、工作要求以及安全计划来识别哪些用户需要哪些访问权限。通过限制数据的访问权限和使用级别,将有助于防止非授权用户访问敏感数据。

准则 4:授权特定的操作

设置角色的更佳实践之一是授权特定的操作。例如,您可以将某个用户角色分配为只能查看某些表的特定列,而不能进行其他更改。

此外,您可以信任某些用户组能够执行特定的数据库操作,以及为个别用户设置特定的任务或操作,前提是他们确实需要这些操作权限。此外,对于那些在较短时间内不再需要某些权限的用户,更好在任务完成后取消其权限。

准则 5:分离业务数据和管理数据访问

如果有人能够拥有数据库管理角色的操作权限,那么他们就可以控制所有用户角色的访问级别。这就使管理员成为了数据库访问权限的核心,因此,必须将业务数据访问与管理数据访问分离。

更好的方法是通过创建不同的角色和由单个用户或组所拥有的权限来实现这一目标。然后,您可以设置不同模块之间的链接来保护应用程序的完整性。

结论:

在数据库的存储和管理中,安全性和完整性仍是至关重要的。它对于组织和企业至关重要。正确地设置数据库角色是实现这些目标的必要条件。根据上述准则,可以创建数据库角色管理策略,保护敏感数据,保护数据库不受任何突发的非法访问和数据丢失。

相关问题拓展阅读:

sql 数据库中syadmin固定服务器怎么添加角色

数据库角色的成员可以分为如下几类:

Windows用户组或用户账户

SQL Server登录

其他角色

SQL Server的安吵缺全体系结构中包括了几个含有特定隐含权限的角色。除了数据库拥有者创建的角色之外,还有两类预定义的角色。这些可以创建的角色可以分为如下几类:

固定服务器

固定数据库

用户自定义

固定服务器

由于固定服务器是在服务器层次上定义的,因此它们位于从属于数据库服务器的数据库外面。下表列出了所有现有的固定服务器角色。

固定服务器角色

说 明

sysadmin

执行SQL Server中的任何动作

serveradmin

配置服务器设置

setupadmin

安装复制和管理扩展过程

securityadmin

管理登录和CREATE DATABASE的权限以及阅读审计

processadmin

管理SQL Server进程

dbcreator

创建和修改数据库

diskadmin

管理磁盘文件

下面两个系统过程用来添加或删除固定服务器角色成员:

sp_addsrvrolemember

sp_dropsrvrolemember

注意:您不能添加、修改或删除固定服务器角色。另外,只有固定服务器角色的成员才能执行上述两个系统过程来从角色中添加或删除登录账户。

sa登录

sa登录是系统管理员的登录。在以前的SQL Server版本中不存在角色,sa登录具有仿宽所有可能的关于系统管理工作的权限。在SQL Server 2023中,sa登录保持了向后兼容性升大辩。sa登录永远是固定服务器角色syadmin中的成员,并且不能从该角色中删除。

注意:只有当没有其他方法登录到SQL Server系统中时,再使用sa登录。

固定服务器角色及其权限

在某个SQL Server系统中,每个固定服务器角色都有其隐含的权限。使用系统过程sp_srvrolepermission可以浏览每个固定服务器角色的权限。该系统过程的语法形式为:

sp_srvrolepermission ‘role’>

如果没有指定role的值,那么所有的固定服务器角色的权限都将显示出来。下面的部分将讨论每个固定服务器角色的权限。

1. sysadmin

固定服务器角色sysadmin的成员被赋予了SQL Server系统中所有可能的权限。例如,只有这个角色中的成员(或一个被这个角色中的成员赋予了CREATE DATABASE权限的用户)才能够创建数据库。

固定服务器角色和sa登录之间有着特殊的关系。sa登录一直都是固定服务器角色中的成员,并且不能从该角色中删除。

2. serveradmin

固定服务器角色serveradmin的成员可以执行如下的动作:

向该服务器角色中添加其他登录

运行dbcc pintable命令(从而使表常驻于主内存中)

运行系统过程sp_configure(以显示或更改系统选项)

运行reconfigure选项(以更新系统过程sp_configure所做的所有改动)

使用shutdown命令关掉数据库服务器

运行系统过程sp_tableoption为用户自定义表设置选项的值

3. setupadmin

固定服务器角色setupadmin中的成员可以执行如下的动作:

向该服务器角色中添加其他登录

添加、删除或配置链接的服务器

执行一些系统过程,如sp_serveroption

4. securityadmin

固定服务器角色securitypadmin中的成员可以执行关于服务器访问和安全的所有动作。这些成员可以进行如下的系统动作:

向该服务器角色中添加其他登录

读取SQL Server的错误日志

运行如下的系统过程:如sp_addlinkedsrvlogin、sp_addlogin、sp_defaultdb、sp_defaultlanguage、sp_denylogin、sp_droplinkedsrvlogin、sp_droplogin、sp_grantlogin、sp_helplogins、sp_remoteoption和sp_revokelogin(所有这些系统过程都与

系统安全

相关。)

5. processadmin

固定服务器角色processadmin中的成员用来管理SQL Server进程,如中止用户正在运行的查询。这些成员可以进行如下的动作:

向该服务器角色中添加其他登录

执行KILL命令(以取消用户进程)

6. dbcreator

固定服务器角色dbcreator中的成员用来管理与数据库创建和修改有关的所有动作。这些成员可以进行如下的动作:

向该服务器角色中添加其他登录

运行CREATE DATABASE和ALTER DATABASE语句

使用系统过程sp_renamedb来修改数据库的名称

7. diskadmin

固定服务器角色diskadmin的成员可以进行如下与用来存储数据库对象的文件和文件组有关的动作:

向该服务器角色中添加其他登录

运行如下系统过程:sp_ddumpdevice和sp_dropdevice。

运行DISK INIT语句

固定数据库角色

固定数据库角色在数据库层上进行定义,因此它们存在于属于数据库服务器的每个数据库中。下表列出了所有的固定数据库角色。

固定数据库角色

说 明

db_owner

可以执行数据库中技术所有动作的用户

db_accessadmin

可以添加、删除用户的用户

db_datareader

可以查看所有数据库中用户表内数据的用户

db_datawriter

可以添加、修改或删除所有数据库中用户表内数据的用户

db_ddladmin

可以在数据库中执行所有DDL操作的用户

db_securityadmin

可以管理数据库中与安全权限有关所有动作的用户

db_backoperator

可以备份数据库的用户(并可以发布DBCC和CHECKPOINT语句,这两个语句一般在备份前都会被执行)

db_denydatareader

不能看到数据库中任何数据的用户

db_denydatawriter

不能改变数据库中任何数据的用户

除了上表中列出的固定数据库角色之外,还有一种特殊的固定数据库角色,名为public,这里将首先介绍这一角色。

public角色

public角色是一种特殊的固定数据库角色,数据库的每个合法用户都属于该角色。它为数据库中的用户提供了所有默认权限。这样就提供了一种机制,即给予那些没有适当权限的所有用户以一定的(通常是有限的)权限。public角色为数据库中的所有用户都保留了默认的权限,因此是不能被删除的。

一般情况下,public角色允许用户进行如下的操作:

使用某些系统过程查看并显示master数据库中的信息

执行一些不需要一些权限的语句(例如PRINT)

固定数据库角色及其权限

在数据库中,每个固定数据库角色都有其特定的权限。这就意味着对于某个数据库来说,固定数据库角色的成员的权限是有限的。使用系统过程sp_dbfixedrolepermission就可以查看每个固定数据库角色的权限。该系统过程的语法为:

sp_db.xedrolepermission ‘role’>

如果没有指定role的值,那么所有固定数据库角色的权限都可以显示出来。下面的几节将讨论每个固定数据库角色的权限。

1. db_owner

固定数据库角色db_owner的成员可以在特定的数据库中进行如下的动作:

向其他固定数据库角色中添加成员,或从其中删除成员

运行所有的DDL语句

运行BACKUP DATABASE和BACKUP LOG语句

使用CHECKPOINT语句显式地启动检查点进程

运行下列dbcc命令:dbcc checkalloc、dbcc checkcatalog、dbcc checkdb、dbcc updateusage

授予、取消或剥夺每一个数据库对象上的下列权限:SELECT、INSERT、UPDATE、DELETE和REFERENCES

使用下列系统过程向数据库中添加用户或角色:sp_addapprole、sp_addrole、sp_addrolemember、sp_approlepassword、sp_changeobjectowner、sp_dropapprole、sp_droprole、sp_droprolemember、sp_dropuser、sp_grantdbaccess

使用系统过程sp_rename为任何数据库对象重新命名

2. db_accessadmin

固定数据库角色db_accessadmin的成员可以执行与数据库访问有关的所有动作。这些角色可以在具体的数据库中执行下列操作:

运行下列系统过程:sp_addalias、sp_dropalias、sp_dropuser、sp_grantdbacess、sp_revokedbaccess

为Windows用户账户、Windows组和SQL Server登录添加或删除访问

3. dbdatareader

固定数据库角色dbdatareader的成员对数据库中的数据库对象(表或视图)具有SELECT权限。然而,这些成员不能把这个权限授予其他任何用户或角色。(这个限制对REVOKE语句来说同样成立。)

4. dbdatawriter

固定数据库角色dbdatawriter的成员对数据库中的数据库对象(表或视图)具有INSERT、UPDATE和DELETE权限。然而,这些成员不能把这个权限授予其他任何用户或角色。(这个限制对REVOKE语句来说也同样成立。)

5. db_ddladmin

固定数据库角色db_ddladmin的成员可以进行如下的动作:

运行所有DDL语句

对任何表上授予REFERENCESE权限

使用系统过程sp_procoption和sp_recompile来修改任何存储过程的结构

使用系统过程sp_rename为任何数据库对象重命名

使用系统过程sp_tableoption和sp_changeobjectowner分别修改表的选项和任何数据库对象的拥有者

6. db_securityadmin

固定数据库角色db_securityadmin的成员可以管理数据库中的安全。这些成员可以进行如下的动作:

运行与安全有关的所有Transact-SQL语句(GRANT、DENY和REVOKE)

运行以下系统过程:sp_addapprole、sp_addrole、sp_addrolemember、sp_approlepassword、sp_changeobjectowner、sp_dropapprole、sp_droprole、sp_droprolemember

7. db_backupoperator

固定数据库角色db_backupoperator的成员可以管理数据库备份的过程。这些成员可以进行如下动作:

运行BACKUP DATABASE和BACKUP LOG语句

用CHECKPOINT语句显式地启动检查点进程

运行如下dbcc命令:dbcc checkalloc、dbcc checkcatalog、dbcc checkdb、dbcc updateusage

8. db_denydatareader和db_denydatawriter

顾名思义,固定数据库角色db_denydatareader的成员对数据库中的数据库对象(表或视图)没有SELECT权限。如果数据库中含有敏感数据并且其他用户不能读取这些数据,那么就可以使用这个角色。

数据库角色如何设置的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于数据库角色如何设置,设置数据库角色:更佳实践攻略,sql 数据库中syadmin固定服务器怎么添加角色的信息别忘了在本站进行查找喔。


数据运维技术 » 设置数据库角色:更佳实践攻略 (数据库角色如何设置)