Normaalisti kun luon tallennetun menettelyn, käytän seuraavaa lajittelumallina

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

Onko mahdollista sisällyttää suoritusoikeuden myöntäminen vain kyseiselle tallennetulle menettelylle, kun olen siinä?
Esimerkiksi kuten …

Grant execute [User_Execute] 

… mutta vain tälle tallennetulle menettelylle?

Olen nähnyt joitain muita vastaavia kysymyksiä, mutta ne kaikki näyttävät viittaavan KAIKKIIN tallennettuihin toimintoihin eikä vain yhteen, enkä ole nähnyt sellaista, missä voit määrittää käyttöoikeudet komentosarjan create procedure sisällä. Jopa vastaukset siitä, kuinka voin määrittää käyttöoikeudet ilman GUI: tä tietyille tallennetuille menettelyille, ovat tervetulleita.

Muokkaa Ylin vastaus osoitti minut varmasti oikeaan suuntaan, tämä on pohjimmiltaan mitä Etsin, en ajatellut komentojen jakamista, minkä päädyin tekemään, erittämällä komennon yhdessä tallennettujen menettelyjen kanssa. Joka tapauksessa mielestäni se on melko liukas.

Create procedure <procedurename> <@param1 <type>, @param2 <type>, etc..> as begin <procedure> end GO GRANT EXECUTE ON <procedurename> to <username> GO 

Kommentit

  • Muokatussa tekstissä annettu koodi on kelvollinen ja oikea vastaus tähän kysymykseen.

Vastaa

GRANT EXECUTE ON dbo.procname TO username; 

Vastaa

katkaise taulukko Lupien asettaminen kohteille, kuten tallennetuille menettelyille, voidaan suorittaa seuraavasti:

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

Voit kuitenkin haluta myöntää suojausoikeudet myös osoitteessa sekä kirjautumis- että käyttäjätasolla. Haluat määrittää ja myöntää VAIN tarvittavat oikeudet kohteille, jotka tarvitsevat pääsyn (kuten suorittaminen). Harkitse EXECUTE AS -ominaisuuden käyttöä, joka sallii toisena henkilönä esiintymisen toisena henkilönä validoidakseen koodin suorittamiseen tarvittavat käyttöoikeudet ILMAN tarvitsematta myöntää kaikkia tarvittavia oikeuksia kaikille taustalla oleville kohteille (esim. taulukot). EXECUTE AS voidaan lisätä tallennettuihin toimintoihin, toimintoihin, laukaisimiin jne.

Lisää koodiin seuraavasti suoraan tallennetun menettelyn sisällä:

CREATE PROCEDURE dbo.MyProcedure WITH EXECUTE AS OWNER 

Tässä tapauksessa esiintyy jäljiteltävän moduulin omistajana. Voit myös esiintyä itsenäisenä TAI käyttäjänä, joka luo tai muuttaa moduulia TAI … pakottaa CALLERia, mikä mahdollistaa moduulin ottavan vastaan nykyisen käyttäjän oikeudet, TAI … esiintyä OMISTAJAKSI, joka ottaa vastaan käyttäjän luvan menettelyn omistaja kutsutaan TAI … esiintyy ”käyttäjänimi”, joka esiintyy tietyksi käyttäjänä. TAI … esiintyy ”kirjautumisnimi”, jolla esiintyy tietty kirjautumistunnus.

Suurimman osan ajasta, Sinun tarvitsee vain myöntää EXECUTE oikeudet tallennettuihin proci-tiedostoihin ja sitten oikeudet myönnetään kaikille objekteille, joihin viitataan tallennetussa procissa.

Tällä tavalla sinun ei tarvitse anna implisiittisiä oikeuksia (esimerkki: päivittää tietoja tai kutsua ylimääräisiä prosesseja). Omistusketju hoitaa tämän sinulle. Tämä on erityisen hyödyllistä dynaamisen sql: n yhteydessä tai jos sinun on luotava korkeammat suojaustehtävät, kuten CREATE TABLE. EXECUTE AS on kätevä työkalu näiden huomioimiseksi.

Tämä esimerkki voi auttaa selventämään tätä kaikkea:

Luo NoPrivUser-niminen käyttäjä julkinen pääsy tietokantaan (esim. 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 

HUOMAUTUS: TÄNNEN MENETTELYN LUOTTAJA TAI OMISTAJA VAADII LUOVA TAULUKON OIKEUKSIA kohdetietokannassa.

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. 

Lausekkeella EXECUTE AS tallennettu menettely suoritetaan objektin omistajan yhteydessä. Tämä koodi luo onnistuneesti dbo.MyTable ja rivit lisätään. Tässä esimerkissä käyttäjällä NoPrivUser ei ole mitään oikeuksia muokata taulukkoa tai lukea tai muokata mitään tämän taulukon tietoja.

Se vie vain tämän menettelyn yhteydessä koodatun tehtävän suorittamiseen tarvittavista oikeuksista.

Tämä tapa luoda tallennettuja menettelyjä, jotka voivat suorittaa korotettuja suojausoikeuksia edellyttäviä tehtäviä määrittämättä kyseisiä oikeuksia pysyvästi, on hyödyllinen.

Kommentit

Vastaa

kirjoita kuvan kuvaus tähän

valitse tietokannan sisäänkirjautuminen -> Siirry suojattuun ja napsauta Haku-painiketta kuten edellisessä kuvassa. Napsauttamalla Haku-painiketta löydät seuraavan ikkunan lisätäksesi objektityypin.

Napsauta Objektityypit-painiketta ja saat Valitse objektityypit -ikkunan, jossa on useita objekteja. Jos näet, tallennettu menettely on lueteltu kohdetyyppialueella. Nyt valitsemme tietyn tallennetun menettelyn, jolle haluamme antaa luvan.

Kommentit

  • Ensinnäkin kysymys oli yli viisi vuotta vanha, kun vastait siihen. Se olisi hieno, paitsi että OP pyysi nimenomaan ratkaisuja, jotka eivät ' käytä graafista käyttöliittymää ja jotka voidaan upottaa komentosarjaan. Vastauksessasi ei puututa siihen.

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *