SQL Server 安全篇——資料層面安全性(3)——模擬(Impersonation)
模擬是指在不同安全主體的上下文下執行T-SQL語句或程式碼模組的做法。用來最小化許可權授予和授予許可權的使用者數,但是不影響執行時提升到所需的許可權。實際上,在會話或模組的執行期間,模擬起到了使用者或登入名切換的過程。也可以不嚴謹地認為,發起模擬的使用者A借用B的身份執行了B有許可權但A沒許可權做的事。
在SQL Server中,可以使用EXECUTE AS子句來實現模擬功能。EXECUTE AS可以位於儲存過、函式、DML觸發器的頭部。也可以用於會話過程切換安全上下文。下表是EXECUTE AS可用場景:
用處 | 上下文規範(Context Specification) |
Session(會話) |
|
儲存過程、函式、DML觸發器 |
|
庫級別DDL觸發器 |
|
伺服器級別DDL觸發器 |
|
Queues(佇列) |
|
上下文規範(Context Specification)說明
- CALLER:意味著程式碼執行在原始上下文,是除佇列之外的預設行為。
- SELF:程式碼在建立或最後更改模組的主體的上下文下執行。
- OWNER:程式碼執行在安全主體的擁有者上下文。
- USER:以資料庫特定使用者執行程式碼。
- LOGIN:以特定登入名來執行程式碼。
然後在演示庫建立一個使用者,關聯這個登入名:USE master GO CREATE LOGIN George WITH PASSWORD='強密碼', DEFAULT_DATABASE=master, CHECK_EXPIRATION=OFF, CHECK_POLICY=ON ; GO
USE AdventureWorks2016
GO
CREATE USER George FOR LOGIN George
然後呼叫不帶引數的SUSER_SNAME()函式返回當前安全上下文的登入名(注意這裡不能是“組”或者“絕色”,必須是單一賬號):結果如圖:USE AdventureWorks2016 GO --以當前上下文執行 SELECT SUSER_SNAME() ; --轉換當前上下文為George使用者 EXECUTE AS USER = 'George' ; --再次查詢 SELECT SUSER_NAME() ;
第一個查詢執行在我自己的登入名的安全上下文中,當執行完EXECUTE AS語句之後,上下文切換成George,但是注意除非你關掉這個介面,不然需要使用REVERT命令來恢復上下文,否則將一直以George的上下文來執行。
準確來說,在下面情況發生之前,切換後的上下文一直有效:
- 執行另一個Execute AS語句
- 執行REVERT語句
- 刪除會話(比如SSMS關閉查詢視窗)
- 儲存過程或觸發器中的命令執行了退出操作。
最佳實踐:
首先當然還是要維持最低所需許可權。比如只需要DB級別的就不要給Server級別的許可權。當需要在一個過程中切換多次登入時(不建議),要保持原始登入的識別,以免後續忘記切回去,這個原始登入可以通過ORIGINAL_LOGIN函式來獲取。相關推薦
SQL Server 安全篇——資料層面安全性(1)——架構
在安全性主體層級之下,SQL Server 為保護資料提供了一組豐富的功能。本章將介紹架構、所有權連結和繼承。本文集中介紹架構(Schema)。 正文: 如果學過程式語言特別是JAVA、C
SQL Server 安全篇——資料層面安全性(3)——模擬(Impersonation)
模擬是指在不同安全主體的上下文下執行T-SQL語句或程式碼模組的做法。用來最小化許可權授予和授予許可權的使用者數,但是不影響執行時提升到所需的許可權。實際上,在會話或模組的執行期間,模擬起
SQL Server 安全篇——資料層面安全性(2)——所有權連結( Ownership Chaining)
Ownership Chaining SQL Server 2016提供了一種叫行級安全性(row-level security,RLS)的功能,但是這種功能是比較有限制的,標準的方式是使用檢視或儲存過程來限制資料返回。並且通過對檢視或儲存過程的授權,可以使得使用
SQL Server 安全篇——服務賬號安全性(3)——服務賬號的威脅與對策
在安全領域中,“攻”“防”一直在持續著,並且很不幸,攻擊者永遠處於主動地位,一切防禦方案都是基於已經發生的攻擊來制定的,但是深入理解原理,不僅可以快速應對攻擊,也能從中推測出一些可能的衍生攻擊方案並作出提前防禦。 本文將集中在服務帳號上的攻擊介紹。曾經看過一部外國電影,名字早忘了,但是有一句話一直記在腦海裡(
SQL Server 安全篇——安全元資料(5)——元資料自身安全性
隨著元資料的使用頻率越來越高,安全性也越來越凸顯,因為從元資料中可以得到很多不應該隨意暴露的系統資訊。所以,絕大部分的元資料並不能隨意被檢視,通常都需要授權。 比如當一個使用者A被授權查詢B表,那麼這個使用者A就自動獲得了在sys.tables和sys.obje
SQL Server 安全篇——SQL Server 安全模型(3)——資料庫級別安全性
在資料庫層面,以授權到安全主體來實現安全性。 相對於伺服器級別,資料庫級別稱為資料庫使用者和資料庫角色。 使用者: 通常情況下,資料庫使用者是從例項層面建立的登入名來實現。相同例項下,一
SQL Server 安全篇——安全元資料(3)——稽核元資料
稽核除了應對使用者行為之外,還能進行“稽核稽核”以避免別人對自己的懷疑。比如一個惡意的 DBA關閉了稽核, 然後執行的是一個危險的行為, 則該操作本身將不會被稽核, 但 由於DBA已經關閉了審計,
SQL Server 安全篇——降低外圍威脅(1)——網路配置
前面大篇幅介紹了SQL Server及作業系統的安全,現在是時候介紹一下外圍主要是網路層面的安全。這部分主要包括網路功能、服務和端點。因為絕大部分的攻擊都來自於網路,所以網路層的安全控制某種意義上可以說是最外層的防禦。本文先介紹一下網路方面的配置。網路配置 在介
SQL Server 安全篇——SQL Server 稽核(1)——概覽
在中提到過,安全分為主動安全和被動安全,前面關於賬號許可權的算主動安全,那麼被動安全指的是記錄使用者活動以避免不可抵賴性威脅。這個很重要,因為如果攻擊是由特權使用者發起,那麼基本上是很難阻止。
SQL Server 安全篇——SQL Server加密(1)——加密概念
加密是一種使用金鑰和證書的演算法來混淆資料的過程。如果沒有金鑰和證書,即使得到了資料,也無法得知資料的本來面貌,資料就沒有價值了。但是由於加解密本身就是一種非常耗資源(特別是CPU跟I/O )的計算操作,同時加密後的資料本質上會增大,所以也往往會帶來效能的下降。所以一
python入門23 pymssql模組(python連線sql server增刪改資料 )
增刪改資料必須connect.commit()才會生效 回滾函式 connect.rollback() 連線資料庫 ''' dinghanhua sql server增刪改 ''' import pymssql server = '192.168.1.1' user
SQL Server 2008 表資料改變後傳送訊息(.net 擴充套件函式法【穩定】【簡潔】)
一直以來應用程式中資料的 PUSH/PULL 應用效果,是作為實時系統的關鍵點。市面上面各種ESB,要麼價格不菲,要麼相當龐大,入門都夠很長時間。有人說還有說訊息伺服器MSMQ,ActiveMQ(這個比較推薦,客戶端語言支援較為豐富),JSM 等還有WebSo
SQL Server SSIS 參考資料
鏈接 鏈接服務器 sql server 參考 選項 wan archive html 1. 如何在 SQL Server 中創建鏈接服務器 http://www.cnblogs.com/spring_wang/p/5409394.html 2. 如何安裝 SSIS 開發工具
SQL Server橫向擴展:設計,實現與維護(2)- 分布式分區視圖
做的 img attach one 遠程 cnblogs ole out 不同的 為了使得朋友們對分布式分區視圖有個概念,也為了方便後面的內容展開,我們先看看下面一個圖: 講述分布式分區視圖之前,很有必要將之與我們常常熟悉的分區表和索引
通過ASP.NET MVC框架 + 原生JavaScript + Ajax + SQL SERVER 實現一個簡單的有論壇功能的網站(有通過iis發布的例子)
簡單的 接下來 發送 思維 學會 control javascrip 數據庫 今天 ASP.NET MVC. M 為Model模型層, V 為View視圖層, C 為Controller控制層。要想使用MVC框架來寫網站就需要了解M V C 的作用分別為哪些。給大家簡單
SQL Server 百萬級資料提高查詢速度的方法
1.應儘量避免在 where 子句中使用!=或<>操作符,否則將引擎放棄使用索引而進行全表掃描。 2.對查詢進行優化,應儘量避免全表掃描,首先應考慮在 where 及 order by 涉及的列上建立索引。 3.應儘量避免在 where 子句中對欄位進行 null 值判斷,否則將導致引擎
(轉)SQLServer_十步優化SQL Server中的資料訪問四
原文地址:http://tech.it168.com/a2009/1125/814/000000814758_all.shtml 第八步:使用SQL事件探查器和效能監控工具有效地診斷效能問題 在SQL Ser
(轉)SQLServer_十步優化SQL Server中的資料訪問五
第九步:合理組織資料庫檔案組和檔案 建立SQL Server資料庫時,資料庫伺服器會自動在檔案系統上建立一系列的檔案,之後建立的每一個數據庫物件實際上都是儲存在這些檔案中的。SQL Server有下面三種檔案: 1).mdf檔案 這是最主要的資料檔案,每個資料庫只能有一個
SQL Server返回插入資料的ID和受影響的行數
首先看看資料庫裡面的資料(S_Id為自增長標識列): sql server 中返回上一次插入資料的ID(標識值)有三種方式: 第一種 @@IDENTITY: 1 insert into Student(S_StuNo,S_Name,S_Sex,S_Height) 2 values('013',
SQL Server CDC變更資料捕獲
SQL Server中記錄資料變更的四個方法:觸發器、Output子句、變更資料捕獲(Change Data Capture )功能、同步更改跟蹤。 這裡記錄下cdc: 變更資料捕獲可記錄應用於 SQL Server 表的插入、更新和刪除活動。 對資料庫中的某張表啟用變更資料捕獲,例子: