[SQL] xp_cmdShell rechten verleend toch permission denied

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Armageddon_2k
  • Registratie: September 2002
  • Laatst online: 18-09 20:12

Armageddon_2k

Trotse eigenaar: Yamaha R6

Topicstarter
Hey mensen,

Ik ben bezig met het aanpassen van een SQL tabel die wordt gevuld door een programma van een andere partij. Als er bepaalde gegevens worden ingevoerd krijg ik een trigger en wil ik een .exe aaroepen.
Dit wordt gedaan via
code:
1
EXEC master..xp_cmdshell

Dit gaat onder mijn master account goed, maar onder ander users niet.

Ik heb flink lopen zoeken en meerdere dingen geprobeerd, maar het lukt me niet om het voor elkaar te krijgen.

- Een xp_cmdshell_proxy_account aangemaakt
- Een stored procedure, met vanuit daar de xp_cmdshell aanroepen.
- Grant Execute op die stored procedure voor de gebruikers die dit moeten kunnen.
- Handmatig een proxy account aangemaakt.
- Execute as <user>

Het gaat om een sql 2005 server.
Wie weet hoe ik dit moet aanpakken? (bij voorkeur zonder alles users Execute te granten voor xp_cmdshell)

Acties:
  • 0 Henk 'm!

  • Niemand_Anders
  • Registratie: Juli 2006
  • Laatst online: 09-07-2024

Niemand_Anders

Dat was ik niet..

xp_* stored procedures zijn (terrecht) alleen uit te voeren door gebruikers met System Administrating rechten.

Je zou eventueel wel een ClrTrigger (in .NET beter bekend als SqlTrigger) kunnen schrijven welke via bijvoorbeeld WCF een service benaderd en dat de service een programma aanroept. Ook ClrTriggers hebben beperkte rechten, maar kunnen wel door de meeste database users worden aangeroepen.

Triggers welke buiten SqlServer zaken regelen hebben in de regel vaak wel een negatieve invloed op de performance. Ook wordt het (later) overstappen naar een andere database erg lastig vanwege de lock-in. Echter met deze lock-in is niets mis, als je hier een wel overwogen keuze voor maakt..

If it isn't broken, fix it until it is..


Acties:
  • 0 Henk 'm!

  • Armageddon_2k
  • Registratie: September 2002
  • Laatst online: 18-09 20:12

Armageddon_2k

Trotse eigenaar: Yamaha R6

Topicstarter
*Kick

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Heb dan op z'n minst effe het fatsoen te reageren op de reactie die je wél hebt gekregen :/

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • Armageddon_2k
  • Registratie: September 2002
  • Laatst online: 18-09 20:12

Armageddon_2k

Trotse eigenaar: Yamaha R6

Topicstarter
RobIII schreef op dinsdag 27 juli 2010 @ 11:36:
[...]

Heb dan op z'n minst effe het fatsoen te reageren op de reactie die je wél hebt gekregen :/
Sorry niet gezien ik zag "1 reacties", dacht dat dat mn start post was. Ik zal even reageren, my bad.
Niemand_Anders schreef op donderdag 22 juli 2010 @ 16:31:
xp_* stored procedures zijn (terrecht) alleen uit te voeren door gebruikers met System Administrating rechten.
Jah helemaal logisch, maar dat neemt niet weg dat ik het wel wil kunnen :P En inderaad het liefst via een StoredProcedure zodat de aanroep van de xp_* vast staat. Dan kan het programma maar op 1 manier worden uitgevoerd.
Je zou eventueel wel een ClrTrigger (in .NET beter bekend als SqlTrigger) kunnen schrijven welke via bijvoorbeeld WCF een service benaderd en dat de service een programma aanroept. Ook ClrTriggers hebben beperkte rechten, maar kunnen wel door de meeste database users worden aangeroepen.
Ik zal hier eens induiken, moet alleen wel zeggen dat ik de methode wel lichtjes omslachtig vind.
Een service maken, WCF aanroep bouwen, dan in sql nog voor elkaar krijgen dat deze WCF kan aanroepen, en dan die WCF weer mijn exe laten aanroepen.

Onveilig of niet, is er een manier om wel via een Stored Procedure de xp_* aan te roepen?

[ Voor 64% gewijzigd door Armageddon_2k op 27-07-2010 12:21 ]