C# 如何在SQL Server 2012中加密特定行的特定列
我有一个应用程序,出于安全原因,需要对某些数据列进行模糊处理或加密。不是所有的行都需要加密这些列,只有一定数量的行需要加密 任何有权访问数据库的人都无法读取数据,但显然需要在应用程序中显示。即便如此,它也只能向某些人展示。所有用户都通过LDAP进行身份验证 我的做法如下: 数据进入:C# 如何在SQL Server 2012中加密特定行的特定列,c#,asp.net,security,encryption,sql-server-2012,C#,Asp.net,Security,Encryption,Sql Server 2012,我有一个应用程序,出于安全原因,需要对某些数据列进行模糊处理或加密。不是所有的行都需要加密这些列,只有一定数量的行需要加密 任何有权访问数据库的人都无法读取数据,但显然需要在应用程序中显示。即便如此,它也只能向某些人展示。所有用户都通过LDAP进行身份验证 我的做法如下: 数据进入: 数据是否来自需要加密的数据源 然后使用安全密钥加密所有相关列并输入数据库 应用程序中出现的数据: 用户是否经过身份验证 该用户是否启用了相关的安全标志 显示每个数据行时,检查该数据行是否包含加密数据 如果有,则使用
实现此方案的最佳方法是什么?您可以将密钥存储在注册表中并使用加密。要使密钥更安全,应使用用户而不是系统DAPI版本。看见您还应该设置注册表项的权限,以限制哪些用户可以读取注册表项。您还可以将DAPI加密字符串存储在一个文件(web.config)中 请注意,当您以用户身份登录时,必须加密计算机上的字符串。这使得发布密钥更加困难,因为您不能简单地从开发服务器复制DAPI保护的密钥 将应用程序池用户设置为,使其能够访问注册表项,并且是用于使用DAPI加密注册表项的同一用户 通过将授权和加密/解密放在一个单独的服务中,您可能会使一切更加安全。将服务设置为使用DAPI用户名而不是应用程序池用户。棘手的部分是服务和网站之间的安全通信 最后,在使用DAPI解密密钥后,您可以使用for key transport使一切更加安全。您可能希望使用字符串开发所有内容,并切换到SecureString,以便进行调试。这里有一个问题有一个答案
对于开发,只需使用与生产不同的密钥即可。开发人员将能够测试信息的编码和解码,但不能解码任何生产数据。您的开发人员确实不应该访问未经清理的生产数据 “一次几百张唱片”绝对没什么好担心的。(虽然一个通常不会批发非透明加密数据。)同时,请考虑超级机密信息可能被限制为单独的系统/数据库/服务;这样,甚至只允许那些具有适当权限的人访问此类内容,或者阻止访问,除非通过特定的探测。