Beste tweakers,
Ik moet snel SQL 2005 server gaan begrijpen op mijn werk.
("hier is een SQL server doe er wat leuks mee...")
Vooral de security is daarbij belangrijk.
Ik heb nu al heel wat websites, en (e)boeken doorgeworsteld.
Ik wil hieronder beschrijven wat ik geleerd heb, en bij jullie checken of het klopt.
Misschien is dit voor andere tweakers ook intressant.
Beveiliging kan op verschillende manieren.
Allereerst maak je een login aan die op server niveua rechten krijgt.
Als deze alleen een database hoeft te beheren dan is Connect rechten voldoende.
Binnen de database maken we een database user aan.
Binnen de database word alles georganiseerd met schema's.
(Een vorm van namespaces)
Hierin kunnen we allerlei database objecten (zoals tabellen) groeperen.
We kunnen rechten geven via de schema's, maar in de lectuur die ik lees gebeurd dat niet.
Rechten geven we door de properties van de database erbij te pakken en daar bij permissions,
rechten uit te delen. Zie onder voor een plaatje met de mogelijkheden.

Als we een Database Role aanmaken kunnen we exact dezelfde rechten geven,
maar dan aan een groep waar we dan weer Database Users aan kunnen hangen.
Als we een Db role aanmaken of op user niveau rechten uitdelen kunnen we ook op
column niveau rechten uitdelen door een tabel van de database toe te voegen aan de securables.
(dit zijn alleen de References, Select en Update rechten die we uit kunnen delen op column nivea)
Met een schema kunnen we alleen Algemene rechten geven voor de database.
Zoals Delete, Execute enz. Zie onder.

Mijn vragen zijn:
Waarmee geef je rechten, wat is hierin het slimste om te doen.
Ik bedoel, gebruik je uberhaubt Schemas om rechten uit te delen
of kan je dit beter via Database Roles doen en daar users aan hangen.
(Dit denk ik zelf. )
Ik lees overal wel wat er allemaal kan, en hoe je dat moet doen,
maar wat de beste manier is om te doen, kom ik toch niet tegen.
Ik heb o.a. boeken gekocht van www.wrox.com (aanrader)
en heb een aantal videocursussen gedaan. (www.vtc.com)
Dus ik weet nu wel hoe ik dingen moet doen.
Maar wat de beste manier is, heb ik er toch niet uit kunnen halen.
Bij de productie server die we hier draaien met de boekhouding erin,
valt mij op dat alle database objecten van de boekhoudt database, in het standaard dbo schema zitten.
Als ik in cursussen en boeken zie dat die vaak in verschillende schema's georganiseerd worden denk ik dan,
wat is nu de juiste weg om te bewandelen.
Ik kan met:
Zien welke rechten men heeft op een bepaald schema.
Ik kon geen T-SQL statement vinden dat alle rechten op alle objecten in een
database voor een bepaalde gebruiker kon geven.
Wel kan ik met EXECUTE AS even doen alsof ik een andere gebruiker ben en dan kijken wat zijn rechten zijn.
Maar een totaal plaatje van een bepaalde gebruiker heb ik niet kunnen vinden.
Of het moet de knop effective permissions zijn.
Graag jullie iedeën
Ik moet snel SQL 2005 server gaan begrijpen op mijn werk.
("hier is een SQL server doe er wat leuks mee...")
Vooral de security is daarbij belangrijk.
Ik heb nu al heel wat websites, en (e)boeken doorgeworsteld.
Ik wil hieronder beschrijven wat ik geleerd heb, en bij jullie checken of het klopt.
Misschien is dit voor andere tweakers ook intressant.
Beveiliging kan op verschillende manieren.
Allereerst maak je een login aan die op server niveua rechten krijgt.
Als deze alleen een database hoeft te beheren dan is Connect rechten voldoende.
Binnen de database maken we een database user aan.
Binnen de database word alles georganiseerd met schema's.
(Een vorm van namespaces)
Hierin kunnen we allerlei database objecten (zoals tabellen) groeperen.
We kunnen rechten geven via de schema's, maar in de lectuur die ik lees gebeurd dat niet.
Rechten geven we door de properties van de database erbij te pakken en daar bij permissions,
rechten uit te delen. Zie onder voor een plaatje met de mogelijkheden.

Als we een Database Role aanmaken kunnen we exact dezelfde rechten geven,
maar dan aan een groep waar we dan weer Database Users aan kunnen hangen.
Als we een Db role aanmaken of op user niveau rechten uitdelen kunnen we ook op
column niveau rechten uitdelen door een tabel van de database toe te voegen aan de securables.
(dit zijn alleen de References, Select en Update rechten die we uit kunnen delen op column nivea)
Met een schema kunnen we alleen Algemene rechten geven voor de database.
Zoals Delete, Execute enz. Zie onder.

Mijn vragen zijn:
Waarmee geef je rechten, wat is hierin het slimste om te doen.
Ik bedoel, gebruik je uberhaubt Schemas om rechten uit te delen
of kan je dit beter via Database Roles doen en daar users aan hangen.
(Dit denk ik zelf. )
Ik lees overal wel wat er allemaal kan, en hoe je dat moet doen,
maar wat de beste manier is om te doen, kom ik toch niet tegen.
Ik heb o.a. boeken gekocht van www.wrox.com (aanrader)
en heb een aantal videocursussen gedaan. (www.vtc.com)
Dus ik weet nu wel hoe ik dingen moet doen.
Maar wat de beste manier is, heb ik er toch niet uit kunnen halen.
Bij de productie server die we hier draaien met de boekhouding erin,
valt mij op dat alle database objecten van de boekhoudt database, in het standaard dbo schema zitten.
Als ik in cursussen en boeken zie dat die vaak in verschillende schema's georganiseerd worden denk ik dan,
wat is nu de juiste weg om te bewandelen.
Ik kan met:
code:
1
2
| SELECT *
FROM fn_my_permissions('TestSchema', 'SCHEMA') |
Zien welke rechten men heeft op een bepaald schema.
Ik kon geen T-SQL statement vinden dat alle rechten op alle objecten in een
database voor een bepaalde gebruiker kon geven.
Wel kan ik met EXECUTE AS even doen alsof ik een andere gebruiker ben en dan kijken wat zijn rechten zijn.
code:
1
2
3
4
| EXECUTE AS Login = 'Bknight' SELECT * FROM fn_my_permissions(NULL, 'SERVER') REVERT |
Maar een totaal plaatje van een bepaalde gebruiker heb ik niet kunnen vinden.
Of het moet de knop effective permissions zijn.
Graag jullie iedeën
Wil je je pizza in 4 of 8 stukken? .......Doe maar in 4, 8 krijg ik niet op.