16.1 SQL Server角色简介

SQL Server角色

简介

角色是一组权限。角色帮助简化权限管理。例如,可以将权限分组到一个角色中,并将用户添加到该角色中,而不是单独为用户分配权限:

  • 首先创建一个角色
  • 其次,为角色分配权限。
  • 第三步,向角色添加一个或多个用户。

SQL Server为提供了三种主要角色类型:

  • 服务器级角色–管理SQL Server上的权限,如更改服务器配置。
  • 数据库级角色–管理对数据库的权限,如创建表和查询数据。
  • 应用程序级角色–允许应用程序以其自己的、类似用户的权限运行。

对于每种类型,SQL Server提供两种类型:

  • 固定的服务器角色:是SQL server提供的内置角色。这些角色具有固定的权限集。
  • 用户自定义的角色:是为满足特定安全要求而定义的角色。

把用户添加到角色示例

首先,创建一个新LOGIN账号名为tiger:

CREATE LOGIN tiger
WITH PASSWORD='UyxIv.12';

然后,将当前数据库切换到BikeStores,并为tiger登录创建一个同名用户tiger:

Use BikeStores;

CREATE USER tiger
FOR LOGIN tiger;

然后,使用用户tiger连接到BikeStores数据库。tiger可以查看BikeStores数据库,但无法查看任何数据库对象。

此时,我们将用户tiger添加到db_datareader角色:

ALTER ROLE db_datareader
ADD MEMBER tiger;

db_datareader是一个固定的数据库角色。db_datareader角色允许所有成员从数据库中的所有用户表和视图读取数据。从技术上讲,它相当于以下GRANT语句:

GRANT SELECT 
ON DATABASE::BikeStores
TO tiger;

在本例中,DATABASE是一个类类型,它表示::后面的安全资源是一个数据库。以下是可用的类类型:

  • LOGIN
  • DATABASE
  • OBJECT
  • ROLE
  • SCHEMA
  • USER

最后,将连接切换到用户tiger并从销售订单表中查询数据:

SELECT * FROM sales.orders;

创建用户自定义角色

下面的示例创建一个新的用户和角色,授予该角色的权限,并向该角色添加一个用户。

首先将当前数据库切换到master,并且创建一个新登录账号mary:

USE master;

CREATE LOGIN mary 
WITH PASSWORD='XUjxse19!';

其次,将当前数据库切换到BikeStores,并为登录mary创建一个名为mary的同名新用户:

USE BikeStores;

CREATE USER mary 
FOR LOGIN mary;

第三步,在BikeStores数据库创建一个新角色,名为sales_report

CREATE ROLE sales_report;

在本例中,使用CREATE ROLE语句创建一个新角色。sales_report是角色名。

第四步,将Sales架构上的SELECT权限授予sales_report角色:

GRANT SELECT 
ON SCHEMA::Sales 
TO sales_report;

第五步,将用户mary添加到sales_report角色:

ALTER ROLE sales_report
ADD MEMBER mary;

最后,使用用户mary连接到BikeStores数据库。此时,用户mary只能看到Sales架构中的表。此外,用户mary只能从此Sales架构中的表中查询数据,因为用户mary是具有SELECT权限的sales_report角色的成员。

SELECT * from Sales.orders;

总结

  • 角色相当于是一组权限。
  • 使用CREATE ROLE语句创建新角色。
  • 使用ALTER ROLE…ADD MEMBER…语句将用户添加到角色中。
posted @ 2023-01-30 21:35  平元兄  阅读(665)  评论(0编辑  收藏  举报