精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

SQL Server 2008安全性探討

數據庫 SQL Server 數據庫運維
今天我們將談到SQL Server 2008安全性,包括身份驗證模式等等。供大家參考,學習。

SQL Server身份驗證模式

Microsoft SQL Server 2008提供了兩種對用戶進行身份驗證的模式,默認模式是Windows身份驗證模式,它使用操作系統的身份驗證機制對需要訪問服務器平局進行身份驗證,從而提供了很高的安全級別。另一種方式是SQL Server和Windows身份驗證模式,允許基于Windows的和基于SQL的身份驗證。因此,它又是被稱為混合模式。Windows身份驗證模式允許使用存儲在本地計算機的安全帳戶管理器SAM數據庫中的現有帳戶,或者,如果該服務器是活動目錄域的一個成員,則可以使用Micorsoft Windows活動目錄數據庫中的帳戶。使用Windows身份驗證模式的好處包括允許SQL或數據庫管理員使用已經存在的帳戶,從而減少管理開銷,以及允許他們使用強大的身份驗證協議,例如Kerberos或Windows NT LAN Manager(NTLM)。在Windows身份驗證模式中,SQL并不存儲或需要訪問用于身份驗證的密碼信息。Windows身份驗證提供程序將負責驗證用戶的真實性。混合模式允許創建SQL Server獨有的登錄名,這些登錄名沒有相應的Windows或活動目錄帳戶。這可以幫助那些不屬于您的企業的用戶通過身份驗證,并獲得訪問數據庫中安全對象的權限。當使用SQL登錄名時,SQL Server將用戶名和密碼信息存儲在master數據庫中,它負責對這些平局進行身份驗證。

主體

主題Principal這個術語用于描述將與SQL Server交互的個人、組和進程。主題可用的資源取決于他們的位置。Microsoft SQL Server支持集中不同類型的主題,他們定義在三個不同的級別上:Windows級別、SQL Server級別和數據庫級別。

登錄名

和SQL 以前的版本不同,SQL Server 2008并不自動為[BUILTIN\Administrators]組創建登錄名,以免使服務器上具有本地管理權限的任何人都可以登錄進該SQL Server。相反,必須在安裝向導中設置帳戶時添加管理員,或在安裝后將管理員添加到sysadmin角色。同時還創建一個SQL登錄名sa,sa帳戶對于所有的SQL功能擁有完全管理訪問權限。在安裝時,系統會提示為sa帳戶指定密碼。

  1. CREATE LOGIN [AughtEight\Bob] from Windows; GO 
  2. CREATE LOGIN [AughtEight\G NorthWest Sales] from Windows; GO 
  3. CREATE LOGIN Carol PASSWORD='Th1sI$|\/|yP@ssw0rd'; GO 
  4. ALTER LOGIN Carol WITH PASSWORD='newpassword', CHECK_POLICY=OFF; GO 
  5. DROP LOGIN [AughtEight\Bob]; GO 

憑據

Microsoft SQL Server 2008提供了一個將SQL Server登錄名映射到外部Windows帳戶的功能。如果需要允許SQL Server登錄名與SQL Server本身范圍之外的資源交互,這個功能很有幫助。他們還可以與為EXTERNAL_ACCESS權限配置的程序集一起使用。憑據可以配置為一對一映射,也可以配置為多對一映射,允許多個SQL Server登錄名使用一個共享Windows帳戶進行外部訪問。在SQL Server 2008中,登錄名可以與多個憑據相關聯。

  1. --使用自己的服務器名稱替代AughtEight 
  2. USE master CREATE CREDENTIAL StreetCred WITH IDENTITY='AughtEight\CarolStreet', SECRET='P@ssw0rd'; GO 
  3. --把Carol的SQL Server登錄名和StrretCred平局相關聯 
  4. ALTER LOGIN Carol WITH CREDENTIAL=StreetCred; GO; 

服務器角色

Microsoft SQL Server 2008定義了8個可用于簡化SQL 登錄名管理和委托管理的服務器級別角色。這些角色通常被稱為固定服務器角色,因為對于這些角色,唯一能更改的只是成員資格。固定服務器角色可以基于角色的用途,為一個登錄名自動支配一組通用權限。要向固定服務器角色添加一個登錄名,可使用sp_addsrvrolemember存儲過程。

  1. USE master CREATE LOGIN Ted WITH PASSWORD='P@ssw0rd'; GO 
  2. EXEC sp_addsrvrolemember 'Ted','securityadmin'; GO 
  3. USER master EXEC sp_dropsrvrolemember 'Ted','securityadmin'; GO 

數據庫用戶

數據庫用戶是Microsoft SQL Server 2008采用的安全模型的另一個組成部分。用戶可直接或通過一個或多個數據庫角色中的成員關系訪問安全的數據庫對象。用戶也可與表、視圖和存儲過程之類的對象的所有權相關聯。

在創建登錄名時,除非它是擁有所有數據庫管理權限的固定服務器角色的一個成員,否則該登錄名在附加到服務器的各數據庫中沒有顯示權限。此時,該登錄名和來賓數據庫用戶關聯在一起,并繼承該用戶帳戶的權限。在SQL Server Management Studio管理數據庫用戶時,有幾個選項可供選擇。在常規屬性頁上,可以為用戶指定一個名稱,并將該用戶和一個現有的登錄名關聯起來。注意,用戶名和登錄名并不一定要匹配,但是為了方便管理,最好的做法是使用一致的命名約定,但這并不是強制要求。在常規頁上可以配置的其他選項包括用戶的默認架構、該用戶所擁有的架構以及該用戶所屬的數據庫角色。

  1. USE tempdb; CREATE USER Carol; GO 
  2. USE master; CREATE LOGIN [AughtEight\Bob] FROM WINDOWS; 
  3. USE AdventureWorks2008; 
  4. CREATE USER BillyBob FOR LOGIN [AughtEight\Bob] WITH DEFAULT_SCHEMA=sales;  
  5. USER AdventureWorks2008; CREATE CERTIFICATE SalesCert     
  6. ENCRYPTION BY PASSWORD='P@ssw0rd' 
  7.         WITH SUBJECT='Sales Schema Certificate',         
  8. EXPIRY_DATE='12/31/2010'; GO 
  9. CREATE USER SalesSecurity FOR CERTIFICATE SalesCert;  
  10. USE AdventureWorks2008 ALTER USER SalesSecurity WITH NAME=SalesSchemaSecurity; GO 
  11. USE AdventureWorks2008 ALTER USER BillyBob WITH DEFAULT_SCHEMA=Production; GO 
  12. USE master CREATE LOGIN TempCarol WITH PASSWORD='MyPassword', CHECK_POLICY=OFF; GO 
  13. USE tempdb ALTER USER Carol WITH Login=TempCarol; GO 
  14. USE AdventureWorks2008 DROP USER BillyBob; GO 

