如何控制哪些用户可以解密 SQL Server 对称密钥加密

2023-11-21

我正在考虑加密 SQL Server 中的一些敏感数据,例如银行帐号和社会安全号码,以便遵守新的州法律。我使用 SQL Server 2008 作为带有 .NET 代码的数据库。我已经使用 .NET 来加密密码,但为此我正在考虑使用 Microsoft 的内置加密,只需使用简单的对称密钥加密来加密我需要的几列数据。如果我采用 SQL Server 加密,我可以从外部报告工具解密数据,而不仅仅是在我的 .NET 应用程序中。这是我正在使用的示例:http://blog.sqlauthority.com/2009/04/28/sql-server-introduction-to-sql-server-加密-and-对称-key-加密-tutorial-with-script/

它使用 SQL Server 创建的证书,然后使用 DecryptByKey 函数来解密数据,但我试图确定这到底有多安全?如何控制哪些用户可以解密数据,或者任何人只要打开对称密钥并使用解密功能就可以解密数据?


您有两种选择:

  1. 密码控制。这样,只有知道密码的用户才能解密数据。缺点是用户必须进入每次访问数据时的解密密码。报告必须包含一个密码参数,运行报告的用户将使用数据访问密码填充该参数。应用程序必须向用户请求密码。网站必须向访问者请求密码。等等等等

  2. 访问控制。数据使用 SQL Server 本身有权访问的密钥进行加密(最终加密链一直延伸到服务主密钥,并使用 DPAPI 进行加密)。除了授予和拒绝 SELECT 之外,这不会为您提供更多保护:access控制,而不是密码控制。这种方案仅防止介质意外丢失(有人找到了包含您的数据库的磁盘,或者您丢失了包含数据库的笔记本电脑)。您可以使用以下方法实现相同的效果透明数据加密或文件级加密(比特锁).

常见的数据加密场景是用对称密钥对数据进行加密,然后用非对称密钥(通常是证书的私钥)对对称密钥进行加密。然后,非对称密钥又用密码加密,并且在尝试访问数据时必须提供该密码。这种两级间接的主要原因是密码更改:当密码或私钥被泄露时,对称密钥将使用不同的非对称密钥重新加密,或者非对称密钥将使用不同的密码重新加密。这样访问密码就变了无需重新加密所有数据。如果直接授予对称密钥访问权限,则密码泄露可能需要重新加密所有密钥data,可能有 TB 级的数据。

