在 SQL Server 2016中,总是加密的功能

分享于 

4分钟阅读

数据库

  繁體

思路

该功能旨在对后端数据库引擎上的敏感数据进行加密。

过程

  • 创建一个简单的数据库表,并与Asp.Net MVC应用程序连接,用于填充数据的Scaffold控制器和视图,如果你熟悉此过程,请直接转到步骤2
  • 在SQL Server 2016中使用始终加密的特性加密数据库表中的敏感数据列
  • 对Asp.Net自动加密/解密数据的MVC应用程序

创建一个简单的数据库表,并与Asp.Net MVC应用程序连接

第一步是创建一个新的数据库"AlwaysEncryption",表名为"Customer",,假设电子邮件和SSN列来保存敏感信息。

下载Customer.zip

现在数据库已经准备好了,创建一个新的Asp.Net Web应用程序"AlwaysEncryption"在这个示例中,我使用Visual Studio 2015.

从新的Asp.Net项目模板列表中选择MVC。

这就是Bootstrap MVC基本解决方案的样子

现在继续,将新的实体数据模型文件添加到Models文件夹中

从"实体数据模型"向导中选择"来自数据库的EF设计器",然后单击"下一步"。

在下一个向导屏幕中,选择"Microsoft SQL Server"作为数据源,然后单击"Continue"建立连接。

使用"连接属性"向导窗口连接到"AlwaysEncryption"数据库。快速进行"测试连接"以成功,然后单击"确定"以继续。

然后提供上下文名称"AlwaysEncryptionContext",该名称应直接进入web.confg文件中的连接字符串属性。

单击"下一步"以选择应用程序的实体框架版本。在我们的情况下,我选择EF 6.x选项。

单击"下一步",选择"Customer"表,并命名模型命名空间,然后单击"完成"导入实体模型。

使用实体框架的带有视图的脚手架控制器

现在,右键单击Controller文件夹并添加"New Scaffolding Item ...",以使用实体框架创建MVC 5 Controller以及视图。

选择"Customer"模型类和"AlwaysEncryptionContext"作为数据上下文类,并将新控制器命名为"CustomersController"单击"添加"创建控制器和视图以执行所有CRUD操作。

现在,使用索引操作方法将路由配置文件中的默认控制器和操作设置为新的Customers控制器。

routes.MapRoute(
 name: "Default",
 url: "{controller}/{action}/{id}",
 defaults: new { controller = "Customers", action = "Index", id = UrlParameter.Optional }
);

继续运行应用程序以填充Customer表中的一些记录。

现在转到SQL Server Management Studio并运行以下查询来列出所有客户记录,这将以纯文本显示所有数据。

使用SQL Server 2016中的"始终加密"功能加密敏感数据

要加密Microsoft SQL 2016中的敏感数据,请继续右键单击"Customers"表,从上下文菜单中选择"Encrypt Columns..."

这将始终显示带有"简介"屏幕的"加密向导",然后单击"下一步"。

现在,我们将获得"列选择"向导屏幕,这是我们从选定表中选择所有需要加密的数据列的位置。

这里我们选择电子邮件和SSN列进行加密。

注意:到目前为止,SQL Server 2016仅提供一种加密算法"AEAD_AES_256_CBC_HMAC_SHA_256"。下载CustomerAfterEncryption.zip

在Asp.Net MVC应用程序中进行必要的更改以自动加密/解密数据

要解决此问题,我们需要更新连接字符串以启用"列加密设置"。这将允许应用程序在连接到数据库时自动加密/解密必要的列。

column encryption setting=enabled


相关文章