问题标签 [always-encrypted]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1762 浏览

sql-server - 将 Always Encrypted 与 Entity Framework 和 Azure Key Vault 一起使用

我已经使用Always Encrypted和存储在 Azure Key Vault 中的列主密钥加密了 Azure SQL 数据库中的一些列,但是我无法使用实体框架从我的应用程序访问它们。

最近有一篇 MSDN 文章和一篇较早的博客文章解释如何设置 SqlConnection 以将 Always Encrypted 与 Azure Key Vault 一起使用,所以我猜测可以使用接受DbConnection.

问题是我正在使用 a IdentityDbContext,它没有那个构造函数 - 唯一需要 a的构造函数DbConnection也需要 a DbCompiledModel,这超出了我目前的工资等级。

谁能解释如何设置IdentityDbContext使用 Key Vault?

0 投票
1 回答
1013 浏览

sql-server - SQL Server:始终加密

网络上有很多帖子展示了这项技术的基础知识:数据在任何地方都被加密,除了客户端之外,客户端使用列加密密钥 (CEK) 来加密或解密数据。

  1. CEK 是否存储在客户端机器中?在应用程序的连接字符串中?客户(=员工)是否可以看到它?例如,我们聘请了一位新秘书,他应该有权访问敏感(和加密)数据。我们给他一台新笔记本电脑,授予他读/写权限,在他的新笔记本电脑上安装应用程序,还有什么?“告诉”他什么是 CEK?将 CEK 存储在注册表中的某个位置?

  2. 列主密钥 (CMK) 的作用是什么:创建新的 CEK 并在它们丢失的情况下恢复它们?让一个授权人掌握整个系统的钥匙?

0 投票
3 回答
7456 浏览

asp.net - IIS 7.5 Web 服务器上的始终加密证书放在哪里?

我们有一个使用 Always Encrypted 的 SQL Server 2016 数据库。我们最近发布的 ASP.net 网站尝试从该数据库中提取数据,但当我们收到此错误时:

Error: Failed to decrypt column 'EnSSd'. Failed to decrypt a column encryption key using key store provider: 'MSSQL_CERTIFICATE_STORE'. The last 10 bytes of the encrypted column encryption key are: 'B8-48-B3-62-90-0B-1D-A6-7D-80'. Certificate with thumbprint '97B0D3A64CADBE86FE23559AEE2783317655FD0F' not found in certificate store 'My' in certificate location 'CurrentUser'. Verify the certificate path in the column master key definition in the database is correct, and the certificate has been imported correctly into the certificate location/store. Parameter name: masterKeyPath

现在我们知道这意味着证书没有放在服务器上的正确位置。在开发过程中,我们只是将证书放在个人证书存储下的证书管理单元中,这很有效,但是现在网站已经发布,我们尝试在 Web 服务器上做同样的事情,但它不起作用(我们有点想通了)不会)。

站点上启用了匿名身份验证,匿名用户身份为 IUSR。ASP.NET 模拟已禁用。

放置证书的正确位置在哪里?


更新 - 我们通过将应用程序池身份帐户更改为创建证书的帐户来使其工作。它也是将证书添加到 Web 服务器上的 Current User-Personal 列表时使用的帐户。我们宁愿不使用这个帐户,那么再次,放置证书的正确位置在哪里?

0 投票
1 回答
1032 浏览

ssms - 与视觉样式相关的操作导致错误,因为当前没有视觉样式处于活动状态。(系统.Windows.Forms)

我已安装最新版本的SQL Server Management Studio 2016以测试Always Encrypted功能。它是从这里的菜单中打开的:

在此处输入图像描述

但总是抛出以下错误:

在此处输入图像描述

然后工作室停止工作。

有谁知道是什么导致了这种行为?

0 投票
1 回答
760 浏览

sql-server - SQL Server 2016 Always Encrypted 中的 Microsoft 软件密钥存储提供程序

我正在评估 SQL Server 2016 中的 Always Encrypted 功能。

存储 CMK 的选项之一是 Windows 证书存储,即 User/LocalMachine。如果您想允许其他机器访问未加密格式的数据,您需要在其他机器中导入相同的证书。这一切都相当简单,我可以轻松做到。

现在,我在“Microsoft 软件密钥存储提供程序”中创建并存储了我的 CMK。

如何在其他机器上导入此 CMK?

0 投票
2 回答
152 浏览

sql-server-2012 - 表中几列的数据加密

