当前位置: 首页 > 面试题库 >

SQL Server:如何限制对加密列的访问,甚至从dba?

蔚宏大
2023-03-14
问题内容

我是数据库加密的新手。我们需要对各种显示敏感信息的表中的某些列进行加密。我们面临的问题是,有权访问数据库或其证书和对称密钥(甚至不是dbas)的任何人都不应看到数据,只有查询数据库中数据的应用程序的某些用户才能看到该信息。

因此,我们提出了以下建议:

  • 为每个带有加密列的表创建1个对称密钥
  • 现在,使用以下命令定义受证书保护的所有密钥以及访问这些证书的存储过程:
    OPEN SYMMETRIC KEY Key_SalaryTable
    

    DECRYPTION BY CERTIFICATE SystemCertificate
    WITH PASSWORD = ‘password’;

(这意味着用于打开的证书的密码Key_SalaryTable被硬编码到存储过程中)

但是有一个问题,任何数据库管理员都只能查看存储过程或直接调用存储过程以知道如何打开密钥来查看工资表

即使我们限制每个用户对存储过程的访问,dba都可以轻松地覆盖它并提取信息,然后再重新设置限制,而没人会知道该信息已被破坏。

有谁有更好的解决方案?


问题答案:

另一种选择是从应用程序本身执行OPEN SYMMETRIC KEY/CLOSE SYMMETRIC KEY命令,而不是在存储过程中执行。顺便说一句,KEY在会话中保持打开状态,直到其关闭或会话终止。确保您的应用程序和数据库之间的连接已“在线”加密。

在ASP.NET端,您可以将密码保留在加密的web.config部分中。



 类似资料:
  • 问题内容: 我正在尝试设置用于访问智能卡的PKCS11提供程序。我在系统上安装了PKCS11库,并遵循了《Java PKCS#11参考指南》中的说明 。在参考中,他们只是创建一个实例,并将配置文件的名称传递给构造函数。当我尝试编译以下代码时 我收到以下错误。 访问限制:由于必需的库/usr/lib/jvm/java-6-sun-1.6.0.24/jre/lib/ext/sunpkcs11.jar受

  • 问题内容: 有谁知道如何在react-router中限制对特定路由的访问?我想在允许访问特定路由之前检查用户是否已登录。我以为这很简单,但是文档尚不清楚该怎么做。 这是我应该在定义组件的位置设置的东西,还是应该在组件处理程序中处理的东西? 问题答案: 更新(2019年8月16日) 在react-router v4和使用React Hooks中,这看起来有些不同。让我们从开始。 我们正在使用一个库来

  • 有没有办法(内置或通过插件)限制Eclipse中其他包对Java包的访问? 例子: 包(在同一项目中): com.my.project.common 通用域名格式。我的项目服务1 通用域名格式。我的项目服务V2 现在我想限制对serviceV1和serviceV2的公共访问。但是当然应该允许这些服务访问公共包

  • 在Class内部,可以有属性和方法,而外部代码可以通过直接调用实例变量的方法来操作数据,这样,就隐藏了内部的复杂逻辑。 但是,从前面Student类的定义来看,外部代码还是可以自由地修改一个实例的name、score属性: >>> bart = Student('Bart Simpson', 98) >>> bart.score 98 >>> bart.score = 59 >>> bart.sc

  • 在Class内部,可以有属性和方法,而外部代码可以通过直接调用实例变量的方法来操作数据,这样,就隐藏了内部的复杂逻辑。 但是,从前面Student类的定义来看,外部代码还是可以自由地修改一个实例的name、score属性: >>> bart = Student('Bart Simpson', 59) >>> bart.score 59 >>> bart.score = 99 >>> bart.sc

  • 我们将用户权限存储在声明中。 下面是企业客户索赔的样子: 然后,当用户试图使用从web检索文件的下载URL时,Firebase抛出一个权限错误。 你能提供一个解决方案吗?