无论是SQL Server 对称秘钥、非对称秘钥管理,还是使用对称秘钥或非对称秘钥对数据进行加密解密,以及数据库TDE,我们都有提到EKM(Extensible Key Manager),那么什么是EKM呢?为何要使用EKM呢?请看下文分享。

SQL Server 的EKM 使得第三方EKM/HSM 供应商能够在SQL Server中注册他们的模块。当注册完成后,SQL  Server 用户可以使用存储在EKM模块上的秘钥。这使得SQL Server可以使用这些模块提供的高级功能,如批量加密和解密,钥匙管理函数如钥匙过期和秘钥更替。

SQL Server 结合EKM,使用 MSCAPI(Microsoft Cryptographic API)提供加密和生成秘钥的功能。数据和秘钥的秘钥是在临时的钥匙容器中被创建的,在它们被存储到数据库中之前,它们必须从供应商处输出来。这种方式使得钥匙的管理,包括秘钥层级和钥匙备份,可以由SQL Server处理。

随着遵从法规的需求和对数据隐私的注重,越来越多的组织使用加密作为深度防御的一种方案。这种仅仅通过数据库加密管理工具的方式通常是不现实的。硬件供应商提供了使用HSM(Hardware Security Module)进行企业秘钥管理的产品。HSM设备在硬件或软件中存储秘钥。这是更安全的解决方案,因为秘钥不是寄存在加密数据库中的。

许多供应商都提供了钥匙管理加速加密的HSM。HSM设备使用带有服务器进程的硬件接口作为应用程序和HSM之间的中介。供应商还在其模块上实现MSCAPI 共享模块,这些模块可能是硬件或软件。MSCAPI 通常仅仅提供HSM功能的一个子集。供应商也能提供管理HSM的软件,如钥匙配置和钥匙读取。

HSM的实现因供应商而异,将其和SQL Server结合使用需要通用的接口。尽管MSCAPI提供了这样的接口,其仅仅支持HSM部分功能。同时也有其他限制,例如无法本地持久化对称密钥,以及缺乏面向会话的支持。

如何使用EKM

SQL Server 扩展秘钥管理使得保护数据库文件的加密秘钥可以存储在服务器外的设备,如智能卡、USB或者EKM/HSM 模块中。这同时使得数据保护和数据库管理员相互分离(除sysadmin角色成员外)。数据可以使用仅仅数据库用户才能访问到的外部EMK/HSM 模块上的秘钥进行加密。

扩展秘钥管理(EKM)的优势:

  • 额外的授权检查(使得职权分离)

  • 基于硬件的高性能的加密/解密

  • 外部生成秘钥

  • 外部秘钥存储(数据和钥匙的物理分离)

  • 秘钥检索

  • 外部秘钥滞留(启用秘钥替换)

  • 简化秘钥恢复

  • 分布式是秘钥管理

  • 安全的秘钥清除

您可以为用户名和密码组合或EKM驱动程序定义的其他方法使用可扩展密钥管理。

注意:为了排除故障,微软技术支持可能需要来自EKM供应商的秘钥。你也许需要访问供应商的工具或进程来帮助解决问题。

上面描述可能让您看得云里雾里,现在我们给出一个第三方EKM的实操,让您切身感受EKM的应用。

经过不懈的百度、谷歌,最终找到了三家EKM提供商(可能还有更多):

  • 微软的Azure Key Vault

  • Townsend 的AKM

  • Thale 的Key Management

我首先选择尝试Azure Key Vault,但可惜的是好不容易找到一个外币的信用卡,,却不能使用,不能创建 Azure Active Directory 身份,最终放弃了。而Thale的产品都是要部署到云上,也不适合测试。最终我选择了Townsend 产品。因为Townsend有一款可以将服务搭建到VMware 虚拟机上,这是我想要的,并且其提供了30天免费测试使用。在这里我要感谢帮助我打通虚拟机网络的小伙伴(这个折腾了我一个周末的难题,对我而言)。

