【问题标题】:Encrypting database tables in SQL Server 2008在 SQL Server 2008 中加密数据库表
【发布时间】:2012-01-15 15:41:53
【问题描述】:

我有一个使用 SQL Server 2008 数据库的 Windows 应用程序。

我不希望用户看到数据库表。

如何加密我的数据库中的表?

【问题讨论】:

  • 如果您是管理员,是否可以通过授予只写权限来限制他们?
  • @SaiKalyanAkshinthala:我不是管理员。我是项目开发人员。我已将项目交付给管理员,但我不能管理员和用户能够看到数据库表和数据表。
  • 您为什么不希望他们看到这些表格 - 为什么管理员不锁定他们的访问权限?
  • 用户无权访问数据库。该数据库托管在其他地方。为了提高安全性,我想加密我的数据库中没有人可以看到的表

标签: sql sql-server sql-server-2008 encryption sql-server-2008-r2


【解决方案1】:

这里有不同的选择。

  • 您可以对数据使用对称加密:

    创建表销售 ( ... )

创建对称密钥:

CREATE CERTIFICATE cert_sales WITH SUBJECT = N'Sales certificate',
START_DATE = N'2009-01-01', EXPIRY_DATE = N'2018-12-31';

CREATE SYMMETRIC KEY symkey_sales WITH ALGORITHM = AES_256 
ENCRYPTION BY CERTIFICATE cert_sales

加密数据:

TRUNCATE TABLE sales;
OPEN SYMMETRIC KEY symkey_sales DECRYPTION BY CERTIFICATE cert_sales;
INSERT INTO sales() SELECT a, ENCRYPTBYKEY(Key_Guid(N'symkey_sales'), B) FROM T2;
CLOSE SYMMETRIC KEY symkey_sales;

解密数据:

OPEN SYMMETRIC KEY symkey_sales DECRYPTION BY CERTIFICATE cert_sales;
SELECT a, CAST(DecryptByKey(B) as nvarchar(100)) FROM sales;
CLOSE SYMMETRIC KEY symkey_sales;
  • 您可以对数据使用非对称加密
  • 您可以使用透明数据加密来加密所有数据库文件:

创建主密钥:

USE master
go
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'My$Strong$Password$123'

创建证书:

CREATE CERTIFICATE DEK_EncCert WITH SUBJECT = 'DEK Encryption Certificate'

创建 DEK:

USE MySecretDB
go
CREATE DATABASE ENCRYPTION KEY WITH ALGORITHM = AES_256
ENCRYPTION BY SERVER CERTIFICATE DEK_EncCert

开启加密:

ALTER DATABASE MySecretDB SET ENCRYPTION ON
  • 您可以使用 BitLocker - 完整的卷加密

【讨论】:

    【解决方案2】:

    加密无济于事 - SQL Server 级别的加密会加密文件。登录后即可看到数据。

    唯一合适的解决方案称为“编程”。基本上去客户端/服务器,没有用户连接到数据库。

    或者,您可以使用表的权限 + 应用程序密码来提升应用程序(而不是用户)的权限,但这也是不安全的(因为您必须将密码放在某处)。

    【讨论】:

      【解决方案3】:

      如果您不授予用户 SELECT 权限,用户将看不到表的内容。这意味着它们不应作为 dbo 组的成员连接。而是为用户的各种安全组创建一个或多个组,并将权限分配给您希望他们访问这些组的数据库对象。

      请注意,如果您有一组对象将被一个或多个用户组集体许可,您可以在单独的架构中创建这些组,然后授予用户组访问权限整个架构。当您将数据库对象添加到架构时,这使得权限成为一次性事务。

      【讨论】:

      • 这不回答操作。安全性和加密是两个独立但经常重叠的问题。
      猜你喜欢
      • 2012-02-08
      • 1970-01-01
      • 2011-07-18
      • 1970-01-01
      • 2015-01-18
      • 2011-06-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多