Ehs*_*san 4 sql sql-server encryption sql-server-2008 sql-server-2008-r2
我有一个使用SQL Server 2008中的数据库的Windows应用程序.
我不希望用户看到数据库表.
如何加密数据库中的表?
你有不同的选择.
您可以对数据使用对称加密:
CREATE TABLE销售(...)
创建对称密钥:
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
Run Code Online (Sandbox Code Playgroud)
加密数据:
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;
Run Code Online (Sandbox Code Playgroud)
解密数据:
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;
Run Code Online (Sandbox Code Playgroud)
创建主密钥:
USE master
go
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'My$Strong$Password$123'
Run Code Online (Sandbox Code Playgroud)
创建证书:
CREATE CERTIFICATE DEK_EncCert WITH SUBJECT = 'DEK Encryption Certificate'
Run Code Online (Sandbox Code Playgroud)
创建DEK:
USE MySecretDB
go
CREATE DATABASE ENCRYPTION KEY WITH ALGORITHM = AES_256
ENCRYPTION BY SERVER CERTIFICATE DEK_EncCert
Run Code Online (Sandbox Code Playgroud)
开启加密:
ALTER DATABASE MySecretDB SET ENCRYPTION ON
Run Code Online (Sandbox Code Playgroud)
小智 3
加密不会有帮助 - SQL Server 级别的加密会对文件进行加密。登录后数据可见。
唯一正确的解决方案称为“编程”。基本上采用客户端/服务器,并且没有用户连接到数据库。
或者,您可以使用表权限+应用程序密码来提升应用程序(而不是用户)的权限,但这也不安全(因为您必须将密码放在某处)。
| 归档时间: |
|
| 查看次数: |
21497 次 |
| 最近记录: |