MVA學習筆記:SQL Server 管理入門(三)-安全性
SQL Server安全概論:
- 連結db有兩種方式,一種是windows認證,或是sqlserver本身的認證。
- sql2012之後有自主資料庫,可在資料庫內直接記錄可以登入的帳密。
授權概觀:
- 認證-確認使用者身份
- 授權-賦予主體對安全性實體擁有的權限有什麼。
- 透過GRAND,DENY,REVOKE語法來賦予對物件的權限。
- DENY>GRAND>REVOKE
建立資料庫使用者的方式:
- 透過SSMS內的物件總管
- T-SQL的CREATE USER語法
- CREATE USER STUDENT FOR LOGIN [ADVENTWORKS\STUDENT]
管理DBO和GUEST存取:
- SA登入和SYSADMIN角色的成員會對應到DBO使用者
- SYSADMIN有無限存取的能力,完全無法DENY任何的權限。
- GUEST預設是DISABLE,可以透過GRNAD CONNECT TO GUEST來啟用帳號
為特定資料庫建立使用者:
- 在資料庫等級認證使用者-需要自主資料庫或部份自主資料庫
- 三種型態:
- 以WINDOWS帳戶為基礎的使用者,並未建立登入
- 以WINDOWS群組為基礎的使用者,並未建立登入
- 自主資料庫的使用者並賦予密碼(SQL2012之後功能)
- 處理對應不上的SECURITY IDS
登入和資料庫使用者:
- 都有名稱
- 都有SECURITY IDENTIFIERS 稱為SIDS
- 預設、建立SQL登入時都會賦予新的SID
- 即使帳號相同也會建新的SID
- WINDOWS登入的SID採WINDOWS提供的值
- 將資料庫還原或附加到不同的執行個體後,一般會發生對應不上的問題
- 以CREATE LOGIN語法建立登入時,搭配WITH SID選項, 參照HTTP://support.microsort.com/kb/918992
- 以ALTER USER使用者WITH LOGIN=登入 語法修改資料庫內的使用者採用登入的SID
伺服器範圍的權限
伺服器層級的權限可以透過三種方式賦予
固定伺服器角色-盡量少用
- sysadmin本身不做任何安全檢查 ,即使被deny還是可以做任何的操作。
- public是伺服器內特殊的伺服器角色
- 不被視為固定的伺服器角色,因為可修改他的權限。
- 預設賦予的權限:VIEW ANY DATABASE,對預設端點有CONNECT權限。
使用者定義伺服器角色(2012之後才有,建議使用)
資料庫範圍的權限
With Grant選項
- 被賦予權限的時候搭配可讓被授予者再將該權限授予其他人。
- CASCADE可以用來移除被授予權限者再授予出去的權限。
預存程序安全
- 在呼叫前需要EXECUTE權限
- 修改需要ALTER權限
- 檢視定義需要VIEW DEFINITION權限
- GRAND EXECUTE ON SP TO MAN
使用者自訂函數安全
- 使用純量值函數前需EXECUTE權限
- 使用資料表值函數前需要SELECT權限
- 在CHECK條件約束、DEFAULT值或計算欄位使用,需要REFERENCES權限
Managed Code安全-這段不懂
管理Ownership Chains
ABC三人,1TABLE,2VIEW,2VIEW來源為1TABLE的資料,當B將2VIEW授權給A的時候,A有權限看2VIEW,但無法看1TABLE資料,當1TABLE權限被轉移至C的時候,A連2VIEW的權限也會被拿掉,必需由C再重新授權才行。
安全稽核
- 2008之後新增的功能
- 基於擴充事件的事件追蹤與記錄機制
- 2012企業版有完整功能,其它版本有基本功能(開放SERVER等級)
- 稽核等級分伺服器等級與資料庫等級
設定稽核流程
- 安全性記錄(需賦予SQLSERVER 服務帳戶產生安全性稽核使用者權限
- 建立稽核規格(伺服器或資料庫)
- 啟用稽核和規格(預設停用)
- 檢視記錄
沒有留言:
張貼留言