固定數據庫角色

每個SQL Server數據庫都有一系列固定數據庫角色,可用于在必要時把權限委托給用戶。和固定服務器角色一樣,對于固定數據庫角色來說,唯一可以改變的就是成員資格。用戶定義的數據庫角色對管理權限和對數據庫中的資源的訪問提供了更多的控制。在使用基于角色的安全模型時,可能京城發現內置主體(比如Windows中的組或SQL中的角色)提供了過得uod訪問權限,或者沒有提供足夠的權限。在這種情況下,可以創建用戶定義的角色,控制整個一組用戶對安全對象的訪問。

  1. USE AdventureWorks2008 CREATE ROLE SalesStaff AUTHORIZATION Carol; GO 
  2. USE AdventureWorks2008 ALTER ROLE SalesStaff WITH NAME=SalesStaffRole; GO 
  3. USE AdventureWorks2008 DROP ROLE SalesStaffRole; GO 
  4. USE AdventureWorks2008 EXEC sp_addrolemember 'db_datareader','Carol'; GO 
  5. USE AdventureWorks2008 EXEC sp_droprolemember 'db_datareader','Carol'; GO 

另外一種可以用來幫助保護數據庫環境的角色是應用程序角色。應用程序角色和標準的角色類型截然不同,他們沒有成員,可以而且應該被設置為使用密碼進行身份驗證。當運行一個特定的應用程序的所有用戶必須采用同樣的數據訪問時,通常使用應用程序角色。應用程序可以不需要提示用用提供用戶名和密碼就實例化應用程序角色,從而避免了依賴于個人用戶是否擁有適當的訪問權限讓應用程序正常工作。

  1. USE AdventureWorks2008 CREATE APPLICATION ROLE SalesApp WITH PASSWORD='P@www1rd',DEFAULT_SCHEMA=Sales; GO 
  2. USE AdventueWorks2008 GO 
  3. DECLARE @cookie varbinary(8000); 
  4. EXEC sp_setapprole 'SalesApp','P@ssw0rd',@fCreateCookie=true,@cookie=@cookie OUTPUT; GO 
  5. SELECT USER_NAME(); 

一旦執行了上述腳本,該連接執行的所有活動都將在該應用程序角色下操作。當關閉連接時,應用程序角色會話也終止。通過ALTER APPLICATION ROLE語句,可以更改應用程序角色的名稱、密碼和默認架構。

  1. USE AdventureWorks2008 ALTER APPLICATION ROLE SalesApp WITH NAME=OrderEntry,PASSWORD='newP@ss0rd'; GO 
  2. USE AdventureWorks2008 DROP APPLICATION ROLE OrderEntry; GO 

權限

在對象或資源上定義權限的語句會定義一個權限狀態、一個操作、獎項哪個對象應用權限和操作,以及權限和動作將應用于哪個安全主體。首先,需要知道基本上有三種權限狀態:GRANT,GRANT_W_GRANT和DENY。用于控制權限狀態的三個命令為GRANT,REVOKE和DENY。

SQL Server 2008使用一個分層的安全模型,允許指定可在服務器、數據庫、架構或者對象級別授予的權限。也可以在表和視圖內為選定列指派權限。在保護數據庫服務器時,應使用兩個關鍵策略:在授權時應當采用的第一個策略為”最小特權原則“,這一策略規定只向用戶提供適當的權限進行操作。通過對數據庫環境做出這樣嚴格的限制,可以提供一個能最小化服務器的受攻擊面,同時又維護運行功能的解決方案。第二個策略是深度防御。好的安全實現方案應在數據庫的所有層上提供安全性。這可能包括針對客戶機和服務器之間的通信采用IPSec或SSL,在身份驗證服務器上使用強密碼加密以及在表或視圖中配置列級權限。

服務器權限

可以通過制定權限以及將被指派權限的登錄名來管理服務器控制權限,如:

  1. --將創建數據庫的權限授予登錄名Ted 
  2. USE master GRANT CREATE ANY DATABASE TO Ted; GO 
  3. --Ted有權更改該登錄名及允許其他人更改登錄名 
  4. USE master GRANT ALTER ANY LOGIN TO Ted WITH GRANT OPTION; GO 
  5. --刪除Ted的更改登錄名的能力 
  6. USE master REVOKE ALTER ANY LOGIN TO Ted CASCADE; GO 
  7. --禁止Ted創建新數據庫 
  8. USE master DENY CREATE ANY DATABASE TO Ted; GO 

但是,對于一個登錄名或用戶時否能夠執行某一特定的操作而言,DENY和EVOKE并不總是終極答案,如果某登錄名是sysadmin固定服務器角色的一個成員,該登錄名就可以完全控制SQL Server及其資源,而且組織此登錄名訪問服務器上的對象沒有太大意義。

