我使用Always Encrypted和存储在Azure Key Vault中的列主密钥对Azure SQL数据库中的某些列进行了加密,但是我无法使用Entity Framework从我的应用程序访问它们.
最近有一篇MSDN文章和一篇较旧的博客文章解释了如何设置SqlConnection以使用Azure Key Vault的Always Encrypted,因此我猜测可以使用接受a 的构造函数创建普通的DbContext DbConnection.
问题是我正在使用一个IdentityDbContext没有那个构造函数的构造函数 - 唯一一个需要一个构造函数的构造函数,这个函数目前超出了我的工资等级.DbConnectionDbCompiledModel
任何人都可以解释如何设置IdentityDbContext使用密钥保险库?
我正在尝试通过PowerBI启用对工资信息的团队负责人的访问,但是会加密来自其他用户和DBA的这些数据.拒绝访问此列数据的用户仍应能够执行查询,但只能查看工资信息的加密字符.
我正在使用SQL Server 2016.
我已经测试了新的"始终加密"功能,这非常有效...但除了我无法将'column encryption setting = enabled'参数传递给PowerBI连接字符串.从各方面来看,PowerBI目前不支持此功能.
我目前正在通过使用列级加密和对称密钥测试列加密的使用,但问题是我难以将OPEN SYMMETRIC KEY SymmetricKey1和DECRYPTION BY CERTIFICATE Certificate1代码编码到SQL中,如果用户没有有权访问,然后一个错误导致SQL在用户测试时失败.
我是证书和加密的新手,而且我目前处于陡峭的学习曲线......所以对我来说很容易.
谢谢
sql-server encryption powerbi sql-server-2016 always-encrypted
我使用列加密对 sql 2016 表中的几列进行了加密。现在我想将数据插入该表中。我尝试创建一个存储过程并使用参数执行该过程,但出现以下错误。
列/变量“@lastName”的加密方案不匹配。列/变量的加密方案为 (encryption_type = 'PLAINTEXT'),行 '0' 附近的表达式期望它为 (encryption_type = 'DETERMINISTIC', Encryption_algorithm_name = 'AEAD_AES_256_CBC_HMAC_SHA_256', column_encryption_key_name = 'CEK_Auto1', column_encryption_key_database_name = ' BROps_TestDB')(或更弱)。
另外,我有一个现有的应用程序,其中使用 SQL 2008 中的实体框架将值插入表中(我们正在尝试升级到 SQl 2016 以实现始终加密功能)。那么,是否有任何标志或任何方法可以让我们将数据插入到 SQL 2016(列加密)中,而对代码进行最小的更改?
我已经给出了示例存储过程代码以及该存储过程的执行。
CREATE PROCEDURE dbo.AddCustomer
@CustomerID int,
@FirstName nvarchar(25),
@LastName nvarchar(25),
@SIN nvarchar(11),
@CreditCardNumber nvarchar(25),
@EmailAddress nvarchar(50),
@PhoneNumber nvarchar(25),
@TerritoryID int
AS
BEGIN
INSERT INTO [dbo].[Customers]
([CustomerID]
,[FirstName]
,[LastName]
,[SIN]
,[CreditCardNumber]
,[EmailAddress]
,[PhoneNumber]
,[TerritoryID])
VALUES
(@CustomerID,
@FirstName,
@LastName,
@SIN,
@CreditCardNumber,
@EmailAddress,
@PhoneNumber,
@TerritoryID)
END
----------------------------------------
DECLARE @CustomerID int,
@FirstName …Run Code Online (Sandbox Code Playgroud) 是否可以手动解密由 sql server 始终加密的机制加密的值?我的意思是如何解密由AEAD_AES_256_CBC_HMAC_SHA_256算法加密的列值。
我有加密密钥(在其他主题中我问的是生成一个)所以我认为这应该是可能的。
我想抗拒天蓝色的可用性,所以离线解密对我来说是重要的功能。
sql-server data-protection encryption-symmetric azure-sql-server always-encrypted
我正在使用 sql server 2016 并且我使用始终加密选项加密了列。我已经将 sql 与 ASP.NET MVC 应用程序中的实体框架连接起来。使用插入选项正确插入数据。但我无法通过 mvc 应用程序使用存储过程插入。我收到以下错误我已经按照下面的文章。 https://www.codeproject.com/Articles/1110564/WebControls/
我们如何刷新存储过程以应用加密?
错误: “参数 \"@name\" 的加密信息与创建时使用的加密信息不同。使用 sp_refresh_parameter_encryption 刷新模块的参数加密信息。
我正在尝试从 macOS 上的 VSCode 到 SQL Server 数据库的连接,该数据库使用始终加密的机制来保护某些列。主密钥存储在Azure Key Vault中。
使用微软提供的始终加密的指南能够成功连接到数据库。
在我的 mac 上使用 VSCode 不打开加密/解密的简单连接也是如此。我使用了mssql-extension插件并在设置中提供了必要的信息,我能够查询数据
设置
"mssql.connections": [
{
"server": "XXXXXXXX.database.windows.net",
"database": "AlwaysEncrypted",
"authenticationType": "SqlLogin",
"user": "XXXXX",
"password": "",
"emptyPasswordInput": false,
"savePassword": true,
"profileName": "AlwaysEncrypted"
}
]
Run Code Online (Sandbox Code Playgroud)
询问
SELECT * FROM EmployeeDetails
Run Code Online (Sandbox Code Playgroud)
结果
[
{
"EmployeeDetailsId": "1",
"EmployeeNo": "FE00000001",
"FirstName": "0x013EC8AB61767E1C3D934AB061BCA658B6948637812450C8245DCE4C447F59FD1D6252069A36A67E3477E1C5FB24D860E72FBCC65F98C92B92AB873CE55349672A",
"MiddleName": "0x015354526EC17EB1151AE918514E565507EDCB5691B4215C45798CA86EB11C47EECA579242926EDFE9F6543006177CBFC03E0F95CD0D8CAE6C941AE173AAF2B925",
"LastName": "0x0170B3FD2B0416E0607312FB2A67B0F42798EC1871FEAB90AB81235ADACDE1C4F5614099FA3B61E59FEB2D6AD599CB3A9FD031FE56F327F0C80F4BA963EE7E155A",
"DateOfBirth": "1985-08-12 00:00:00.000"
}
]
Run Code Online (Sandbox Code Playgroud)
遵循两个指南
我确实尝试使用mssql 扩展创建另一个连接并提供ODBC 连接字符串 …
sql-server odbc visual-studio-code azure-keyvault always-encrypted
我有一个使用 sqlexpress 2016 的 mvc 应用程序。
我已按照所有必要的步骤将始终加密配置为表中的一列。并将证书安装到我的机器上以进行测试。在我当地的环境中一切正常。
现在我担心的是,在网络服务器上托管我的应用程序之后。通过应用程序访问列时出现错误,
在证书位置“CurrentUser”的证书存储“我的”中找不到指纹为“XXXXXXXXXXX”的证书。验证数据库中主密钥定义列中的证书路径是否正确,并且证书已正确导入到证书位置/存储中。参数名称:masterKeyPath
如果我只希望特定用户可以通过应用程序访问该解密列,是否可以通过在该单个用户的计算机而不是托管服务器上安装证书来实现?
我正在尝试使用SSIS(Visual Studio 2017)将数据插入到Azure SQL表中,该表具有通过Always Encrypted加密的列以及存储在Azure Key Vault中的列主键,但是我一直遇到错误。
根据在其他帖子中找到的建议,我正在将ADO.NET目标与ODBC数据提供程序一起使用。该用户是在Azure SQL数据库中配置的Azure Active Directory用户,因此可以登录。它具有在密钥库的访问策略中授予它的所有关键特权。
我的ODBC连接字符串如下所示:
DRIVER=ODBC Driver 17 for SQL Server;SERVER=[dbs].database.windows.net;UID=[uid@example.com];PWD=[password];Authentication=ActiveDirectoryPassword;DATABASE=[database];ColumnEncryption=Enabled;KeyStoreAuthentication=KeyVaultPassword;KeyStorePrincipalId=[uid@example.com];KeyStoreSecret=[password]
Run Code Online (Sandbox Code Playgroud)
我希望将其插入表中,但是会导致此错误:
[ADO NET目标[2]]错误:在数据插入过程中发生了异常,从提供程序返回的消息是:错误[CE269] [Microsoft] [SQL Server的ODBC驱动程序17] [SQL Server]错误12038发送请求到https:// [keyvault] .vault.azure.net:443错误[CE263] [Microsoft] [用于SQL Server的ODBC驱动程序17] [SQL Server]验证ECEK签名时出错。错误[CE202] [Microsoft] [用于SQL Server的ODBC驱动程序17] [SQL Server]密钥存储提供程序AZURE_KEY_VAULT无法解密ECEK https:// [keyvault] .vault.azure.net:443 / keys / [cmk] / RSA_OAEP的[版本]。
我能够通过SSMS以及自定义控制台应用程序成功插入到表中,并验证加密是否按预期工作。该错误仅发生于SSIS。
odbc ssis azure-sql-database azure-keyvault always-encrypted
我已用于Always encryptedAzure 上数据库上的数据库表列。我已经阅读了这篇文章 - https://learn.microsoft.com/en-us/azure/sql-database/sql-database-always-encrypted-azure-key-vault - 非常仔细地遵循它。我已经对列进行了加密,并且已成功完成。我可以看到该列已加密。
当我尝试按照同一篇文章现在尝试查看应用程序中的数据时,我收到错误消息:
无法使用密钥存储提供程序解密列加密密钥:“AZURE_KEY_VAULT”。验证数据库中列加密密钥及其列主密钥的属性。加密列加密密钥的最后 10 个字节为:“54-36-01-E0-5C-A1-82-80-B1-B4”。
这是代码中的错误,但是在我消除该错误后,我得到:
拒绝访问。在任何访问策略上均未找到调用者。呼叫者:appid=afd26169-bbac-4a45-ad3c-2b4492d19c6e;oid=dabbc750-5601-442b-9809-3a17f74d5aa2;numgroups=0;iss= https://sts.windows.net/bd8eb048-c497-4576-80eb- 99e763b83ffd/ 保管库:AWKeyVault2;位置=eastus2
值得注意的是,当我使用 SSMS 并将连接字符串选项设置为 时Column Encryption Setting=Enabled,我可以在 SSMS 中看到解密的数据。
在大多数情况下,我认为这是一个权限问题,但我不知所措。我已授予应用程序注册对 Azure 订阅的完全访问权限。我还为应用程序注册生成了一个“秘密”,并在应用程序中使用它。如果我可以看到 SSMS 中的数据,我认为这意味着加密成功,所以这一定与应用程序无法访问 azure key Vault 中的密钥有关。我缺少什么?
我有一个 .Net Core 3.1 项目,使用 EF Core 访问 Azure SQL 数据库中的数据。我目前正在尝试在某些敏感列上实现始终加密功能。
我成功加密了该列,将主密钥存储在 Azure Key Vault 中,我在其中创建了可以访问此密钥的应用程序注册。
我使用此视频来实现此目的:https://www.youtube.com/watch ?v=POLTjo7GpRc
然后,我能够在 C# 代码中检索主密钥并启动 SQL 查询,即从加密表中进行简单的选择。
我可以以明文形式检索加密列(解密),很好。
我现在的问题是,如何配置 EF Core 以检索 Azure Key Vault 中的主密钥并返回实体中的解密值?Sql 查询可以工作,但我不知道如何使其与 EF Core 一起工作。
多谢!
sql azure-keyvault always-encrypted .net-core-3.1 ef-core-3.1
always-encrypted ×10
sql-server ×7
encryption ×2
odbc ×2
azure ×1
c# ×1
ef-core-3.1 ×1
powerbi ×1
sql ×1
ssis ×1