it-swarm-eu.dev

Jak udělíte oprávnění k provedení jedné uložené procedury?

Normálně při vytváření uložené procedury používám následující jako šablonu řazení

Create procedure <procedurename>
<@param1 <type>, @param2 <type>, etc..> 
as begin

 <procedure>

end

Existuje způsob, jak zahrnout udělení oprávnění ke spuštění pouze té uložené proceduře, když jsem u toho?
Například jako ...

Grant execute [User_Execute] 

... ale pouze pro tuto uloženou proceduru?

Viděl jsem nějaké další podobné otázky, ale zdá se, že všechny odkazují na VŠECHNY uložené procedury a ne pouze na jednu, ani jsem neviděl tu, kde můžete určit oprávnění uvnitř create procedure skript. Vítány by byly i odpovědi na to, jak mohu nastavit oprávnění bez GUI pro konkrétní uložené procedury.

Upravit Nejlepší odpověď mi určitě ukázala správným směrem, to je v podstatě to, co jsem hledal, nemyslel jsem na dávkování příkazů, což je to, co jsem nakonec udělal, dávkování příkazů spolu s uloženou procedurou. Každopádně si myslím, že je to docela hladké.

Create procedure <procedurename>
<@param1 <type>, @param2 <type>, etc..> 
as begin

<procedure>

end
GO
GRANT EXECUTE ON <procedurename> to <username>
GO
43
DaneEdw
GRANT EXECUTE ON dbo.procname TO username;
69
Levi W

zkrátit tabulku Nastavení oprávnění k objektům, jako jsou uložené procedury, lze provést pomocí:

GRANT EXECUTE ON <schema>.<object> to <user>;

Můžete však také chtít udělit bezpečnostní práva na úrovni přihlášení i uživatele. Budete chtít určit a udělit POUZE nezbytná práva pro objekty, které vyžadují přístup (např. Provedení). Zvažte použití funkce EXECUTE AS, Která umožňuje zosobnění jiného uživatele, aby ověřil oprávnění, která jsou vyžadována ke spuštění kódu, aniž by museli udělit všechna potřebná práva všem podkladovým objektům (např. Tabulkám). EXECUTE AS Lze přidat k uloženým procedurám, funkcím, spouštěčům atd.

V rámci uložené procedury přidejte do kódu takto:

CREATE PROCEDURE dbo.MyProcedure WITH EXECUTE AS OWNER

V tomto případě se vydáváte za vlastníka volaného modulu. Můžete také zosobnit SELF, OR uživatel, který vytvoří nebo změní modul NEBO ... imperonuje CALLER, který umožní modulu převzít oprávnění aktuálního uživatele, NEBO ... zosobnit OWNER, který bude převzít svolení vlastníka postupu, který se nazývá NEBO ... vydávat se za „uživatelské_jméno“, což bude vydávat za konkrétního uživatele NEBO ... vydávat za „přihlašovací jméno“ pomocí bude vydávat za konkrétní přihlášení.

Většinu času budete muset pouze udělit EXECUTE práva uloženým proc a poté jsou práva udělena všem objektům, na které se odkazuje v uloženém proc.

Tímto způsobem NEMÁTE nutnost implicitních práv (příklad: aktualizace dat nebo volání dalších proců). Řetězení vlastnictví to zvládne za vás. To je užitečné zejména pro dynamické sql nebo pokud potřebujete vytvořit zvýšené bezpečnostní úkoly, jako je CREATE TABLE. EXECUTE AS Je užitečný nástroj, který je třeba zvážit.

Tento příklad může pomoci vše objasnit:

Vytvořte uživatele s názvem NoPrivUser s veřejným přístupem k databázi (např. Dbadb):

USE [master];
GO 
CREATE LOGIN [NoPrivUser] WITH PASSWORD=N'ABC5%', DEFAULT_DATABASE=[dbadb], 
  CHECK_EXPIRATION=ON, CHECK_POLICY=ON;
GO 
USE [DBAdb];
GO 
CREATE USER [NoPrivUser] FOR LOGIN [NoPrivUser];
GO

POZNÁMKA: CREATOR OR VLASTNÍK TOHOTO POSTUPU VYŽADUJE VYTVOŘENÍ PRÁV TABULKY v cílové databázi.

use DBAdb 
go 
CREATE PROCEDURE dbo.MyProcedure 
WITH EXECUTE AS OWNER 

truncate table MyTable

GO
GRANT EXEC ON dbo.MyProcedure TO NoPrivUser; 
GO
-- Now log into your database server as NoPrivUser and run the following.

S klauzulí EXECUTE AS Je uložená procedura spuštěna v kontextu vlastníka objektu. Tento kód úspěšně vytvoří dbo.MyTable A řádky jsou úspěšně vloženy. V tomto příkladu nemá uživatel NoPrivUser absolutně žádná udělená práva upravovat tabulku nebo číst nebo upravovat některá data v této tabulce.

Přebírá pouze práva potřebná k dokončení tohoto konkrétního úkolu kódovaného V rámci tohoto postupu.

Tato metoda vytváření uložených procedur, které mohou provádět úkoly vyžadující zvýšená bezpečnostní práva bez trvalého přiřazení těchto práv, je velmi užitečná.

10
Richard Ouimet

enter image description here

vyberte přihlášení do databáze -> Přejít na Zabezpečitelné a klikněte na tlačítko Hledat jako na předchozím obrázku. Po kliknutí na tlačítko Hledat najdete následující okno pro přidání typu objektu.

Klikněte na tlačítko Typy objektů a zobrazí se okno „Vybrat typy objektů“ s různými objekty. Nyní vidíte, uložená procedura je uvedena v oblasti typů objektů. Nyní vybereme naši konkrétní uloženou proceduru, ke které chceme poskytnout povolení.

5
arnav