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…
语句将用户添加到角色中。