[玩转系统] 如何在 SQL Server 中实现行级和列级安全性
作者:精品下载站 日期:2024-12-14 06:05:23 浏览:11 分类:玩电脑
如何在 SQL Server 中实现行级和列级安全性
SQL Server 包含一系列安全功能。其中最有价值的两个是列级安全性和行级安全性,它们使您能够精细地授予用户对表中行和列的访问权限。本文介绍如何在您的环境中实现这些功能。
担保物、委托人和权限
在深入研究行和列安全性之前,我们需要回顾一些 SQL Server 安全基础知识。基本上,数据库安全涉及允许某人访问数据库中存储的数据并对其执行操作。 “某人”是主体,他们被允许采取的操作是他们的权限,并且执行操作的数据是安全的 - 安全对象的示例包括数据库、表、模式、行和列。
让我们看一下可应用于安全对象的权限:
- SELECT — 委托人需要此权限才能从表中获取或读取数据。
- INSERT — 委托人需要此权限才能向表中添加新行。
- 更新 - 委托人需要此权限才能修改表中的数据。
- DELETE — 委托人需要此权限才能从表中删除行。
- 引用 — 如果委托人对表没有其他权限,则他们需要此权限才能创建表的外键。
SQL Server 列级安全性
SQL Server中有两种保护列的方法:列级权限和列级加密。对于管理员来说,最棒的是这两种技术可以结合起来。
列级权限
列级权限为数据库中的数据提供更细粒度的安全性。您不需要为每一列执行单独的 GRANT 或 DENY 语句;只需在查询中将它们全部命名即可:
GRANT SELECT ON data1.table (column1, column2) TO user1;
GO
DENY SELECT ON data1.table (column3) TO user1;
GO
如果您在表级别对用户的列执行 DENY 语句,然后对同一列执行 GRANT 语句,则 DENY 权限将被删除,并且用户可以访问该列。同样,如果执行GRANT,然后执行DENY,则DENY权限将生效。
列级加密
列级加密是对列中数据的直接加密。它需要更改代码,因为它只能在对数据库进行编程时应用。这是一种加密数据的精细方式,因此只能加密特定列或部分列。您甚至可以对不同的列使用不同的加密密钥。列级加密需要二进制列来存储加密数据。而且,它把密钥存储在服务器上,因此SQL数据库需要信任存储密钥的服务器。
列级加密使用对称密钥来加密数据,因为这有助于保持生产力,并且每个对称密钥都受到非对称密钥的保护。您可以对对称密钥使用不同的算法,但 AES 是最佳选择。此外,对称密钥还可以使用密码或主密钥进行保护。
为了保证密钥的安全,您可以使用 SQL 权限来限制只有受信任的用户帐户才能访问它们。另一个重要注意事项是加密数据不可索引;如果你想索引它,你需要先解密它。
要实现列级加密,我们需要采取以下步骤:
- 首先,我们创建数据库主密钥来加密对称密钥。这可以使用CREATE MASTER KEY命令和ENCRYPTION BY PASSWORD参数来完成,该参数定义了加密密钥的密码:
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'P@$$w0rd'
GO
- 然后我们必须创建一个对称密钥,但为了确保它的安全,我们应该制作一个数字签名的证书。要创建证书,请使用CREATE CERTIFICATE命令,该命令将受到我们的主密钥的保护。然后我们可以使用CREATE SYMMETRIC KEY命令和AES_256加密算法创建对称密钥。
CREATE CERTIFICATE SelfSignedCertificate WITH SUBJECT = 'Column Encryption';
GO
CREATE SYMMETRIC KEY SQLSymmetricKey
WITH ALGORITHM = AES_256
ENCRYPTION BY CERTIFICATE SelfSignedCertificate;
GO
- 接下来,我们需要向表中添加一列来存储加密数据。
USE DB;
GO
ALTER TABLE Testtable
ADD EncryptedColumn varbinary(MAX )NULL
GO
- 为了加密表数据,我们需要打开对称密钥并更新表。
OPEN SYMMETRIC KEY SQLSymmetricKey
DECRYPTION BY CERTIFICATE SelfSignedCertificate;
- 一旦对称密钥打开,我们就需要更新表。
UPDATE Testtable
SET [EncryptedColumn] = EncryptByKey(Key_GUID('SQLSymmetricKey'), ColumnWithSensitiveData);
GO
select * from Testtable
- 加密列已创建;它包含 columnwithsensitivedata 的加密数据 为了实现我们的 SQL Server 安全目标,我们应该使用 DROP 命令删除现有的纯文本 columnwithsensitivedata 列,并仅保留加密列。
SQL Server 行级安全性
行级安全性(RLS)允许开发人员逐行控制用户对信息的访问权限;每个用户只能看到他们有权访问的行。此安全功能具有高级别的权限集,因为它绕过现有的 SQL Server 安全访问列表。它由三部分组成:
- 谓词函数 — 这是一个架构函数,用于控制执行查询的用户帐户是否有权访问该行。
安全谓词 - 安全谓词将谓词函数绑定到表。有两种类型的安全谓词:
- 过滤谓词 — 这限制了行上的读取操作 (SELECT)。此过滤是静默完成的,没有任何事件日志。
- 块谓词 — 这限制了行上的写入操作 (INSERT)。 BLOCK 谓词有四种类型:AFTER INSERT、BEFORE UPDATE、AFTER UPDATE 和 BEFORE DELETE 操作。
逻辑很简单:谓词函数根据某些参数定义是允许还是阻止用户可以访问的行,然后将该函数应用于具有安全策略的表并变为活动状态。让我们仔细看看这个过程:
- 首先,我们需要创建一个过滤谓词。对于此示例,如果用户与该行的 privilegeuser 列匹配或者用户名为 ADMIN,我们将允许该用户访问该行。
CREATE FUNCTION dbo.NewPredicateFunction
( @privilegeuser AS SYSNAME )
RETURNS TABLE
WITH SCHEMABINDING
AS
RETURN SELECT 1 AS AccessRight
WHERE @privilegeuser = USER_NAME() OR USER_NAME() = 'ADMIN'
GO
- 接下来,我们通过执行以下脚本来创建安全策略,该脚本将我们刚刚创建的谓词函数添加为测试表上的过滤谓词。
CREATE SECURITY POLICY PrivacyPolicy
ADD FILTER PREDICATE
dbo.NewPredicateFunction(privilegeuser) ON dbo.testtable
WITH (STATE = ON)
就这样。我们的安全策略在 SQL 数据库中处于活动状态,并且将允许用户仅访问其行,同时允许 ADMIN 帐户访问所有行。
猜你还喜欢
- 03-30 [玩转系统] 如何用批处理实现关机,注销,重启和锁定计算机
- 02-14 [系统故障] Win10下报错:该文件没有与之关联的应用来执行该操作
- 01-07 [系统问题] Win10--解决锁屏后会断网的问题
- 01-02 [系统技巧] Windows系统如何关闭防火墙保姆式教程,超详细
- 12-15 [玩转系统] 如何在 Windows 10 和 11 上允许多个 RDP 会话
- 12-15 [玩转系统] 查找 Exchange/Microsoft 365 中不活动(未使用)的通讯组列表
- 12-15 [玩转系统] 如何在 Windows 上安装远程服务器管理工具 (RSAT)
- 12-15 [玩转系统] 如何在 Windows 上重置组策略设置
- 12-15 [玩转系统] 如何获取计算机上的本地管理员列表?
- 12-15 [玩转系统] 在 Visual Studio Code 中连接到 MS SQL Server 数据库
- 12-15 [玩转系统] 如何降级 Windows Server 版本或许可证
- 12-15 [玩转系统] 如何允许非管理员用户在 Windows 中启动/停止服务
取消回复欢迎 你 发表评论:
- 精品推荐!
-
- 最新文章
- 热门文章
- 热评文章
[影视] 黑道中人 Alto Knights(2025)剧情 犯罪 历史 电影
[古装剧] [七侠五义][全75集][WEB-MP4/76G][国语无字][1080P][焦恩俊经典]
[实用软件] 虚拟手机号 电话 验证码 注册
[电视剧] 安眠书店/你 第五季 You Season 5 (2025) 【全10集】
[电视剧] 棋士(2025) 4K 1080P【全22集】悬疑 犯罪 王宝强 陈明昊
[软件合集] 25年6月5日 精选软件22个
[软件合集] 25年6月4日 精选软件36个
[短剧] 2025年06月04日 精选+付费短剧推荐33部
[短剧] 2025年06月03日 精选+付费短剧推荐25部
[软件合集] 25年6月3日 精选软件44个
[剧集] [央视][笑傲江湖][2001][DVD-RMVB][高清][40集全]李亚鹏、许晴、苗乙乙
[电视剧] 欢乐颂.5部全 (2016-2024)
[电视剧] [突围] [45集全] [WEB-MP4/每集1.5GB] [国语/内嵌中文字幕] [4K-2160P] [无水印]
[影视] 【稀有资源】香港老片 艺坛照妖镜之96应召名册 (1996)
[剧集] 神经风云(2023)(完结).4K
[剧集] [BT] [TVB] [黑夜彩虹(2003)] [全21集] [粤语中字] [TV-RMVB]
[实用软件] 虚拟手机号 电话 验证码 注册
[资源] B站充电视频合集,包含多位重量级up主,全是大佬真金白银买来的~【99GB】
[影视] 内地绝版高清录像带 [mpg]
[书籍] 古今奇书禁书三教九流资料大合集 猎奇必备珍藏资源PDF版 1.14G
[电视剧] [突围] [45集全] [WEB-MP4/每集1.5GB] [国语/内嵌中文字幕] [4K-2160P] [无水印]
[剧集] [央视][笑傲江湖][2001][DVD-RMVB][高清][40集全]李亚鹏、许晴、苗乙乙
[电影] 美国队长4 4K原盘REMUX 杜比视界 内封简繁英双语字幕 49G
[电影] 死神来了(1-6)大合集!
[软件合集] 25年05月13日 精选软件16个
[精品软件] 25年05月15日 精选软件18个
[绝版资源] 南与北 第1-2季 合集 North and South (1985) /美国/豆瓣: 8.8[1080P][中文字幕]
[软件] 25年05月14日 精选软件57个
[短剧] 2025年05月14日 精选+付费短剧推荐39部
[短剧] 2025年05月15日 精选+付费短剧推荐36部
- 最新评论
-
- 热门tag