Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien
Toon posts:

[SQL Server] Stored procedure met Execute As

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb een stored procedure A in database A:
code:
1
2
3
declare @sql as varchar(255)
set @sql = 'create database testtest'
exec(@sql) as user = 'userWithRights'


userWithRights heeft op de 'master' rechten voor created database.

Als ik bovenstaande stored procedure uitvoer in de 'master' dan maakt hij netjes een database aan.

Als ik deze uitvoer in database A krijg ik de melding:
code:
1
CREATE DATABASE permission denied in database 'master'.


De bedoeling is dat een user zonder rechten, behalve voor het executen van Stored Procedure A via deze stored procedure een database kan aanmaken. Execute As leek me makkelijker dan het werken met certificaten. Ik ben me bewust van de nadelen van execute as.

Ook als ik de user 'userWithRights' sysadmin rechten geef, krijg ik deze fout.

Hoe los ik dit op?

Verwijderd

Topicstarter
Dit heb ik inmiddels opgelost. Via de rechten in SQL heb ik de user rasttool rechten gegeven om de user userWithRights te impersonaten. Nu het volgende:

De user rasttool maakt dus via een SP sp_createNewProject een database aan (in de createNewProject wordt:
code:
1
exec('Create database new project') as login = 'userWithRights'

gedaan, en de userWithRights heeft de rechten in de 'master' om create databases te doen. De database wordt nu aangemaakt voor de user userWithRights. Echter moet de database owner van deze DB worden gewijzigd naar een windows NT account bv NL\pietje.

Hoe geef ik de userWithRights veilige rechten om alleen de sp_changedbowner uit te kunnen voeren van de nieuw gecreerde database zonder daarmee een onveilige situatie te creeren? Of pak ik het helemaal verkeerd aan?