端點是服務器級別的對象,在授予、撤銷和拒絕時,它使用的語法和服務器權限有一些不同。下面的例子創建了一個名為ServiceBroker的端點,它將被用于一個Service Broker應用程序,然后將該端點的ALTER權限授予Ted:

  1. CREATE ENDPOINT ServiceBroker STATE=STARTED AS TCP (LISTENER_PORT=5162) FOR SERVICE_BROKER (AUTHENTICATION=WINDOWS); GO 
  2. USER master GRANT ALTER ON ENDPOINT :: ServiceBroker TO Ted; GO 
  3. USE master GRANT ALTER ON LOGIN::Ted TO Carol WITH GRANT OPTION; GO 

數據庫的作用域權限

  1. USE AdventureWorks2008 CREATE USER Alice FOR LOGIN [AughtEight\Alice] 
  2. WITH DEFAULT_SCHEMA=SALES; GO 
  3. GRANT CONTROL ON SCHEMA::Sales TO Alice 

架構作用域權限

  1. Use AdventureWorks2008 GRANT SELECTUPDATE ON Person.Person to Alice GO 

SQL Server加密

關于SQL Server 2008使用的加密層級結構,頂層是Windows層,其中包括Windows Data Protection API (DPAPI)。DPAPI負責使用本地機器密鑰加密服務的服務主密鑰。服務主密鑰是SQL環境中加密鏈的頂層。首次創建低級別的密鑰時,系統會自動生成服務主密鑰。

服務主密鑰的下面是數據庫主密鑰Database Master Key。數據庫主密鑰可以保護數據庫中所有證書的私鑰和非對稱密鑰的私鑰。它是采用3DES加密算法和密碼加密的對稱密鑰。該密鑰的副本使用服務主密鑰加密,并存儲在主數據庫和應用它的數據庫中。如果數據庫被轉移到另一個服務器上,可以使用OPEN MASTER KEY語句并提供加密密碼來解密數據庫主密鑰。

在數據庫作用域中,還有可用于加密數據庫的對稱密鑰和非對稱密鑰,以及可以用于數字簽名和實現不可否認性的證書。

應該首先創建數據庫主密鑰,記住數據庫主密鑰是對稱密鑰,用來加密數據庫中的所有私有密鑰數據。如果使用非對稱密鑰或證書,這是非常有用的,因為創建它們時不需要提供密碼或其它保護與雙方關聯的私鑰的機制。要為AdventureWorks2008數據庫創建一個新的主密鑰,可以執行下面的命令:

  1. USE AdventureWorks2008 CREATE MASTER KEY ENCRYPTION BY PASSWORD='P@ssw0rd'; GO 

  創建主密鑰需要數據庫的CONTROL權限,如果已經創建了一個主密鑰,那么要想創建新的主密鑰,必須刪除現有的主密鑰。如果現有的主密鑰已被用來加密數據庫中的一個私鑰,那么就不能刪除它了。一旦創建了主密鑰,就可以查詢sys.database目錄視圖,通過is_master_key_encrypted_by_server列查看該數據庫主密鑰是否已經使用服務主密鑰加密。該列使用一個布爾值表明數據庫主密鑰是否使用服務主密鑰加密。如果數據庫主密鑰是在另一個服務器上創建的,該值就為0

  1. SELECT NAME, [is_master_key_encrypted_by_server] FROM sys.databases 

  在繼續討論使用其他密鑰之前,讓我們看一下如何備份服務主密鑰和數據庫主密鑰。如果必須進行災難恢復,且需要恢復使用這些密鑰之一加密的數據,那么這將是相當有用的。梁宗密鑰的語法是相似的,但需要額外的一部來備份加密的數據庫主密鑰。

首先看服務主密鑰,在BACKUP SERVICE MASTER KEY語句中使用一個文件路徑,可以是一個本地或UNC路徑,以及一個滿足密碼復雜度要求的密碼,備份文件時使用密碼可以防止他人將您的主密鑰還原到另一臺服務器上,然后解密您的數據庫主密鑰

  1. BACKUP SERVICE MASTER KEY TO FILE='C:\KyeBackups\ServiceMasterKey' ENCRYPTION BY PASSWORD='c@MplexP@ssw0rd';  --如果需要還原該服務主密鑰,可使用 
  2. RESTORE SERVICE MASTER KEY FROM FILE='C:\KyeBackups\ServiceMasterKey' DECRYPTION BY PASSWORD='c@MplexP@ss0rd'

備份和還原數據庫主密鑰的方法如下:

  1. --Backup the database master key 
  2. USE AdventureWorks2008; OPEN MASTER KEY DECRYPTION BY PASSWORD='P@ssw0rd'  
  3. BACKUP MASTER KEY TO FILE='C:\KyeBackups\AWorksMasterKey' ENCRYPTION BY PASSWORD='dn9e8h93ndwjKJD'; GO 
  4.  
  5. --Restore the database master key 
  6. USE AdventureWorks2008; RESTORE MASTER KEY FROM FILE='C:\KyeBackups\ServiceMasterKey' 
  7. DECRYPTION BY PASSWORD='dn9e8h93ndwjKJD' ENCRYPTION BY PASSWORD='P@ss0rd' 
  8. GO 

可擴展的密鑰管理

SQL Server 2008中一項最重要的新功能是可擴展的密鑰管理EKM,Extensible Key Management,它使用Microsoft Cryptographic API,MSCAPI在SQL Server 2008環境的外部生成和存儲用于數據和密鑰加密的加密密鑰。這通常通過使用HSM,Harware Security Model,硬件安全模塊實現,HSM供應商可創建一個與MSCAPI連接的提供程序,提供一部分HSM功能給SQL Server 2008和其他利用MSCAPI的應用程序,遺憾的是,由于MSCAPI用作HSM與SQL Server之間的中間層,它無法將HSM的所有功能提供給SQL Server。