Vmware Workstation 安装部署

我的服务器系统是Windows 2012 R2 Datacenter,我选择了Vmware Workstation最新版本 15.5,大家可以从官网中直接下载,下载地址为:

https://www.vmware.com/cn/products/workstation-pro/workstation-pro-evaluation.html

VMware安装好后,我们可以下载Townsend 的AKM,下载地址为:

https://downloads.townsendsecurity.com/products/AKM_VM.ova

下载完成后,双击下载文件AKM_VM.ova,弹出如下窗口,命名虚拟机名称,及给与虚拟机一个存放路径,点击导入:

等其导入完成后,我们就可以继续操作了。要进行AKM初始化,需要从网络上获取其试用License。所以继续之前,我们要先配置虚拟机,使其能够联网。这里我只做本地测试,没有必要搭建AKM故障转移(在生产环境中最好部署),所以我选择简单NAT方式联网。

具体配置虚拟机NAT方式联网的方法,网上太多案例,这里就不赘述了。我仅仅给出我遇到问题,以供大家参考。

1. VMware 虚拟机要能够连外网,要开启外网Internet连接共享,并且“家庭网络连接(H)”的文本框中要选择用于NAT联网的VMware Network Adapter VMnet 8虚拟网卡:

2. 宿主机器无法连接虚拟机,需要在VMware Network Adapter VMnet8 属性→Internet 协议版本4(TCP/IPv4)属性→高级TCP/IP设置中添加与虚拟机中同段的IP即可:

登录VM虚拟机

当你看见命令行出现登录提示符时,输入用户“admin”,然后按“Enter”键,输入初始密码“OOHXPq6r530N6re”。后面你可以修改它,现在直接使用即可。

确定IP地址

你需要确定并记录下AKM的IP地址,这将会在后面客户端应用AKM Administrative Console及Key Connection for SQL Server配置时用到。使用ifconfig命令确定分配给这个VMware实例的地址。在命令行输入“ifconfig”并且回车。您将会看到包含下面信息的输出:

初始化AKM

在命令行中输入akm-menu回车,即会跳出如下AKM管理菜单:

我选择1,初始化AKM,然后会跳出如下初始化菜单:

我们仍然选择1,作为主AKM初始化,接着会要求你设置你所在的国家简称,省市,以及您的组织名称,最后为您的AKM命名:

是否创建默认的秘钥集,当然这个你可以后面创建,这里我选择现在创建,输入y:

回车后,AKM开始初始化,几分钟后即完成:

修改AKM初始密码

AKM初始化后,会有一个新的菜单:

下面来修改admin密码,我将原始密码修改为 I25cUcbyQpae

注意,要保管好该密码,AKM服务的登陆,以及其管理都会用到此密码

Web管理界面导出初始秘钥集

前面AKM虚拟机上配置的IP地址为192.168.0.128,默认的端口为3886,我们输入https:\\192.168.0.128:3386\,即会弹出登陆界面。使用AKM的账户、密码(这里是admin,及新密码I25cUcbyQpae)登陆后,到文件管理(File Manager)下→home→admin→downloads,下载秘钥及证书供AKM Administrative Console及Key Connection for SQL Server 配置使用。

安装配置AKM Administrative Console

AKM管理控制台是秘钥创建、激活、导入导出、删除等管理平台。

下载安装AKM 管理控制台,可以参考其官网文档:

https://docs.townsendsecurity.com/akm_administrative_console_guide/#top

这里需要注意的是,服务名称要使用我们AKM初始时给其的名字,服务器地址填写AKM所在虚拟机的地址192.168.0.128,服务的默认端口是6001.而Key Store File、Trust Store File及Pass Phrase均在从导出的初始秘钥集中导入,下面两幅图中标出了对应关系,图一的1对应图二的1, 依次

安装配置Key Connection for SQL Server

下载地址

Key Connection for SQL Server 是AKM服务和SQL Server数据库之间的桥梁。

安装如正常的软件安装一样,这里我们说明一下配置中需要注意的地方:

