2010-09-15 70 views
1

我想給單個SQL實例上的各種數據庫中的某些數據授予我們的母公司。他們不需要Web服務,而是需要一個存儲過程,它可以編譯來自不同數據源的數據並返回記錄集。sql 2005 - 限制通過存儲過程訪問的策略

有我們的兩個領域,他們對我們的域名,我只會給所需的權限SQL對象(存儲過程)

我計劃創造條件,有一個「一體化」的數據庫之間,本質上是一種信託所需的存儲過程。

雖然集成數據庫本身沒有任何表,但至少現在,我確實希望鎖定數據庫,以便不存在諸如母公司能夠在數據庫上創建表或影響許可等漏洞。

什麼是建議的方法來鎖定我的'集成'數據庫,使母公司只有權訪問運行我明確授予的存儲過程。

作爲一個SQL DBA,我做了一個很好的.net程序員,也就是從我所理解的需要用戶的命令,如GRANT EXECUTE ON [procedure] TO [user]授予所選存儲過程的權限,但除此之外我不清楚實現我需要的明確策略。

我想確保我不在安全漏洞中。

如果有人可以建議我需要採取的步驟,即我需要運行什麼命令來實現我想要的,或者指向我一篇好文章,我將不勝感激。

我已經在數據庫上運行REVOKE CONNECT FROM GUEST命令。

回答

1

什麼是建議的方法來鎖定我的'集成'數據庫,使母公司只有權訪問運行我明確給予權限的存儲過程。

  1. 從母公司的用戶
  2. 只給EXECUTE爲特定存儲過程(一個或多個)
  3. 授予角色db_datareader角色的角色創建角色明確 - 這將使當然,他們不能創建表格等
+0

也請注意[跨數據庫鏈接](http://www.mssqltips.com/tip.asp?tip=1782) – 2010-09-15 00:55:03

+0

好的,所以我有明確地將角色放在db_datareader中否則他們會從公共角色繼承某種級別的權限? – SleepyBoBos 2010-09-15 01:05:19

+0

@SleepyBoBos:我最近做了這樣的設置,但不記得了,所以我爲了以防萬一。 – 2010-09-15 01:25:41