我有一個數據庫,並根據用戶我想他們使用存儲過程來看到不同的東西。我不希望他們能夠像select一樣執行直接的SQL命令。這可能嗎?我可以將SQL用戶限制爲僅存儲過程嗎?
回答
在過去,我不得不允許訪問一些程序,我會給登錄公共權利和數據庫映射。這將讓他們登錄,但不做任何事情。然後我給每個存儲過程選擇權。我很確定我不必做任何事情。
如果你有大量的存儲過程,那麼本文將幫助你創建這個特定角色/模式。
http://www.patrickkeisler.com/2012/10/grant-execute-permission-on-all-stored.html
我有從其他來源的反饋,SQL注入可能與此解決方案的問題。我可以避免這個問題嗎? –
這是關於執行權。與sql注入無關。這個話題在很多其他地方都有詳細討論,並且關於你如何開發你的存儲過程,而不是你如何賦予它們執行權限。 –
你需要從所有組中刪除該用戶就用GRANT你希望他們有存儲過程。
-- Syntax for SQL Server and Azure SQL Database
-- Simplified syntax for GRANT
GRANT { ALL [ PRIVILEGES ] }
| permission [ (column [ ,...n ]) ] [ ,...n ]
[ ON [ class :: ] securable ] TO principal [ ,...n ]
[ WITH GRANT OPTION ] [ AS principal ]
他爲什麼要將他們從「羣體」中刪除?他可能應該創建一個特定的**角色**。 –
我發現這是刪除所有權利的最快方法。從其他來源,SQL注入也許不是整齊,雖然 –
我已經得到的反饋可能是該解決方案的問題。我可以避免這個問題嗎? –
- 1. SQL Server僅將用戶限制到選定的存儲過程
- 2. 我可以將Google方向API僅限制到iOS應用嗎?
- 3. 如何將sql trace限制爲單個存儲過程?
- 4. 我可以在IntelliJ IDEA中編輯MS SQL存儲過程嗎?
- 5. 我們可以從另一個存儲過程調用存儲過程嗎?
- 6. 我可以只將日期選擇器限制爲僅限3天嗎?
- 7. 我可以將列表傳遞給存儲過程嗎?
- 8. 我可以通過它佔用的內存量限制HashMap嗎?
- 9. 在SQL Server中可以遞歸調用存儲過程嗎?
- 10. Google的地理編碼限制 - 我可以存儲結果嗎?
- 11. 我可以使用休眠條件調用存儲過程嗎?
- 12. MySQL存儲過程:我可以直接用光標更新嗎?
- 13. 我們可以從函數調用存儲過程嗎?
- 14. 我可以使用Azure存儲地理複製作爲源嗎?
- 15. 我可以使用CSP將請求限制爲https:AND'self'嗎?
- 16. 是否可以將API限制爲僅限一個Web界面/應用程序?
- 17. 限制最終用戶使用存儲過程插入數據
- 18. 我們可以使用System.Data.OracleClient將List <>發送到Oracle存儲過程嗎?
- 19. SQL用戶權限 - 執行存儲過程
- 20. 我需要將參數清理到SQL存儲過程嗎?
- 21. 我可以將git存儲庫複製到Windows嗎?
- 22. 任何人都可以加快我的MySQL存儲過程嗎?
- 23. 我可以搜索存儲過程結果嗎?
- 24. 我可以在MS Access 2010中創建存儲過程嗎?
- 25. 我可以從存儲過程返回一個varchar(max)嗎?
- 26. 我們可以在SQL Server 2008的計算列中編寫存儲過程嗎?
- 27. 我可以在SQL存儲過程中分配一個變量嗎?
- 28. SQL Server:我可以在更改存儲過程時設置觸發器嗎?
- 29. 我可以從MS SQL中的事務中排除存儲過程嗎?
- 30. 我可以從SQL Server存儲過程中檢索分層數據結構嗎?
是的,這是可能的。只能授予程序權限。 – jarlh
是的,只授予您希望他們使用的程序的執行權限。 –
之類的東西的權限等都是**高度依賴**在其RDBMS這是出於。請添加一個標籤來指定您是使用'mysql','postgresql','sql-server','oracle'還是'db2' - 或者其他的東西。已添加標籤 –