首先将AKM服务产生的证书AKMRootCACertificate.pem 导入到服务器受信任的根证书:

我们可以通过控制台导入该证书:

Wind+R→MMC

我们可以通过 Wind+R → cmd→certmgr查看导入的证书:

注意Hostname 中的IP为AKM服务的IP地址。

这里选择我们前面导入服务器的AKM提供的证书。

这里导入的是AKM服务生成的证书和私钥为AKMClientCertificateAndPrivateKey.p12,注意这里密码最好手动输入,因为直接从文件中拷贝的密码中如果有1或l,它可能会识别错误而报密码错误:

注意,这里有两个实例,我只配置了默认实例名为MSSQLSERVER,而没有配置的MSSQL2008后面两个字段值为空。配置完成后,点击右下角的“SQL Server Test” ,会生成一个dll文件,如果一切顺利,将会出现下面成功的结果:

对称/非对称秘钥生成及应用

我们将在AKM的控制台中创建对称/非对称秘钥

首先我们来创建非对称秘钥:进入All Commands下,选择Create Symmetric Key,如下图,将我们的非对称秘钥命名为SymFromAKM,秘钥长度我选择了256位,并立即计划秘钥,并设置对称秘钥的其他属性:

点击“Submit”,创建完成。

接着创建非对称秘钥,同样在All Commands下,这次选择Create EKM Key,将其命名为AKM_EKM,长度选择2048位:

创建完成后,物理是对称秘钥还是非对称秘钥,均需要在EKM中启用秘钥,如下:

现在我们可以使用这两个秘钥了。

在SQL Server中,要使用EKM,先要在配置中启用它,启用脚本如下:

sp_configure 'show advanced', 1
GO
RECONFIGURE
GO
sp_configure 'EKM provider enabled', 1
GO
RECONFIGURE
GO 

创建对称秘钥

USE test
GOCREATE SYMMETRIC KEY SymFromEKM
FROM PROVIDER KeyConnection_test
WITH PROVIDER_KEY_NAME='SymFromAKM', CREATION_DISPOSITION=OPEN_EXISTING;
GO

对称秘钥的简单数据加密、解密的应用:

DECLARE @EncTxt VARBINARY(MAX)
SELECT  @EncTxt = ENCRYPTBYKEY(KEY_GUID('SymFromEKM'), 'text')
SELECT  @EncTxt
SELECT  CONVERT(VARCHAR(10), DECRYPTBYKEY(@EncTxt))

创建非对称秘钥

USE master;
CREATE ASYMMETRIC KEY AsyKeyForDBEncryption
FROM PROVIDER KeyConnection_test
WITH PROVIDER_KEY_NAME = 'AKM_EKM'
, CREATION_DISPOSITION = OPEN_EXISTING;

更改TDE中数据库秘钥的加密方式,直接使用EKM中的非对称秘钥 AsyKeyForDBEncryption:

ALTER DATABASE ENCRYPTION KEYREGENERATE WITH ALGORITHM = AES_256
ENCRYPTION BY SERVERASYMMETRIC KEY AsyKeyForDBEncryption

如果您正在为数据库数据加密秘钥的安全问题和管理难度方面而困扰,使用EKM将是您的一个不错选择。

