问题标签 [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 回答
895 浏览

encryption - 是否可以对同一张表中已加密的列应用动态数据屏蔽

我在两个不同的表上的 Azure SQL 数据库中实现了始终加密和动态数据屏蔽概念。

但我怀疑“是否可以在同一张表中已加密的列上应用动态数据屏蔽”。

我尝试了上面的场景,它给出了类似“列'SSN'的数据类型不支持数据屏蔽功能'部分'。”的错误。

我运行以下查询以在已加密的列上应用掩码。

是否可以对同一张表中已加密的列应用动态数据屏蔽?

0 投票
0 回答
501 浏览

ms-access - 使用 SQL Server 2016“始终加密”访问前端

我有一个 Access 应用程序,我正在尝试使用 SQL Server 2016 数据,该数据具有多个“始终加密”的列。我正在使用 Access 2010,但我无法让它工作,尽管从我读到的内容来看,它似乎应该这样做。

我安装了最新的 ODBC 13 驱动程序,新.accdb数据库(使用 Access 2010 创建,不过,以防万一造成问题),我链接到表,但只从我的两个加密列中得到乱码。

我什至尝试过使用参数化查询,但加密列仍然乱码。

有什么想法我在这里想念的吗?

0 投票
1 回答
1390 浏览

c# - 对于在 Web 应用程序中实现的代码优先迁移场景,如何实现始终加密的概念?

我阅读了以下博客以在我的应用程序中实现加密概念,但在我的应用程序中,我使用代码优先迁移概念在 Azure SQL 数据库上执行 CRUD 操作。但是这个博客用 Azure SQL 数据库上的普通 SQL 查询解释了加密概念。

始终加密:保护 SQL 数据库中的敏感数据并将加密密钥存储在 Azure Key Vault 中

https://docs.microsoft.com/en-us/azure/sql-database/sql-database-always-encrypted-azure-key-vault

如何为 Web 应用程序中实现的代码优先迁移方案实现始终加密的概念?

0 投票
1 回答
69 浏览

ef-code-first - CEK 密钥不可用,删除之前在运行应用程序时创建的本地数据库后,迁移将不适用

我通过以下链接在我的应用程序中使用实体框架实现了始终加密概念。

https://blogs.msdn.microsoft.com/sqlsecurity/2015/08/27/using-always-encrypted-with-entity-framework-6/

这是我当前应用程序的 migrations 文件夹下的 initialSchema.cs 文件中的 Up() 迁移方法。

之后我评论了 SSN 文件并添加了下面的 SQL 语句来加密 SSN 列。

然后在 Package Manger Console 中运行Update-Database命令。

仅当 CEK 密钥已可用于加密列时,上述代码才有效。但是当我在删除现有的本地数据库后再次运行我的应用程序时,它会给出异常,例如 CEK 密钥不可用并且也没有应用迁移。

添加 ALTER SQL 语句并删除本地数据库后,如何解决上述问题?

上述问题只解决了,再次更改了 Up() 迁移代码,但我不想要那种情况。

0 投票
2 回答
2079 浏览

azure - SQL Server 2016 中的始终加密行为

我在 SQL Server 2016 中为主题始终加密做一些演示。有几个疑问。以下是遵循的步骤:

数据库服务器(托管在 Microsoft Azure VM 中)中:

  1. 在表中MyTable,创建了列加密密钥 (CEK) 和主加密密钥 (CMK)
  2. Select * from MyTable, 显示加密数据。(来自 App 和 DB 服务器)
  3. 从数据库服务器导出证书
  4. 在App Server(我的本地机器)中导入证书
  5. 添加Column Encryption Setting=Enabled到我的应用程序的连接字符串中。
  6. 它工作正常,现在它按预期显示纯文本数据。

怀疑:

在数据库服务器(在 MS Azure VM 中)中,如果 SysAdmin 登录(SQL 身份验证)使用附加参数连接到 SSMS Column Encryption Setting=Enabled,则显示纯文本数据(预期加密数据)。我的理解是,除了应用程序用户之外,没有其他人应该看到纯文本数据)。谁能澄清一下?

0 投票
1 回答
161 浏览

sql-server - SQL Server 2016 安全功能

始终加密和动态数据屏蔽是 SQL Server 2016 中可用的两个重要安全功能。这两个功能可以在单个数据库表上共存。

如果是,应该是什么顺序?我们应该对加密列执行屏蔽还是对屏蔽列执行加密?

0 投票
1 回答
293 浏览

security - SQL Azure 上的列级加密,表上有逻辑分区