為了使用EKM,必須首先在服務器上啟用它。它默認是關閉的,但可通過sp_configure命令打開。由于啟用EKM是高級功能,因此必須制定shwo advanced配置,下面的實例展示了如何為服務器打開EKM:

  1. sp_configure 'show advanced',1; GO 
  2. RECONFIGURE 
  3. GO sp_configure 'EKM provider enabled',1; GO 
  4. RECONFIGURE 
  5. GO 

  在啟用了EKM后,現在可以在HSM模塊、智能卡或USB設備上存儲加密密鑰。不管何時使用存儲在這些設備上的密鑰加密數據,要解密數據,必須連接上這些設備。這顆防止未授權的用戶將數據庫文件復制并放至欺騙性服務器,從而訪問所有秘密數據。

對稱密鑰

如前所述,對稱密鑰提供了一個用于加密大量數據的有效模型。使用同樣的密鑰來加密和解密可以把資源開銷降低到最低,生成對稱密鑰的語法:

  1. CREATE SYMMETRIC KEY name [AUTHORIZATION owner] [FROM PROVIDER] providername WITH options ENCRYPTION BY mechanism 

  下面的例子創建了一個名為SalesKey1的新的對稱密鑰,該密鑰使用的是192為的3DES(3KEY)算法:

  1. USE AdventureWorks2008 GO 
  2. --Create Symmetric Key 
  3. CREATE SYMMETRIC KEY SalesKey1     
  4. WITH ALGORITHM=TRIPLE_DES_3KEY,     
  5. KEY_SOURCE='The quick brown fox jumped over the lazy dog',     
  6. IDENTITY_VALUE='FoxAndHound'     
  7. ENCRYPTION BY PASSWORD='9348hsxasnA@B'; GO 

可以使用ALTER SYMMETRIC KEY語句添加或刪除用于加密密鑰的方法,也可以使用DROP SYMMETRIC KEY語句刪除對稱密鑰。在這個例子里,使用之前在數據庫用戶中創建的SalesCert證書來加密對稱密鑰,然后刪除前例中的密碼加密

  1. --Open the symmetric key 
  2. OPEN SYMMETRIC KEY SalesKey1 DECRYPTION BY PASSWORD='9348hsxasnA@B' 
  3. --Add encryption using the certificate created earlier 
  4. ALTER SYMMETRIC KEY SalesKey1 ADD ENCRYPTION BY CERTIFICATE SalesCert --Remove the password encryption 
  5. LATER SYMMETRIC KEY SalesKey1 DROP ENCRYPTION BY PASSWORD='9348hsxasnA@B' 
  6. --Close the symmetric key 
  7. CLOSE SYMMETRIC KEY SalesKey1 

