MS SQL Wywołanie procedury z innymi upawnieniami.

0

Witajcie.
Sprawa wygląda tak.
Mam procedurę

CREATE PROCEDURE YYY.PROC_1]
	@ID int = NULL,
	@ODP int OUTPUT
WITH EXECUTE AS 'proces'
AS
BEGIN
....
EXECUTE ZZZ.PROC_2 @ID;
SET @ODP = 1
....
END

Użytkownik "proces" ma pełne uprawnienia do bazy danych.
Użytkownik "user" ma ograniczone prawa do bazy danych (tylko możliwość wykonania procedury YYY.PROC_1).
Procedura ZZZ.PROC_2 wykonuje działania na innych tabelach bazy danych oraz wywołuje inne procedury w bazie.
Wywołanie procedury YYY.PROC_1 z poziomu Management Studio będąc zalogowanym jako "proces" i po zakomentowaniu "WITH EXECUTE AS 'proces'" poprawnie wykonuje procedurę.
Wywołanie procedury YYY.PROC_1 z poziomu Management Studio będąc zalogowanym jako "user" z odkomentowanym "WITH EXECUTE AS 'proces'" powoduje nie wykonanie procedury YYY.PROC_1. Wykonanie zgłasza błąd przy wykonaniu procedury EXECUTE ZZZ.PROC_2 @ID; związany z brakiem uprawnień.
Wygląda to tak jakby procedura ZZZ.PROC_2 była wywołana z uprawnieniami "user" lub jakby instrukcje zawarte w procedurze ZZZ.PROC_2 cofały uprawnienia z "proces" do "user" i z uprawnieniami "user" próbowały wykonać działanie.

Jak mogę rozwiązać powstały problem.

Pozdrawiam i dziękuję za pomoc.

1

To wynika z limitów execute as

  • Applies only to DML statements: SELECT, INSERT, UPDATE, and DELETE.
  • The owners of the calling and the called objects must be the same.
  • Does not apply to dynamic queries inside the module.

https://docs.microsoft.com/en-us/sql/t-sql/statements/execute-as-clause-transact-sql?view=sql-server-ver15#remarks

1 użytkowników online, w tym zalogowanych: 0, gości: 1