SQL Server 扩展秘钥管理(EKM)相关推荐

  1. SQL Server 非对称秘钥管理

    ​在<SQL Server 非对称秘钥在数据加密中的应用>一文中,我们了解到可以使用非对称秘钥进行数据加密.本文带着大家深入了解非对称秘钥的生命周期,包括创建.修改和删除. 为了熟悉非对称 ...

  2. SQL Server 扩展事件系列 (1 of 31) -- 扩展事件概述

    1. SQL Server 扩展事件概述 SQL Server 2008引入了扩展事件(Extended Events),它提供了新的机制收信数据库引擎的内部事件信息,具有高性能或高度可配置性.扩展事 ...

  3. 浅谈SQL Server 对于内存的管理

    简介 理解SQL Server对于内存的管理是对于SQL Server问题处理和性能调优的基本,本篇文章讲述SQL Server对于内存管理的内存原理. 二级存储(secondary storage) ...

  4. sql server调试_使用SQL Server扩展事件来调试应用程序

    sql server调试 介绍 (Introduction) Often enough, multilayer software has bugs. SQL Server Extended Event ...

  5. C#毕业设计——基于C#+asp.net+SQL Server的服装连锁店管理系统设计与实现(毕业论文+程序源码)——服装连锁店管理系统

    基于C#+asp.net+SQL Server的服装连锁店管理系统设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于C#+asp.net+SQL Server的服装连锁店管理系统设计与实现, ...

  6. SQL Server扩展事件(Extended Events)-- 将现有 SQL 跟踪脚本转换为扩展事件会话

    SQL Server扩展事件(Extended Events)-- 将现有 SQL 跟踪脚本转换为扩展事件会话 如果您具有想要转换为扩展事件会话的现有 SQL 跟踪脚本,则可以使用本主题中的过程创建等 ...

  7. SQL Server扩展事件(Extended Events)-- 事件的寿命

    SQL Server扩展事件(Extended Events)-- 事件的寿命 定义并启动扩展事件会话后,处理过程将照常进行,直到所监控的代码遇到某个事件为止.下图介绍了扩展事件系统所遵循的步骤. 具 ...

  8. SQL Server性能优化与管理的艺术 附件下载地址

    首先感谢读者们对鄙人的支持,购买了<SQL Server性能优化与管理的艺术>,由于之前出版社的一些疏忽,附件没有上传成功,再次本人深表歉意. 请需要下载附件的读者从下面链接下载,谢谢: ...

  9. KeyManager 一站式证书申请和证书秘钥管理

    在一个偶然的时间下,发现这个一站式证书申请和证书秘钥管理的平台,因为现在很多已经HTTPS 需要认证证书 此时有个一站式管理工具,他提供安全便捷的SSL证书申请和管理 请移步   keymanager

最新文章

  1. 异常“本机框架位于调用堆栈顶部,因此无法计算表达式的值”的解决办法
  2. JavaScript数据结构和算法
  3. 【深度学习】同款商品识别的克星--ArcFace!
  4. 复函数图像怎么画_...1等等.只需大致图象,和大致画法(根据原函数就能画出复合函数的...-复函数的图形-数学-禄凡闷同学...
  5. 新购阿里云服务器ECS创建之后无法ssh连接的问题处理
  6. 带有示例的Python列表reverse()方法
  7. 大话数据结构顺序表和链表
  8. 【转】 i2c驱动调试经验
  9. 【转】雷军自曝创业第一年:掏自己的钱创业成功率最高
  10. linux平台下C语言按进程名查找进程号pid
  11. 对一个正整数n,求出n!中末尾0的个数。
  12. ES6.3 index Sorting测试
  13. 免费又好用的录音软件推荐
  14. kali攻击手机_kali linux入侵安卓手机
  15. 云计算基础设施的定义与介绍
  16. 专题:固体力学中应力与应变分析详解(7.应变分析 7.5应变张量 7.6主应变与主方向 7.7应变莫尔圆)...
  17. Objective-C runtime机制(5)——iOS 内存管理
  18. 好书收藏:读书知多少
  19. 在VC中用GDI+绘制角度可变的颜色渐变效果-.NET教程,VB.Net语言[转]
  20. 亚马逊风控从哪些方面检测的?

热门文章

  1. CSS背景半透明效果
  2. php base62,base62编码
  3. java基础-1 基础知识
  4. plsql odbc导入器dsn没有下拉选项
  5. spring-aop-@Aspect详细用法
  6. 浙江省中小学信息技术课 9 月换新教材,大数据人工智能占 80%
  7. 商务签证的准备(1)
  8. 初识DataTable
  9. viewFlipper的基本实现
  10. Matlab论文插图绘制模板第39期—阶梯图(Stairs)