非對稱密鑰

  1. CREATE ASYMMETRIC KEY name [AUTHORIZATION owner] [FROM key_source] WITH ALGORITHM=algrithm [ENCRYPTION BY PASSWORD='password'

  在創建非對稱密鑰時,可以指定密鑰對的所有者和密鑰源(可以是一個強名稱文件、一個程序集或一個可執行的程序集文件)另外,也可以使用一個決定私鑰使用的位數的算法,選擇密鑰成俗是512,1024還是2048位,還可以使用ENCRYPTION BY PASSWORD選項來加密私鑰。如果沒有指定密碼,數據庫主密鑰將加密私鑰

  1. USE AdventureWorks2008 CREATE ASYMMETRIC KEY HumanResources WITH ALGORITHM=RSA_2048; GO 

  可以使用ALTER ASYMMETRIC KEY語句更改密鑰對的屬性,可以使用REMOVE PRIVATE KEY選項將私鑰從數據庫中刪除(確保已經先備份過私鑰),或者可以更改保護私鑰的方式。例如,可以更改用來加密私鑰的密碼,然后把保護方式從密碼改為數據庫主密鑰,反之亦然。下面的代碼,通過密碼加密在前面的例子中創建的HumanResouces密鑰對中的私鑰:

  1. USE AdventureWorks2008 ALTER ASYMMETRIC KEY HumanResources WITH PRIVATE KEY (ENCRYPTION BY PASSWORD='P@ssw0rd'

  下面的例子中,通過先解密,然后用一個新的密碼重新加密的方式更改用于加密私鑰的密碼

  1. USE AdventureWorks2008 ALTER ASYMMETRIC KEY HumanResources 
  2. WITH PRIVATE KEY(DECRYPTION BY PASSWORD='P@ssw0rd',ENCRYPTION BY PASSWORD='48UFDSJehf@*hda'); GO 

證書

在加密方面,公鑰證書和非對稱密鑰的操作方式一樣,不過,密鑰對被綁定到證書。公鑰包含在省屬詳細信息中,而私鑰必須被安全地歸檔。與證書關聯的私鑰必須用密碼、數據庫主密鑰或另外一個加密密鑰保護。在加密數據時,最好的做法是使用一個對稱密鑰加密數據,然后使用公鑰加密該對稱密鑰。

當創建一個自簽名證書時,可以使用CREATE CERTIFICATE語句。可以選擇一個強密碼或者數據庫主密鑰加密私鑰。或者也可以使用CREATE CERTIFICATE語句從一個文件導入證書或私鑰。另外,可以基于已簽名的程序集創建證書。

在證書創建完成之后,可以使用ALTER CERTIFICATE語句修改證書。可以執行的更改包括改變保護四方的方式或從SQL Server中刪除私鑰。只有證書被用于驗證數字簽名時才需要杉樹私鑰。如果公鑰被用來加密數據或對稱密鑰,那私鑰應當可以解密。在創建證書時最好使用BACKUP CERTIFICATE語句備份證書和關聯的私鑰。您可以只備份證書而不歸檔私鑰,使用公鑰來驗證或加密只能用私鑰解密的信息。

一旦證書不需要,可以使用DROP CERTIFICATE語句刪除。如果證書仍然和其他對象關聯,則無法刪除。

  1. --Create the Personnel Data Certificate 
  2. USE AdventureWorks2008; CREATE CERTIFICATE PersonnelDataCert ENCRYPTION BY PASSWORD='HRcertific@te' 
  3. WITH SUBJECT='Personnel Data Encryption Certificate' EXPIRY_DATE='12/31/2011'; GO 
  4.  
  5. --Backup the certificate and private key to the file system 
  6. Use AdventureWorks2008 BACKUP CERTIFICATE PersonnelDataCert TO FILE='c:\certs\Personnel.cert'  
  7. WITH PRIVATE KEY (DECRYPTION BY PASSWORD='HRcertific@te', FILE='c:\certs\Personnelkey.pvk', ENCRYPTION BY PASSWORD='@notherPassword'); GO 
  8.  
  9. --Import the certificate and private key into the TempDB database 
  10. USE tempdb CREATE CERTIFICATE PersonnelDataCert FROM FILE='c"\certs\Personnel.cer' 
  11. WITH PRIVATE KEY (FILE='c:\certs\Personnelkey.pvk', DECRYPTION BY PASSWORD='@notherPassword', ENCRYPTION BY PASSWORD='TempDBKey1'); GO 
  12.  
  13.  
  14. --更改用于加密私鑰的密碼 
  15. USE tempdb ALTER CERTIFICATE PersonnelDataCert 
  16. WITH PRIVATE KEY (ENCRYPTION BY PASSWORD='P@ssw0rd789', DECRYPTION BY PASSWORD='TempDBKey1')  
  17. USE AdventureWorks2008 ALTER CERTIFICATE PersonnelDataCert REMOVE PRIVATE KEY 
  18. GO 
  19.  
  20. USE tempdb DROP CERTIFICATE PersonnelDataCert; GO 

加密數據

并不是每一種數據類型都可以使用EncryptByKey函數加密。有效的數據類型是nvarchar、char、wchar、varchar和nchar。表或視圖中常備查詢的列不應加密,因為解密大量會被一再查詢的數據的過程通常會得不償失。加密數據之前,必須打開將執行加密過程的密鑰。數據通常手對稱密鑰保護,而對稱密鑰又受到非對稱密鑰對保護。如果對稱密鑰手密碼保護,那么對對稱密鑰和密碼有ALTER 權限的用戶都可以打開和關閉對稱密鑰。如果對稱密鑰由一個非對稱密鑰或證書保護,用戶還需要擁有對非對稱密鑰或證書上的CONTROL權限

  1. ALTER TABLE Sales.CreditCard ADD EncryptedCardNumber varbinary(128); GO 
  2.  
  3. OPEN SYMMETRIC KEY SalesKey1 DECRYPTION BY CERTIFICATE SalesCert WITH PASSWORD='P@ssw0rd' 
  4.  
  5. UPDATE Sales.CreditCard SET EncryptedCardNumber=EncryptByKey(Key_GUID('SalesKey1'),CardNumber); GO  CLSE SYMMETRIC KEY SalesKey1; GO 
  6.  
  7. ALTER TABLE Sales.CreditCard ADD DecryptedCardNumber NVARCHAR(25); GO 
  8.  
  9. OPEN SYMMETRIC KEY SalesKey1 DECRYPTION BY CERTIFICATE SalesCert WITH PASSWORD='P@ssw0rd'; GO 
  10.  
  11. UPDATE Sales.CreditCard SET DecryptedCardNumber=DecryptByKey(EncryptedCardNumber); GO 
  12.  
  13. CLOSE SYMMETRIC KEY SalesKey1; GO 
  14.  
  15. Select TOP(10) CreditCardID, CardNumber AS Original, EncryptedCardNumber AS Encrypted, DecryptedCardnumber AS Decrypted FROM Sales.CreditCard; GO 

不過,可以在SELECT語句中至此那個DecryptByKey函數來查看為加密的數據

  1. OPEN SYMMETRIC KEY SalesKey1 DECRYPTION BY CERTIFICATE SalesCert WITH PASSWORD='P@ssw0rd'; GO 
  2.  
  3. SELECT CreditCardID, CardNumber, EncryptedCardNumber AS 'Encrypted Card Number'CONVERT(nvarchar, DecryptByKey(EncryptedCardNumber)) 
  4. AS 'Decrypted Card Number' FROM Sales.CreditCard; GO 
  5.  
  6. CLOSE SYMMETRIC KEY SalesKey1; 

透明數據加密

SQL Server 2008的另一項新工能是透明數據加密(TDE,Transparent Data Encryption)。TDE被設計為針對啟用了TDE的數據庫或事務日志文件,使用數據庫加密密鑰(DEK,Database Encryption Key)執行實時IO加密。TDE的好處是它保護處于休眠狀態的所有數據。這意味著當前未讀入內存的數據都是用DEK保護。不過,當查詢運行時,從查詢檢索的數據將在被讀入內存時解密。與使用對稱和非對稱密鑰解密單個表或列中的數據不同,在讀或寫受TDE保護的數據庫中的表時,不必調用解密函數。

設置TDE比其他加密方法要復雜些,因為在啟用它之前有一些條件必須滿足:首先,master數據庫中必須有一個數據庫主密鑰;其次,必須在master數據庫中創建或安裝一個可用于加密DEK的證書,或者可以使用EKM提供程序的非對稱密鑰;然后,需要在將加密的數據庫中創建DEK,最后,在數據庫中啟用加密。

  1. USE master CREATE MASTER KEY ENCRYPTION BY PASSWORD='MyStrongP@ssw0rd'; GO 
  2. CREATE CERTIFICATE AughtEightTDE WITH SUBJECT='TDE Certificate for the AUGHTEIGHT Server'; GO 
  3. USE AdventureWorks2008 CREATE DATABASE ENCRYPTION KEY WITH ALGORITHM=TRIPLE_DES_3KEY ENCRYPTION BY SERVER CERTIFICATE AughtEightTDE; GO 
  4. ALTER DATABASE AdventureWorks2008 SET ENCRYPTION ON; GO 

數字簽名

數字簽名提供身份驗證和不可否認性。同城,公鑰私鑰對用于對消息進行數字簽名。下面是數字簽名如何和電子郵件消息一起工作的例子。

Bob給Alice發送了一條信息,而他的郵件客戶端被配置為自動為所有發出的消息添加他的數字簽名。在這種情況下,當消息準備好發送時,系統會生成一個密鑰,然后傳遞給一個哈希算法,將數據單向轉換為一個哈希值。哈希值附加在消息上,而用于生成哈希值的密鑰由Bob的私鑰加密。該消息發送給了Alice,她接受明文形式的消息,以及該消息的哈希值版本。Alice具有訪問Bob的公鑰的權限,使用該公鑰解密用來生成哈希值的密鑰。于是該密鑰被傳遞給哈希算法,生成一個新的哈希。如果新的哈希與原來的隨消息一起發送的哈希匹配,Alice可以確信該消息在發送過程中沒有被更改。如果哈希值不匹配,那么說明該消息在發送之后已經被更改,不應被信任。

下面的代碼創建了一個名為Sales.DisplaySomeVendors的簡單存儲過程。然后可以使用前面的SalesCert證書給該存儲過程添加一個簽名。需要解密該西藥來對該存儲過程進行數字簽名:

  1. CREATE PROCEDURE Sales.DisplaySomeVendors AS SELECT TOP (20) * FROM Purchasing.Vendor; GO 
  2. USE AdventureWorks2008; ADD SIGNATURE TO Sales.DisplaySomeVendors BY CERTIFICATE SalesCert WITH PASSWORD='P@ssw0rd'; GO 

最佳實踐

  與其他應用程序和服務器產品一樣,應遵循一些指導原則來幫助提升安全級別。記住,你永遠都不可能為每個可能的威脅做好準備,但是可以讓惡意用戶更難訪問數據

  使用強密碼:應當利用密碼策略,要求用戶創建定期更改的復雜密碼

  不要以sa帳戶登錄:盡量少使用sa帳戶。必須要求用戶使用他們自己的登錄名,從而可以跟蹤那個用戶在執行什么操作。

  對SQL服務使用最小特權帳戶:應用最小特權原則,并使用用有正好滿足服務需要的權限的帳戶

  定期審核主體:勤勉的管理員會知道自己創建哪些帳戶和誰要為這些帳戶負責,并且知道需要采取哪些步驟禁用或刪除多余的帳戶

  禁用或刪除所有不使用的網絡協議:在SQL Server配置管理器中,可以啟用或禁用SQL Server使用的協議。

  使用在線加密保護傳輸中的數據:僅僅保密服務器上的數據是不夠的,應使用諸如SSL和IPSec等技術在數據從客戶端向服務器、從服務器向客戶端或從服務器向服務器移動時保護他們

  不要把SQL Server放在物理安全性低的地方:如果惡意用戶能夠實地訪問您的計算機,那么這臺計算機就相當于別人的了

  最小化服務器的可見度:Slammer蠕蟲病毒可以大量快速傳播是因為很少組織意識到在自己的防火墻中開放SQL連接的害處。設計良好的數據庫應用程序會使用一個健壯而安全的前端,把數據庫引擎的可見度降到最低。

  刪除或禁用不必要的服務和應用程序:應該關掉不使用的服務和功能,從而最小化SQL Server的受攻擊面

  盡可能使用Windows身份驗證:Windows和Kerberos身份驗證本身都比SQL身份驗證更加安全,但這是您和您的應用程序開發人員和安全小組都必須遵守的設計決策

  不要對經常被搜索的列進行加密:加密經常被訪問或搜索的列導致的問題可能比它解決的問題還要多

  使用TDE保護休眠中的數據:加密數據庫和事務日志文件可降低他人復制數據文件并卷走敏感的商業數據的可能性

  總是備份數據加密密鑰:這是顯而易見的,但要確保安全可靠地備份用于加密數據的密鑰或其他加密密鑰。同時測試備份和恢復策略

  了解您在公司安全策略中的角色:大多數組織都有一個備案的安全策略,定義了可接受的網絡使用,以及對服務器或服務行為的期望。作為一名數據庫管理員,配置和保護服務器的職責可能會被備案為總體安全策略的一部分。對數據庫管理員以及服務器的期望必須明確表述。同時,也應清楚貴的管理員的責任。

 

原文鏈接:http://www.cnblogs.com/xupengnannan20070617/archive/2012/08/28/2658718.html

【編輯推薦】

 

【責任編輯:彭凡 TEL:(010)68476606】
責任編輯:彭凡 來源: 博客園
相關推薦

2010-06-03 15:23:48

2013-03-04 09:21:23

SQL Server安全工具

2012-12-28 09:36:08

SQL Server SQL Server安

2011-03-11 14:05:41

2010-11-09 15:50:47

SQL Server安

2010-04-26 10:18:50

2010-04-30 14:32:48

2020-03-25 09:39:54

網絡安全防火墻工具

2010-05-04 16:36:10

虛擬化

2009-06-30 20:44:44

2011-03-29 12:42:25

SQL Server 高效性

2010-07-21 15:57:39

SQL Server網

2010-02-24 13:47:20

2009-04-16 17:34:19

2009-04-16 15:34:35

SQL Server

2012-09-04 13:43:31

SQL Server

2009-11-30 09:41:38

2010-07-02 08:45:40

SQL Server

2010-12-23 14:45:57

SQL Server

2010-04-30 15:58:22

點贊
收藏

51CTO技術棧公眾號

天然素人一区二区视频| 日韩一区免费视频| 一区二区三区网站| 精品国产sm最大网站免费看| 一本大道熟女人妻中文字幕在线 | 妞干网在线播放| 日本午夜在线视频| 国产精品综合在线视频| 91成人免费观看网站| 日韩av毛片在线观看| 国产精品17p| 欧美精品电影在线播放| 女人喷潮完整视频| 青青草原国产在线| 国产精品传媒视频| 久久久久se| 国产黄色片网站| 日本不卡视频一二三区| 性色av一区二区三区红粉影视| 貂蝉被到爽流白浆在线观看| 欧美黄色录像| 日韩欧美中文字幕制服| www亚洲成人| 免费成人直播| 香蕉成人伊视频在线观看| 欧美 另类 交| 成人在线观看av| 亚洲av无码一区二区三区人| 91夜夜蜜桃臀一区二区三区| 欧美日韩精品一区二区三区四区| 欧美精品久久久久久久久久久| 免费人成在线观看播放视频| 国产人久久人人人人爽| 久久久免费看| 神马午夜电影一区二区三区在线观看 | 国产精品一区二区久激情瑜伽 | 国产精品一区二区三区www| 色哟哟亚洲精品| www.浪潮av.com| 2021天堂中文幕一二区在线观| 亚洲视频 欧洲视频| 日韩资源av在线| 国产免费av高清在线| 久久亚区不卡日本| 久久婷婷开心| 男人天堂网在线| 91免费国产视频网站| 国产精品一区视频| 国产91免费在线观看| 国产成人精品亚洲日本在线桃色| 91色p视频在线| 国产特黄一级片| 国产经典欧美精品| 不卡一区二区三区视频| 亚洲免费国产视频| 成人激情动漫在线观看| 国产主播一区二区三区四区| 黄色小视频免费在线观看| 粉嫩久久99精品久久久久久夜 | 国产露脸91国语对白| 国内精品免费在线观看| 91丨九色丨国产| 狠狠人妻久久久久久综合麻豆| 国产iv一区二区三区| 国产精品二区在线| 日本美女一级视频| 97精品国产露脸对白| 玛丽玛丽电影原版免费观看1977 | 嫩草国产精品入口| 亚洲国产日韩一区| 五月天精品视频| 爽成人777777婷婷| 欧美成人国产va精品日本一级| 五月婷婷一区二区| 香蕉国产精品| 久久人人爽国产| 亚洲天堂五月天| 激情综合亚洲精品| 国产一区二区三区高清视频| 完全免费av在线播放| 亚洲精品免费在线观看| 99久久国产综合精品五月天喷水| 自拍偷拍欧美视频| 欧美日韩国产综合一区二区| 91精品人妻一区二区三区蜜桃2| 久久精品66| 日韩在线视频网站| 国产一级片久久| 爽好多水快深点欧美视频| 91精品综合久久久久久五月天| 黄色片一区二区| 国产精品卡一卡二卡三| 无码人妻少妇伦在线电影| 中文字幕日本一区二区| 日韩久久精品一区| 亚洲AV无码成人精品区明星换面 | 99爱视频在线| 亚洲人体在线| 国产婷婷色综合av蜜臀av| 很污很黄的网站| 在线综合欧美| 亚洲综合视频1区| 国产精品视频二区三区| 亚洲午夜在线电影| 一女二男3p波多野结衣| 日韩在线影视| 欧美成人午夜视频| 国产无遮挡又黄又爽又色视频| 国产精品自拍av| 日韩欧美99| 国产在线观看www| 欧美一区二区三区在线观看视频| 久久只有这里有精品| 亚洲国产精品一区制服丝袜| 成人午夜在线视频一区| 国产高清美女一级毛片久久| 亚洲h动漫在线| 在线观看视频在线观看| 成久久久网站| 91av视频导航| wwwav在线播放| 日韩一区欧美一区| www.天天射.com| 亚洲国产国产| 97国产精品视频人人做人人爱| 国产精品爽爽久久久久久| 国产欧美一区二区三区鸳鸯浴| 天堂…中文在线最新版在线| 日韩中文字幕无砖| 久久亚洲电影天堂| 国产精品污视频| 中文字幕一区视频| 五月天av在线播放| 97久久夜色精品国产| 国产精品久久视频| 国产人成在线观看| 在线视频综合导航| 永久免费看mv网站入口78| 亚洲专区欧美专区| 欧美xxxx黑人又粗又长密月| 手机在线观看av| 日韩av在线免费观看| 日韩黄色a级片| 成人精品鲁一区一区二区| av在线com| 韩国女主播一区二区三区| 国内精品免费午夜毛片| 日本高清视频免费观看| 精品电影在线观看| 久久人人爽人人爽人人片| 国产欧美日韩一区二区三区在线| 国产精品露出视频| 色在线中文字幕| 亚洲欧美国产日韩天堂区| 日韩在线播放中文字幕| 国产亚洲一区二区三区四区| 天天爽人人爽夜夜爽| 色综合天天爱| 91精品国产综合久久久久久丝袜| 污网站在线免费看| 亚洲激情久久久| 国产精品久免费的黄网站| 国产欧美一区在线| 久久久精品视频国产| 在线免费观看欧美| 免费看成人片| 国产成人77亚洲精品www| 久久精品小视频| 国产91麻豆视频| 色偷偷88欧美精品久久久| 性猛交娇小69hd| 国内精品伊人久久久久av一坑| 免费拍拍拍网站| 国产99久久| 成人免费福利在线| 高清视频在线观看三级| 一本一本久久a久久精品综合小说| 中文字幕码精品视频网站| 亚洲天堂精品在线观看| 污片免费在线观看| 免费观看在线色综合| 五月天在线免费视频| 久久久久97| 国产精品直播网红| 182在线视频观看| 国产一区二区美女视频| 国产不卡精品视频| 日韩欧美亚洲范冰冰与中字| 极品久久久久久| 久久久一区二区三区捆绑**| 国产精品嫩草影视| 久久不射网站| 草草草视频在线观看| 国产亚洲一卡2卡3卡4卡新区| 亚洲一区二区三区久久| 久久电影tv| 欧美国产日韩一区二区| 国产福利小视频在线| 欧美电影免费提供在线观看| 最近中文字幕在线免费观看| 香蕉久久一区二区不卡无毒影院| 久久成人小视频| 久久尤物电影视频在线观看| 韩国三级hd中文字幕有哪些| 日韩不卡免费视频| 国产v片免费观看| 久久精品青草| 视频一区二区在线观看| 久久久亚洲欧洲日产| 91亚洲精华国产精华| 桃花岛tv亚洲品质| 98视频在线噜噜噜国产| 日本小视频在线免费观看| 国产一区二区三区日韩欧美| 亚洲人午夜射精精品日韩| 精品国产一区久久| 国产精品一区二区人人爽| 色婷婷av一区| 999这里只有精品| 亚洲一区二区三区美女| 欧美a级片免费看| 日本一区二区免费在线| 中文精品在线观看| 成人性生交大片免费| 国产精品探花在线播放| 久久99国产精品尤物| 9久久婷婷国产综合精品性色| 先锋a资源在线看亚洲| 国产一区二区三区小说| 欧美日韩1区| 五月天在线免费视频| 99成人超碰| 亚洲人成网站在线播放2019| 国产永久精品大片wwwapp| 欧美美乳视频网站在线观看| 青青操综合网| 久久精品中文字幕一区二区三区| 国产亚洲成av人片在线观黄桃| av在线不卡观看| 午夜久久av| 99re国产视频| 国产成人av毛片| 国产一区免费在线| 欧美顶级毛片在线播放| 美女被啪啪一区二区| 九热爱视频精品视频| 青青草原成人| 欧美亚洲精品在线| 伊人av成人| 夜间精品视频| 国产欧美久久久久| 亚洲经典在线看| www黄色日本| 日韩精品福利网| 污版视频在线观看| 国产伦精品一区二区三区视频青涩| 秋霞午夜鲁丝一区二区| 成人一级片网址| 成年人网站免费看| 中文字幕巨乱亚洲| 污污的视频在线免费观看| 一区二区三区日韩| 日韩福利片在线观看| 在线观看免费一区| 国产成年妇视频| 精品sm在线观看| 九九热视频在线观看| 日韩一区av在线| 国精产品一区一区三区mba下载| 8050国产精品久久久久久| 素人一区二区三区| 91免费视频网站| 粉嫩的18在线观看极品精品| 麻豆成人在线播放| 五月婷婷六月综合| 激情五月宗合网| 另类小说一区二区三区| 性xxxxxxxxx| 久久久精品影视| 夫妻性生活毛片| 精品久久久久久久久久| 涩涩视频在线观看| 欧美刺激脚交jootjob| 九色视频在线播放| 久久久久久久久久久网站| jk漫画禁漫成人入口| 92国产精品视频| 性欧美lx╳lx╳| 中文字幕第50页| 久久精品日韩欧美| 久久久久亚洲av片无码v| 久久久久88色偷偷免费| 久久免费视频6| 欧美天堂一区二区三区| 天堂网av2014| 久久久国产精品一区| 国内激情视频在线观看| 91天堂在线视频| 国产精品欧美在线观看| 久久久久99精品成人片| 精油按摩中文字幕久久| 精品无码人妻一区| 亚洲综合区在线| 又骚又黄的视频| 国产视频欧美视频| 蜜臀av在线| 成人在线中文字幕| 欧美色就是色| 欧美日韩国产精品激情在线播放| 国产精品一区二区91| 91精品国自产在线| 欧美性xxxx极品hd满灌| 亚洲欧美高清视频| 伦理中文字幕亚洲| 欧美日韩卡一| 日韩欧美在线观看强乱免费| 亚洲黄色高清| 香蕉视频免费网站| 亚洲人一二三区| 亚洲自拍第二页| 亚洲欧洲日本专区| 日本在线高清| 久久亚洲免费| 99亚洲一区二区| 国产乱了高清露脸对白| 亚洲尤物在线视频观看| 国产免费黄色片| 久久久www成人免费精品| 99久久婷婷国产综合精品首页| 欧美日韩在线精品| 国产精品综合| 国产麻豆xxxvideo实拍| 午夜欧美在线一二页| 免费看日韩av| 久久久久久亚洲精品不卡| 97色成人综合网站| 国产传媒久久久| 成人午夜短视频| 国产精品第一页在线观看| 精品国产一区a| 波多野结衣在线播放| 高清视频一区二区三区| 在线看片欧美| 一级特级黄色片| 岛国av一区二区三区| 午夜一区在线观看| 欧美在线视频免费播放| 久久99蜜桃| 天天干天天爽天天射| 国产精品福利影院| 国产精品怡红院| 色综合91久久精品中文字幕| 91精品国产自产在线丝袜啪| 久久99久久久久久| 99国产欧美久久久精品| 一级黄色大片视频| 在线亚洲欧美视频| www999久久| 国产高清av在线播放| 91在线精品秘密一区二区| 免费又黄又爽又猛大片午夜| 最近的2019中文字幕免费一页| 色成人综合网| 性高湖久久久久久久久aaaaa| 成人国产精品免费观看视频| 日韩黄色在线播放| 伊人久久免费视频| 日本成人精品| www.com毛片| 国产精品福利影院| 欧美 日韩 国产 成人 在线| 欧洲成人在线观看| 婷婷中文字幕一区| 在线观看免费视频国产| 色就色 综合激情| 岛国成人毛片| 久久综合一区二区三区| 蓝色福利精品导航| 日韩精品视频播放| 欲色天天网综合久久| ady日本映画久久精品一区二区| 国产淫片av片久久久久久| 1000部国产精品成人观看| 人人妻人人澡人人爽人人欧美一区 | 亚洲片国产一区一级在线观看| 激情久久一区二区| 日韩中字在线观看| 国产精品久久久久一区二区三区| 亚洲爆乳无码一区二区三区| 国产成人中文字幕| 国产综合激情| 女人裸体性做爰全过| 亚洲国产精品中文| 99久热在线精品视频观看| jizzjizz国产精品喷水| 亚洲欧美自拍偷拍色图| 国产日本在线视频| 精品乱色一区二区中文字幕| 狠狠网亚洲精品| 日韩欧美一级大片|