我提出的两个场景的不同之处在于非对称密钥是否也使用数据库主密钥加密。情况 1) 不是,情况 2) 是。这一切都在加密层次结构.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何控制哪些用户可以解密 SQL Server 对称密钥加密 的相关文章

  • 如何跳过 SSIS 数据流中的最后一行

    我在用FlatFile Source Manager gt Script COmponent as Trans gt OLEDB destination在我的数据流中 源从平面文件读取所有行 我想跳过更新数据库的最后一行 预告片记录 由于它
  • 如何加密捆绑的文本/json 文件?

    我的 iOS 应用程序捆绑了几个文件 现在 如果有人下载该应用程序并访问 ipa 文件 他就可以轻松阅读它们 我想让事情变得更难 您知道有关该主题的任何资源吗 我想我需要一个加密库 以及编码文件的构建脚本中的一些脚本 当然 我知道有人可能会
  • 如何使用 php 通过 https 下载文件

    我需要使用 PHP 下载 xml 文件 我可以在对文件进行curl 调用时通过设置以下选项来读取文件的内容 curl setopt http CURLOPT SSL VERIFYPEER false curl setopt http CUR
  • Bower 安装 self_signed_cert_in_chain

    我正在 Windows 中使用 git bash 构建一个角度应用程序 到目前为止 我已经能够使用 yo 搭建脚手架 没有问题 但是当我尝试发出以下命令时 有人可以指出我来解决这个问题吗 Bower 安装 Angular Bootstrap
  • 分组依据检索 3 个值

    我有以下查询 SELECT Cod MIN Id AS id Min MAX Id AS id Max retrieve value in the middle COUNT AS Tot FROM Table a NOLOCK GROUP
  • 使用Apple80211 api时如何知道OPEN、WPA、WPA2、WEP等安全类型?

    Cydia中的Wifi WiFi FoRum等wifi扫描应用可以知道安全类型 使用 Apple80211 api 时 应用程序如何知道 OPEN WPA WPA2 WEP 等安全类型 CAPABILITIES 的值为 1057 1025
  • 为什么 SQL Server 不推荐使用 SET ANSI_PADDING OFF?

    根据 MSDN BOL 在线书籍 SET ANSI PADDING http msdn microsoft com en us library ms187403 aspx 在 Microsoft SQL Server 的未来版本中 ANSI
  • EF4 和 SQL Server 2000

    我使用 EF4 和 SQL Server 2005 开发了我的网站 但当转移到临时站点时 发现他们使用 SQL Server 2000 现在我收到此错误 我认为该错误与 SQL Server 2000 有关 Incorrect syntax
  • 查找 SQL Server 中表的 B 树高度

    由于数据库数据以B Tree的形式组织在8k页中 对于PK信息也是如此 数据库中的每个表都应该可以计算B Tree的高度 从而揭示达到某些数据需要多少次跳跃 由于行大小和 PK 大小都非常重要 因此很难计算 因为例如varchar 250
  • ELMAH 错误和经典 Asp

    我们已经在我们拥有的 ASP NET MVC 网站上使用 ELMAH 进行错误日志记录 但我们的主网站仍然是经典的 asp 我已经开始为该网站创建错误处理 日志记录结构 但我认为它如果我们能够在所有应用程序中保持错误日志记录的一致性 那就太
  • SQL 中的代码重用和模块化

    代码重用和模块化对于 SQL 存储过程编程来说是一个好主意吗 如果是这样 将这些功能添加到 SQL 存储过程代码库的最佳方法是什么 我通常为常见且重复的任务创建标量值函数 我发现它不仅可以简化与现有程序类似的新程序的开发 而且还有助于错误跟
  • MSSQL:如何使用代码编写存储过程创建脚本?

    我正在尝试使用一个数据库中存在但另一个数据库中不存在的 information schema routines 查询存储过程定义列表 SELECT t1 Routine Definition FROM server1 MyDatabase
  • 如何在 JASPIC 中保存经过身份验证的用户?

    我开发了一个安全认证模块 SAM 并实现了validateRequest方法 我还有一个简单的 Web 应用程序配置为使用此 SAM In my validateRequest方法 我检查 clientSubject 并设置一个Caller
  • 为什么 SSRS 报表从 SQL Server Reporting Services 运行时生成的数据与使用“预览”选项卡运行时生成的数据不同?

    我有一个运行我想要的数据的报表 从 预览 选项卡 即 或者在 VS 2010 中使用 F5 运行时 但是当我将报表 rdl 文件 上传到 SQL Server Reporting Services 并运行更新后的报表时从那里报告 它仍然显示
  • AJAX 安全问题

    我希望能够解决一些关于 AJAX 安全性的问题 这是我试图理解的一个场景 假设我正在使用 AJAX 向页面请求一些半敏感材料 例如 我将把用户的 ID 传递给一个 php 文件 并返回一些关于他们自己的信息 现在 是什么阻止人们模拟此 Ja
  • 有关 CredEnumerate 的帮助

    作为后续this https stackoverflow com questions 199518 how to programatically add mapped network passwords winxp我希望有人可以帮助解决这个
  • Sql批量复制截断小数

    当我使用批量复制将十进制值从 C DataTable 插入 Sql Server 2005 时 值会被截断而不是四舍五入 DataTable 中的数据类型为 Decimal 数据库中的数据类型为Decimal 19 3 数据表中的值为 1
  • 如何在SQL Compact Edition中导入数据? [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我似乎没有找到合适的工具 也没有找到
  • SQL Server查询麻烦,多对多关系

    不知道如何用一行字来表达这个问题 对标题表示歉意 我的数据库中有3个表 例如 Shop Item 商店库存 Shop 和 Item 具有多对多关系 因此 ShopStock 表将它们链接起来 ShopStock 中的字段是 ID ShopI
  • 为什么我在 Firefox 中突然遇到“阻止加载混合活动内容”问题?

    今天早上 在将我的 Firefox 浏览器升级到最新版本 从 22 到 23 后 我的后台 网站 的一些关键功能停止工作 查看Firebug日志 报告了以下错误 Blocked loading mixed active content ht

随机推荐

  • 如何将日期和时间从自然语言翻译为日期时间? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 我正在寻找一种方法将 明天早上 6 点 或 下周一中午 翻译为适当的日期时间对象 我想过设计一套复杂的规则 但还有其他方法吗 解析日期时间 能够解析
  • 如何在 Java 中将文件读取为无符号字节?

    如何在 Java 中将文件读取为字节 需要注意的是 所有字节都必须为正数 即不能使用负数范围 这可以在 Java 中完成吗 如果可以 怎么做 我需要能够将文件的内容乘以一个常量 我假设我可以将字节读入 BigInteger 然后相乘 但是由
  • 多线程安全日志记录

    我们有一个在多个线程中运行并使用 Log4Net 作为日志记录框架的应用程序 我们遇到了一些日志事件未记录的情况 正如文档中提到的 文件附加器其他 Appender 是 not对于多线程操作是安全的 我在网上搜索解决方案或 Appender
  • 如何清除或清空 StringBuilder? [复制]

    这个问题在这里已经有答案了 我正在使用一个字符串生成器在循环和每 x 迭代中我想清空它并从一个空开始StringBuilder 但我看不到任何类似于 NET的方法StringBuilder Clear在文档中 只是delete方法看起来过于
  • Python 中 exec 和 eval 的使用

    所以我明白了什么exec and eval并且compile做 但为什么我需要使用它们呢 我不太清楚使用场景 谁能给我一些例子 以便我更好地理解这个概念 因为我知道这都是理论 我将举一个我使用过的例子eval我认为这是最好的选择 我正在编写
  • .net 中转换为短路径的标准方法

    寻找标准的防错误方法将 长名称 例如 C Documents and settings 转换为等效的 短名称 C DOCUME 1 我需要它来从我的 C 应用程序中运行外部进程 如果我用 长名称 中的路径提供它 它就会失败 如果您准备开始调
  • python 中未定义名称 exit

    以下是代码 当我运行时 我收到一条错误消息 指出 名称退出未定义 谁能告诉我为什么 非常感谢您的时间和关注 if len sys argv 4 do something pass else print usage something her
  • 将二进制转换为浮点值的计算器 - 我做错了什么?

    我有以下代码 它将 6 个浮点数以二进制形式写入磁盘并读回 include
  • 在本地计算机上使用 Jupyter Notebook 在远程计算机上运行代码

    我使用 Jupyter Notebook 来运行生物信息学分析 我喜欢它 然而 只有当我在个人计算机上运行它时 它才真正发挥得很好 不过 我经常使用具有多核的远程计算机进行分析 以减少处理时间 我希望能够在我的个人计算机上使用 Jupyte
  • Hilt 循环依赖

    我正在使用 Hilt 创建一个宠物项目 也许我遇到这个问题是因为我安装一切都在SingletonComponent class 也许我应该为每一个创建组件 宠物项目有一个NetworkModule UserPrefsModule 当我尝试创
  • Exchange Server(内部)是否支持 REST API?

    这份适用于 Exchange Server 的文档表明 大部分 API Web 服务都是基于 SOAP 的 https msdn microsoft com en us library office dd877012 v exchg 150
  • Python 正则表达式——无关匹配

    我想使用分割字符串 和空格作为分隔符 我想保留分隔符 除非它是空格 我尝试使用以下代码来实现此目的 def tokenize s import re pattern re compile s return pattern split s p
  • 数组既可以关联又可以索引吗?

    JavaScript 中的数组可以关联和索引吗 我希望能够通过位置或键值查找数组中的项目 Javascript 中不存在关联数组之类的东西 您可以使用对象文字 它look类似于关联数组 但它们具有无序属性 常规 Javascript 数组基
  • 如何保存球衣响应的文件?

    我正在尝试使用 Jersey 从网络资源下载 SWF 文件 我编写了以下代码 但无法正确保存文件 Response response webResource request MediaType APPLICATION OCTET STREA
  • 在 MySQL DB 中存储特殊字符的正确 PHP 方法

    使用 PHP 在 MSQUL 数据库中存储特殊字符 如下所示 以避免注入的最佳方法是什么 我现在就是这样做的 book text POST book text book text htmlentities book text ENT QUO
  • 链接到 Qt 中的共享库

    我刚刚创建了tinyxml 作为共享库 并且想弄清楚如何链接它 这是如何实现的 您必须在 pro 文件中添加 includepath 和 libs 像下面这样的东西 只需改变你的路径即可 LIBS ltinyxml LIBS L libs
  • 如何处理 WCF 客户端断开连接

    如何处理 WCF 客户端断开连接 我尝试过回调 但它似乎仅在客户端通过使用 断开连接 按钮 明确 断开连接时才有效 我希望我的服务器在客户端断开连接时收到通知 即使是手动断开连接或客户端进程崩溃 使用OperationContext Cur
  • 为什么 Firefox 以红色突出显示 HTML 过渡文档类型?

    看起来 Firefox 将其视为错误 这是什么意思 如果我将其更改为 Firefox 会正常处理它 顺便说一句 我使用的是 Firefox 12 0 如果您将鼠标悬停在该红线上 Firefox 会给您答案 几乎标准模式文档类型 预期的 查看
  • 在不使用HttpClient的情况下将处理后的JSP内容获取到spring控制器中?

    所以通常在 Spring 控制器中你只需返回一个ModelAndView对象并将请求转发到 JSP 我需要做的实际上是获取已处理的 JSP 的内容 这样我就可以在 JSONP 响应中发送它 例如 callback processed HTM
  • 如何控制哪些用户可以解密 SQL Server 对称密钥加密

    我正在考虑加密 SQL Server 中的一些敏感数据 例如银行帐号和社会安全号码 以便遵守新的州法律 我使用 SQL Server 2008 作为带有 NET 代码的数据库 我已经使用 NET 来加密密码 但为此我正在考虑使用 Micro