我们正在使用 .NET 和 SQL Server 2012 构建应用程序。目前它工作正常。对于一些新的更改,我们希望加密表中的一些敏感列,并且还希望将其移至 SQL Azure。

谷歌搜索,发现 SQL Server 2016 有一个新功能 - “始终加密”,需要 .NET 4.6 和 SSMS 版本为 13.0+

现在我使用的是 SQL Server 2012,有没有办法在迁移到 Azure 时使用始终加密的功能?对此的任何解决方法/替代方案/指针都会有所帮助。

0 投票
3 回答
849 浏览

sql-server - SQL2016 无法创建列主密钥

我刚刚安装了 SQL 2016 标准版,因为我想使用“始终加密”功能。但是,当我尝试在 Security->Always Encrypted Keys->Column Master Key 下创建列主密钥时,出现以下错误: 在此处输入图像描述

productversion: 13.0.160.5, productlevel:RTM, edition:Standard Edition 64bit 有什么想法吗?谢谢!

0 投票
2 回答
1246 浏览

sql-server-2016 - 使用 Always Encrypted 检索列时,SSRS 2016 的 tablix 中未显示数据

我正在为即将推出的大型解决方案制作原型,并希望使用 Always Encrypted 来加密某些敏感的数据库列。

我的设置如下: 数据库服务器:安装了 SQL Server 2016 应用程序服务器:安装了指向数据库服务器引擎的 Reporting Server 2016。IIS、.Net 4.6.2 等也都设置好了。

该环境的设置方式也使得 DBA 无法读取加密数据,即使从 Management Studio 中他将在连接中添加“列加密设置 = 已启用”。所以我的证书安装在应用服务器上,而 CMK 和 CEK 安装在数据库服务器数据库上。

我可以毫无问题地从安装在应用服务器上的 Web 应用程序中查看加密数据,而 DBA 无法直接从数据库中读取加密数据,所以我假设我的环境设置良好。

如前所述,我在应用程序服务器上安装了 SSRS 2016,但在数据库服务器上指向具有加密列的数据库。当然,我已经使用 Report Builder 完成了一个基本的转储报告(用于测试目的),除了未显示加密数据之外,一切都运行良好 - 它在 SSRS 表中保持空白!加密列只是一个基本的 nvarchar(200)

在数据源连接字符串中,我添加了“列加密设置 = 已启用”。没有它,报告将按预期显示#Error。所以我假设这也是需要的。

我还注意到,从查询设计器中我可以读取加密列。如果我从数据源中删除“列加密设置 = 已启用”,如果我没记错的话,查询设计器会显示 VarBinary。当然,我直接在应用程序服务器上使用报表生成器和查询设计器。

我试图搜索有关如何将 SSRS 与 Always Encrypted 一起使用的任何教程,但我找不到任何东西。我发现的只是 SSRS 支持 Always Encrypted 的帖子中的评论。

有人可以启发我做错了什么或我错过了什么吗?

提前致谢。

0 投票
3 回答
19732 浏览

c# - 操作数类型冲突:varchar 与尝试插入加密数据库的 varchar(50) 不兼容

我得到一个SqlException

操作数类型冲突:varchar 与使用 (encryption_type = 'DETERMINISTIC', encryption_algorithm_name = 'AEAD_AES_256_CBC_HMAC_SHA_256', column_encryption_key_name = 'CEK_Auto1', column_encryption_key_database_name = 'PB') 加密的 varchar(50) 不兼容 collat​​ion_name = 'SQL_Latin1_General_CP1_CI_AS'\不正确的参数加密从客户端收到元数据。在调用批处理期间发生错误,因此客户端可以通过调用 sp_describe_parameter_encryption 刷新参数加密元数据并重试。

我的 C# 代码:

还有我的存储过程:

将数据插入未加密的字段没有问题。

我找到了这篇文章

http://dataap.org/sql-2016-ctp/column-level-encryption-using-always-encrypted-in-sql-server-2016/

我的问题很相似,但我还没有找到解决方案。

0 投票
1 回答
769 浏览

c# - SQL Server 2016 Always Encrypted 列内连接 c#

如何使用 Always Encrypted 列执行连接?我试过这个(name是加密的列)

我收到此错误:

附加信息:使用 (encryption_type = 'DETERMINISTIC'、encryption_algorithm_name = 'AEAD_AES_256_CBC_HMAC_SHA_256'、column_encryption_key_name = 'CEK_Auto4'、column_encryption_key_database_name = 'depdb') collat​​ion_name = 'Latin1_General_BIN2' 和 varchar 加密的数据类型 varchar(20) 在等于操作员。