1、2上次回家作業解答上次回家作業解答lQ1:在資料庫鏡像中,鏡像伺服器可否用在資料庫鏡像中,鏡像伺服器可否用來擔任報表的資料來源?來擔任報表的資料來源?需搭配資料庫快照需搭配資料庫快照3大綱大綱l帳號密碼安全性原則帳號密碼安全性原則l使用者與結構定義分開使用者與結構定義分開l不同權限檢視不同的中繼資料不同權限檢視不同的中繼資料lExecution ContextlSQL InjectionlReplication安全性設定安全性設定lAgent、Database Mail安全性設定安全性設定4大綱大綱續續lApplication Role安全設定安全設定l利用利用 Stored Procrdur
2、e、View增進安全增進安全lAudit審核的機制審核的機制l利用利用 DDL Trigger審核審核 SQL事件事件lSQL Server自訂帳號對應到自訂帳號對應到 Windows帳帳號號l支援憑證的對稱,非對稱加密支援憑證的對稱,非對稱加密l預設關閉各選項功能預設關閉各選項功能l限制限制.NET程式碼執行程式碼執行5帳號密碼安全性原則帳號密碼安全性原則Principals伺服器角色SQL Server 登入帳戶Windows 群組網域使用者帳戶本機使用者帳戶User資料庫角色Application RoleGroupSQL ServerDatabaseWindowsFilesRegist
3、ry KeysCREATEALTERDROPCONTROLCONNECTSELECTEXECUTEUPDATEDELETEINSERTTAKE OWNERSHIPVIEW DEFINITIONBACKUP權限(Permissions)可賦予存取權限的物件(Securables)GRANT/REVOKE/DENYACL伺服器Schema資料庫6l驗證驗證(authentication)檢查是否為正確的使用者檢查是否為正確的使用者有有 Windows驗證與驗證與 SQL驗證驗證安全性的基本安全性的基本72驗證驗證(authentication)lWindows驗證驗證需要有需要有 Windows帳
4、號或帳號或 AD帳號帳號SQL Server要允許登入要允許登入(Grant)適用在區域網路適用在區域網路8設定帳號密碼的設定帳號密碼的 policylSQL 驗證的密碼可設定驗證的密碼可設定 policySQL Server 2005新增功能新增功能需搭配需搭配 Windows 2003 Server9Demol利用利用 Create指令建立登入帳號指令建立登入帳號l設定設定 SQL驗證的驗證的 policy102授權授權(authorization)l給予權力給予權力可設定在可設定在 login帳號與帳號與 database user11管理權限管理權限l如何管理如何管理 Server的權
5、限的權限l如何管理如何管理 Server-Scope 的權限的權限l如何管理如何管理 Database的權限的權限l如何管理如何管理 Database-Scope的權限的權限l如何管理如何管理 Schema-Scope的權限的權限12如何管理如何管理 Server的權限的權限USE masterGRANT ALTER ANY DATABASE TO SERVERXBill在在 Object Explorer連接伺服器連接伺服器1按按登入帳號登入帳號右鍵選擇屬性右鍵選擇屬性2Securables頁面,選擇頁面,選擇 Add Objects3增加增加 4指定權限指定權限513如何管理如何管理Ser
6、ver-Scope權限權限lServer-scope 安全安全HTTP endpointsCertificatesUSE masterGRANT CONNECTON HTTP ENDPOINT:AWWebServiceTO SERVERXBill14USE AdventureWorksGRANT ALTER ANY USERTO Ted在在 Object Explorer連接伺服器連接伺服器1按資料庫右鍵選擇屬性按資料庫右鍵選擇屬性2Permissions分頁分頁3指定權限指定權限4如何管理如何管理 Database權限權限15如何管理如何管理Database-Scope 權限權限USE Ad
7、ventureWorksGRANT SELECTON SCHEMA:salesTO Ted在在 Object Explorer連接伺服器連接伺服器1展開物件展開物件2按物件右鍵選擇屬性按物件右鍵選擇屬性3Permissions分頁分頁4指定權限指定權限516如何管理如何管理Schema-Scope 權限權限USE AdventureWorksGRANT EXECUTEON TYPE:addressTypeTO Ted在在 Object Explorer連接伺服器連接伺服器1展開物件展開物件2按物件右鍵選擇屬性按物件右鍵選擇屬性3Permissions分頁分頁4指定權限指定權限5USE Adve
8、ntureWorksGRANT SELECTON sales.ordersTO Ted17Demol授權給授權給 login id,讓它可以登入,讓它可以登入 SQL Serverl授權給資料庫使用者,讓它對授權給資料庫使用者,讓它對 create table有權力有權力(設定設定database權力權力)18使用者與使用者與 Schema 的分離的分離lSQL Server 2000只有只有 dbo.object名稱名稱不支援不支援Schema Server.database.dbo.object19用來解決物件使用的問題用來解決物件使用的問題Owned By20刪除使用者刪除使用者=應用程
9、式重寫應用程式重寫21解決方法解決方法Schema與與 User分離分離22可以利用可以利用 Default Schema解解決問題決問題contained inOwned by23Demol設定設定 schemal設定設定 default schemal利用利用 schema完成資料存取完成資料存取24不同權限檢視不同的中繼資料不同權限檢視不同的中繼資料l查詢靜態的中繼資料查詢靜態的中繼資料ViewsSystem Views目錄目錄SELECT*FROM sys.tables25Demol不同權限檢視的不同權限檢視的 Metadata也有所不同也有所不同SELECT*FROM sys.tab
10、les26CREATE PROCEDURE GetOrdersWITH EXECUTE AS CALLERASSELECT*FROM sales.ordersExecution Context 與與 Broken Ownership ChainingSELF呼叫者呼叫者AllenExecution context 身分身分OwnerRose資料庫物件資料庫物件擁有者擁有者 Adonis預存程序或自訂函數預存程序或自訂函數建立者建立者 JohnSELECT*FROM sales.orders27lView裡面的裡面的 table,ownerlname不同,權限設定會不同,權限設定會l發生問題發生
11、問題l範例範例:中斷中斷 Ownership ChainsGRANT SELECT ON view2 TO TomSELECT*FROM maria.view2maria.view2lucia.view1lucia.table128 Execution Context29Execution Context的使用的使用lExecute AS CALLER若若 schema名稱不同,檢查呼叫者有無權力名稱不同,檢查呼叫者有無權力預設的設定,與預設的設定,與 SQL Server 2000相似相似30DemolExecution Context的使用的使用SQL Injection減少減少檢查所有使
12、用者的資料輸入檢查所有使用者的資料輸入抓取系統的錯誤訊息抓取系統的錯誤訊息使用參數化的查詢與預存程序使用參數化的查詢與預存程序 32Replication安全性設定安全性設定l選擇適當的驗證模式選擇適當的驗證模式Windows驗證優於驗證優於 Mixed驗證驗證33DemolReplication的的 agent安全性設定安全性設定34Agent、Database Mail安全性設定安全性設定l必要時才打開必要時才打開 Database maill可使用可使用 Private Database mail profilel限制夾帶檔案大小及副檔名限制夾帶檔案大小及副檔名35Demol設定設定 D
13、atabase Mail36Application Role安全設定安全設定l允許使用者只能用某支應用程式讀取資料允許使用者只能用某支應用程式讀取資料l新增新增sp_unsetapprole功能功能OrderID CustomerID EmployeeID102481024910250VINETTOMSPHANAR312.Microsoft Excel自訂應用程式自訂應用程式37Demol利用利用 Application Role維護安全性維護安全性38Audit審核的機制審核的機制l決定哪些事件需要審核決定哪些事件需要審核l審核資訊存放哪裡?審核資訊存放哪裡?l審核對效能的影響審核對效能的影
14、響l誰要負責分析審核事件資訊?誰要負責分析審核事件資訊?39利用利用 DDL Trigger審核審核SQL事件事件CREATE TRIGGER ddl_trig_login ON ALL SERVER FOR DDL_LOGIN_EVENTS AS PRINT Login Event Issued.評估是否評估是否 DDL triggers是適合作為審核是適合作為審核決定觸發程序的範圍決定觸發程序的範圍 決定哪些事件需要審核決定哪些事件需要審核 指定哪些操作是被允許的指定哪些操作是被允許的 40DDL TriggersNamesDDL_logDDL_TriggerDatabaseCREATE
15、TRIGGER DDL_Trigger ON DATABASEAFTER DROP_TABLE AS INSERT INTO DDL_log VALUES(資料表被移除資料表被移除)DROP TABLE NamesTable Dropped41Demol利用利用 DDL Trigger審核審核SQL事件事件42SQL Agent Proxiesl存取外部資源時使用存取外部資源時使用l可多個可多個 SQL 帳號對應帳號對應 Windows帳號帳號43SQL Agent Proxies44Demol設定設定 SQL帳號對應帳號對應 Windows帳號帳號45HTTP EndpointsSQL Se
16、rver 2005HTTP EndpointStored ProcedureFunctionClient PC.NET ApplicationConsumes Web ServicesCREATE ENDPOINT46資料加密資料加密l設定在設定在 client端端l伺服器需要伺服器需要certificatel需要為需要為 self-signed certificate 做做額外的組態額外的組態l設定在設定在 Server等級等級l適用在所有通訊協定適用在所有通訊協定l使用使用 self-signed certificate47資料庫等級的加密資料庫等級的加密l分享同一把分享同一把 publi
17、c keyl速度快速度快l不用來做簽章不用來做簽章l獨立的獨立的 keyl速度較對稱來的慢速度較對稱來的慢l可用來做數位簽章可用來做數位簽章l包含憑證授權包含憑證授權l驗證加密鑰匙驗證加密鑰匙l用來做數位簽章用來做數位簽章48Certificatesl預設為信任預設為信任l較昂貴較昂貴l網際網路應用程式網際網路應用程式lWindows Server CAl預設為不信任預設為不信任l網際網路應用程式網際網路應用程式l內建內建(利用利用 Create CERTIFICATE指指令令)lServer-requested encryptionlClient 也需要組態也需要組態4950Demol設定資
18、料表欄位對稱加密設定資料表欄位對稱加密l設定資料表欄位非對稱加密設定資料表欄位非對稱加密51Surface Area Configuration全新安裝SQL Server 2005SQL Server 2000SQL Server 2005服務關閉,一些功能預設沒有開啟一些功能預設隨著升級而啟動Surface Area Configuration 設定服務與連線Surface Area Configuration 功能SAC out NY-SQL-02.out S NY-SQL-02 I MSSQLSERVER使用使用 SAC.EXENY-SQL-02NY-SQL-01SAC in NY-S
19、QL-02.out S NY-SQL-0153Demol執行執行C:Program FilesMicrosoft SQL Server90Shared目錄下目錄下lSAC out output.out 54限制限制.NET程式碼執行程式碼執行l有必要時才允許有必要時才允許 CLR的程式的程式lSafe限制使用,只限於內部資料限制使用,只限於內部資料55Demol限制限制.NET程式碼的執行程式碼的執行56結論結論l安全需要多做一些設定才能達到安全需要多做一些設定才能達到l愈安全,對使用者愈不方便愈安全,對使用者愈不方便lSQL 2005預設將所有安全選項都關閉預設將所有安全選項都關閉57回家作業回家作業lQ1:在在 SQL Server 2005的環境中,何為的環境中,何為Principals?lQ2:試自行比較對稱與非對稱式加密的不試自行比較對稱與非對稱式加密的不同?同?58回家作業解答回家作業解答lQ1:在在 SQL Server 2005的環境中,何為的環境中,何為Principals?Windows群組、網域使用者帳戶、本機使用群組、網域使用者帳戶、本機使用者帳戶、者帳戶、SQL登入帳戶、伺服器角色、資料庫登入帳戶、伺服器角色、資料庫角色、角色、Application role都是都是 principals