Un utente del database A deve avere accesso solo a dati specifici. Questi dati sono attualmente forniti da una vista B.VIEW1 selezionando dalle tabelle di proprietà dello schema B e C.Una stored procedure con EXECUTE AS OWNER è una sostituzione valida per una vista che seleziona dalle tabelle dello schema terzo?
CREATE VIEW [B].[VIEW1] AS SELECT * FROM [B].[VIEW2], [C].[VIEW1]
Dal C.VIEW1 non è di proprietà B, Ownership Chains applicano.
Ciò significa che anche se Un è concesso SELEZIONA autorizzazione per B.VIEW1, non può scegliere.
SELECT permission denied on object 'C.VIEW1', database '...', schema '...'.
è una stored procedure B.PROC1 con EXECUTE AS OWNER Clause un sostituto valido per B.VIEW1 in termini di sicurezza?
CREATE PROC [B.PROC1] WITH EXECUTE AS OWNER AS BEGIN SELECT * FROM [B.VIEW2], [C].[VIEW1] END
Oppure ci sono effetti collaterali negativi che potrebbero portare a problemi di sicurezza?
Le discussioni di fronte a questa domanda: [SQL Server: come il permesso schemi?] (Http://stackoverflow.com/questions/6509525/sql-server-2008-schema-separation-and-permissions?rq=1), [Separazione dello schema SQL Server 2008 e autorizzazioni] (http://stackoverflow.com/questions/6509525/ sql-server-2008-schema-separation-and-permissions? rq = 1), [Gestione delle autorizzazioni con stored procedure in SQL Server] (http://msdn.microsoft.com/en-us/library/bb669058.aspx) – Mike