4

我有一個使用SQL Server 2008中的數據庫的Windows應用程序。加密SQL Server 2008中的數據庫表

我不希望用戶看到數據庫表。

我怎樣才能加密在我的數據庫表?

+0

如果您是管理員,您可以通過提供writeonly權限來限制他們嗎? –

+0

@SaiKalyanAkshinthala:我不是管理員。我是項目的開發人員。我已經將項目交付給管理員,但是我不能管理員和用戶能夠看到數據庫標籤和數據標籤。 – Ehsan

+0

爲什麼你不希望他們看到表 - 爲什麼管理員不鎖定他們的訪問? – 2011-12-09 08:25:16

回答

3

加密不會幫助 - 的SQL Server級別的加密加密文件。一旦你登錄的數據是可見的。

唯一正確的解決方案被稱爲「編程」。基本上去客戶端/服務器,並沒有用戶連接到數據庫。

另外,您可以使用權限上表+應用程序密碼提升爲應用程序(而不是用戶)的權利,但這是不安全的太(因爲你必須把密碼的地方)。

6

您在這裏有不同的選擇。

  • 您可以使用對稱加密爲您的數據:

    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 

加密數據:

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; 
  • 可以使用非對稱加密爲您的數據
  • 您可以使用Transparrent數據加密用於加密所有數據庫文件:

創建主關鍵字:

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 - 完整卷加密
-1

的用戶將不會看到表的內容,如果你不授予他們的SELECT權限。這意味着他們不應該成爲dbo組的成員。請爲各種安全用戶組創建一個或多個組,併爲您希望他們訪問這些組的數據庫對象分配權限。

需要注意的是,如果你有一組對象將被統稱權限授予一個或多個用戶組,可以在一個單獨的模式創建這些組,然後授予該用戶組權限訪問整個架構。這會在向數據庫添加數據庫對象時允許一次性事務。

+0

這不會回答操作。安全和加密是兩個獨立但常常重疊的問題。 –

相關問題