【安当产品应用案例100集】028-实现SQL Server数据库的透明加密

数据库是企业的重要资产,涉及多个方面的核心利益。为了帮助保护用户数据库的安全,可以采取以下预防措施:

  • 设计安全的系统
  • 对机密资产加密
  • 在数据库服务器外围构建防火墙

但恶意方如果窃取了硬盘或备份磁带等物理介质,就可以还原或附加数据库并浏览其数据。对此,TDE 可以防止恶意方尝试还原被盗的数据库文件,例如数据、日志、备份、快照和数据库副本。

一、TDE实现原理

在SQL Server数据库上启用 TDE 后,所有脱机数据库文件都使用指定的密钥进行加密,当数据库打开时,内存中的数据会被解密。同时,TDE还可对操作系统,也就是服务器上的用户做权限控制,预防高权限用户拷贝或移动数据,从而避免数据泄漏。整个过程中,用户不需要对应用程序进行任何更改,即可使用我们的安当TDE透明加密实现对数据库的保护。

二、透明加密步骤

使用安当TDE实现SQL Server数据库加密的步骤如下:

1.部署TDE客户端

在数据库服务器上安装TDE客户端软件,通常只需简单的安装步骤即可完成。

2.注册TDE客户端

安装完毕后,需要配置KSP服务地址及注册令牌以建立通信。注册成功后,TDE客户端便能够与KSP进行通信。

客户端注册成功:

3.确定数据的表空间存储位置

SQL Server的数据都是以库文件形式存储,此处我们需要加密的库为andang.mdf

4.配置加密策略

在KSP端创建自定义加密策略,包括定义资源集、用户集、进程集、安全规则以及密钥规则等元素。

  • 资源集:需加密的数据资源(如andang.mdf)
  • 用户集:与计算机系统进行交互的用户的集合(如Operator、backup、Admin等)
  • 进程集:指定用于加密和解密操作的系统进程(如记事本、数据库进程等)
  • 安全规则:控制用户访问权限
  • 密钥规则:用于文件加解密的密钥

在示例策略中,策略通过配置实现资源集,即我们指定的数据表的加密存储。配置操作系统用户Operator拥有所有操作权限,backup用户拥有复制及查看密文的权限,其余所有用户(包括Admin),都不允许对加密数据文件做任何操作。

5.下发保护点

创建并下发保护点,即指定要加密的文件或目录集合。通过合理配置保护点,可以确保关键数据在客户端上获得全面的加密保护。

保护点下发成功后,加密策略会自动推送到TDE客户端。随后,TDE客户端将策略转发至底层驱动程序进行解析,并根据策略对指定的资源集和本地应用进程实施加密和权限控制操作。至此,SQL Server数据库加密所需的五个步骤均已完成。接下来,我们将展示策略下发后的实际效果。

三、加密效果验证

1.使用具有全部操作权限的Operator用户访问加密文件,能正常访问

2.使用只能看见密文的backup用户访问加密文件,访问成功,且只能看见密文

3.使用没有任何权限的Admin用户访问加密文件,被拒绝访问

4.打开数据库连接工具操作数据库,数据库服务正常运行,未受任何影响

四、数据完整性校验

通过TDE的透明加密机制,数据库实例文件在存储过程中始终处于加密状态,即便是在静止状态下也能有效抵御未授权访问的风险。更重要的是,TDE内置了数据完整性校验功能,可以在每次读取或写入数据时自动进行校验,确保数据在传输和存储过程中未被篡改。

五、数据库性能影响评估

在启用安当TDE加密后,我们进行了大量测试,结果显示加密后对数据库操作的性能损耗较小,具体损耗如下:

以上就是安当TDE对SQL Server数据库实现保护的步骤。希望通过这篇文章,能为您提供一定的指导,帮助您有效地保护SQL Server数据库的安全,防止数据泄露和未授权访问,确保业务的连续性和数据的完整性。

文章作者:久洋 ©本文章解释权归安当西安研发中心所有

相关推荐
爱莉希雅&&&3 分钟前
MySQL MGR 组复制 完整笔记
linux·数据库·笔记·mysql·mgr·数据库同步
m0_493934539 分钟前
C#怎么实现EF Core全局查询过滤 C#如何用HasQueryFilter配置全局过滤条件自动排除已删除数据【数据库】
jvm·数据库·python
weixin_5689960614 分钟前
处理大体积DBF文件导入卡顿怎么办_性能优化与分批操作
jvm·数据库·python
m0_6403093021 分钟前
如何处理SQL查询中的逻辑重叠:AND OR嵌套优先级
jvm·数据库·python
qq_4327036621 分钟前
如何快速定位SQL表中的特定行:ROWID与唯一键的应用
jvm·数据库·python
m0_3776182321 分钟前
mysql如何配置插件以提升查询性能_安装启用memcached插件
jvm·数据库·python
djjdjdjdjjdj22 分钟前
SQL高效实现两表数据对比_利用FULL OUTER JOIN查找差异
jvm·数据库·python
qq_4240985622 分钟前
html标签怎么表示用户输入_kbd标签键盘快捷键标注【介绍】
jvm·数据库·python
qq_3721542323 分钟前
PHP 中使用 GnuPG 实现 PGP 加密与解密的完整实践指南
jvm·数据库·python
2301_7965885027 分钟前
Python中PyTorch如何处理NaN损失值_添加梯度裁剪与检查输入数据
jvm·数据库·python