Autorisations d'user ASP.Net Session State SQL Server

Quel est l'set minimal d'permissions nécessaires pour qu'une application ASP.net puisse lire / écrire dans la database d'état de session SQL Server persistante standard?

Je sais que cette question est un peu ancienne, mais je n'ai pas vu une réponse correcte. Voici ce que nous avons accordé au rôle que nous avons créé pour replace le count embedded ASPState. Nous ne souhaitons pas que le count utilisé par nos applications Web ait l'autorisation .dbo pour des raisons de security.

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 

Cela dépend si vous avez choisi le mode table persistante ou temporaire. Dans le premier cas, c'est assez simple:

Dans le cas persistant, il suffit d'accorder des droits EXECUTE sur les procédures, car l'access aux tables fonctionne au moyen d'une string de propriété, à savoir si le propriétaire d'une procédure possède également les tables accessibles par les procédures, en cours d'exécution lors de l'access à ces tables. Dans la database ASPState, le propriétaire de tous les objects est également le propriétaire de la database, c'est-à-dire le count qui a créé la database ASPState lors de l'exécution de l'outil Aspnet_regsql. Dans le mode non persistant, où les tables ne résident pas dans la database ASPState mais se trouvent dans tempdb, il n'y a pas de string de propriété directe et donc une étape supplémentaire doit être effectuée: une string de propriété cross-database doit être établie.

Voir http://blogs.msdn.com/b/hanspo/archive/2011/01/10/hardening-an-asp-net-session-state-database.aspx pour plus de détails (sur les deux modes).

Vous avez seulement besoin de datareader / datawriter sur SQLServer.