我尝试在 Azure SQL DB 上启用列级加密以及 Key Vault;这工作正常。但是我有一种情况,根据列中的数据,我想使用不同的密钥进行加密。例如,我有一个 [Institution] 列,并且对于每个机构,我希望使用不同的密钥 (CEK) 进行加密。是否有可能做到这一点?我还在研究逻辑分区然后加密,对于每个逻辑分区,它应该有单独的 CEK(列加密密钥)。可以实现吗?

0 投票
2 回答
1657 浏览

sql-server - Always Encrypted SQL 2016 和实体框架 6:“操作数类型冲突:datetime2 与日期不兼容”

当前的项目:

  • MVC 5.2
  • 点网 4.6.2
  • 英孚 6
  • 身份 2(根据下面的存储库模式修改)
  • SQL Server 2016 RTM
  • 存储库模式:持久性忽略 ASP.NET 身份
  • 此处此处描述的始终加密列加密
  • 所有 SQLMapToStoredProcedures();如下EntityTypeConfiguration

与存储库模式教程不同,我能够将模型推送到数据库。我不是在使用手工组装的数据库。我确实根据第二个 Always Encrypted 链接中的两个 SQL 语句修改了迁移,对于出生日期和社会安全号码也不足为奇。

因为我的实体框架实体指定了加密字段,

User通过以下方式装饰了我的域实体中的这两个字段:

根据此评论作为预防措施,我还在我的IdentityUser.cs文件中修饰了相同的字段。

当我尝试推送我尝试创建的默认管理用户时,使用以下命令:

我收到以下错误:

操作数类型冲突:使用 (encryption_type = 'RANDOMIZED', encryption_algorithm_name = 'AEAD_AES_256_CBC_HMAC_SHA_256', column_encryption_key_name = 'CEK1', column_encryption_key_database_name = 'database') 加密的 datetime2(7) 与使用 (encryption_type = 'RANDOMIZED', encryption_algorithm_name = 加密的日期不兼容'AEAD_AES_256_CBC_HMAC_SHA_256',column_encryption_key_name = 'CEK1',column_encryption_key_database_name = 'database')

这发生在_userManager.CreateAsync().

我完全不知道为什么会这样。我已明确指定DobinIdentityUser()作为Date字段,而不是DateTime2. 原始User模型/域及其关联的 EF 实体也是如此。实际的数据库字段是一个Date字段(亲自确认),所以我可以看到为什么如果源被神秘地创建为 a DateTime2,即使该IdentityUser() Dob字段也是 a ,为什么目标是一个问题Date。理论上,一个Date字段IdentityUser()不能传递DateTime2给数据库。

0 投票
2 回答
541 浏览

vba - MS Access SQL Server 始终加密参数化

我正在评估 SQL Server 2016 Always Encrypted 是否可以与我支持的现有 MS Access 2010 应用程序一起使用。

这是我目前的障碍:

我的应用程序调用了许多需要参数的 SQL Server 存储过程。我使用以下函数进行这些调用:

对该函数的调用现在将包括参数,这些参数是数据库中加密值的明文版本。

发生这种情况时,我收到以下错误。

206 [Microsoft][ODBC SQL Server Driver][SQL Server] 操作数类型冲突: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 = 加密的 nvarchar(255) “沙盒”)

我对始终加密的参数化进行了一些调查。它需要两种技术之一

  • 。网
  • 用于 SQL Server 的 ODBC 13.1

由于这是一个 MS Access 应用程序,因此 .NET 不适用。

我安装了 ODBC 13.1,但我猜我的直通查询绕过了参数化。

这是我的 ODBC 设置:

关于如何解决此问题或 Always Encrypted 不适合我的应用程序的任何想法?

0 投票
2 回答
1853 浏览

sql-server - SQL Server 2016:对 DBA 隐藏列数据,但特定用户可以通过应用程序查看数据

我正在尝试通过 PowerBI 访问团队负责人的工资信息,但对来自其他用户和 DBA 的数据进行加密。拒绝访问此列数据的用户应该仍然能够执行查询,但只能看到工资信息的加密字符。

我正在使用 SQL Server 2016。

我已经测试了新的“始终加密”功能,并且效果很好……但除了我无法将“列加密设置=启用”参数传递给 PowerBI 连接字符串之外。无论如何,PowerBI 目前不支持此功能。

我目前正在通过使用列级加密和对称密钥来测试列加密的使用,但问题是我将 OPEN SYMMETRIC KEY SymmetricKey1 & DECRYPTION BY CERTIFICATE Certificate1 代码硬编码到 SQL 中,如果用户不这样做如果有访问权限,则在用户测试时出现错误会导致 SQL 失败。

我是证书和加密的新手,我目前正处于陡峭的学习曲线上……所以放轻松。

谢谢