簡體   English   中英

ASP.Net Session State SQL 服務器用戶權限

[英]ASP.Net Session State SQL Server user permissions

What are the minimum set of permissions necessary for an ASP.net application to be able to read/write into the standard persisted SQL Server session state database?

我知道這個問題有點老了,但我沒有看到正確的答案。 這是我們為替換內置 ASPState 帳戶而創建的角色授予的內容。 出於安全原因,我們不希望 web 應用程序使用的帳戶擁有.dbo 權限。

GRANT EXECUTE ON dbo.TempReleaseStateItemExclusive TO ASPState_20
GRANT EXECUTE ON dbo.TempInsertUninitializedItem TO ASPState_20
GRANT EXECUTE ON dbo.TempInsertStateItemShort TO ASPState_20
GRANT EXECUTE ON dbo.TempInsertStateItemLong TO ASPState_20
GRANT EXECUTE ON dbo.TempUpdateStateItemShort TO ASPState_20
GRANT EXECUTE ON dbo.TempUpdateStateItemShortNullLong TO ASPState_20
GRANT EXECUTE ON dbo.TempUpdateStateItemLong TO ASPState_20
GRANT EXECUTE ON dbo.TempUpdateStateItemLongNullShort TO ASPState_20
GRANT EXECUTE ON dbo.TempRemoveStateItem TO ASPState_20
GRANT EXECUTE ON dbo.TempResetTimeout TO ASPState_20
GRANT EXECUTE ON dbo.DeleteExpiredSessions TO ASPState_20
GRANT SELECT ON dbo.ASPStateTempSessions TO ASPState_20
GRANT SELECT ON dbo.ASPStateTempApplications TO ASPState_20
GRANT EXECUTE ON dbo.GetMajorVersion TO ASPState_20
GRANT EXECUTE ON dbo.CreateTempTables TO ASPState_20
GRANT EXECUTE ON dbo.TempGetVersion TO ASPState_20
GRANT EXECUTE ON dbo.GetHashCode TO ASPState_20
GRANT EXECUTE ON dbo.TempGetAppID TO ASPState_20
GRANT EXECUTE ON dbo.TempGetStateItem TO ASPState_20
GRANT EXECUTE ON dbo.TempGetStateItem2 TO ASPState_20
GRANT EXECUTE ON dbo.TempGetStateItem3 TO ASPState_20
GRANT EXECUTE ON dbo.TempGetStateItemExclusive TO ASPState_20
GRANT EXECUTE ON dbo.TempGetStateItemExclusive2 TO ASPState_20
GRANT EXECUTE ON dbo.TempGetStateItemExclusive3 TO ASPState_20
GRANT EXECUTE ON TYPE ::dbo.tSessionId TO ASPState_20
GRANT EXECUTE ON TYPE ::dbo.tAppName TO ASPState_20
GRANT EXECUTE ON TYPE ::dbo.tSessionItemShort TO ASPState_20
GRANT EXECUTE ON TYPE ::dbo.tSessionItemLong TO ASPState_20
GRANT EXECUTE ON TYPE ::dbo.tTextPtr TO ASPState_20

這取決於您選擇的是持久表模式還是臨時表模式。 在第一種情況下,它非常簡單:

在持久的情況下,授予對過程的 EXECUTE 權限就足夠了,因為對表的訪問是通過所有權鏈進行的,即如果過程的所有者還擁有由過程訪問的表,則不需要額外的檢查訪問這些表時執行。 在 ASPState 數據庫中,所有對象的所有者也是數據庫所有者,即在運行 Aspnet_regsql 工具時創建 ASPState 數據庫的帳戶。 在非持久模式下,表不駐留在 ASPState 數據庫中,而是位於 tempdb 中,沒有直接所有權鏈,因此必須執行更多步驟:必須建立跨數據庫所有權鏈。

有關詳細信息(關於兩種模式),請參閱http://blogs.msdn.com/b/hanspo/archive/2011/01/10/hardening-an-asp-net-session-state-database.aspx

您只需要 SQLServer 上的數據讀取器/數據寫入器。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM