הרשאות צפיה בטבלאות מערכת

16/01/2011

אין תגובות

הרשאה לעיין בטבלאות המערכת או באובייקטים כדוגמת פרוצדורות ו-Views ניתנת על ידי View Definition.

ניצור Login ו-User ב-tempdb, ופרוצדורה סתמית לצורך ההדגמה:

Use tempdb;

Go

 

Create Login MyLogin With Password='1234',Check_Policy=Off;

Go

 

Create User MyUser For Login MyLogin;

Go

 

Create Proc MyProc As Select GetDate() Taarih;

Go

כעת ננסה לעיין בטבלת המערכת sys.objects ולקבל את ההגדרה של הפרוצדורה MyProc הנ"ל בתור אדמיניסטרטורים:

Select * From sys.objects;

Go

 

Exec SP_HelpText 'MyProc';

Go

clip_image002

ננסה כעת לבצע זאת בתור המשתמש החדש MyUser:

Execute As User='MyUser';

Go

 

Select * From sys.objects;

Go

 

Exec SP_HelpText 'MyProc';

Go

 

Revert;

Go

clip_image004

השליפה מטבלת המערכת לא החזירה שורות,

והנסיון לקבל את ההגדרה של הפרוצדורה גרם להודעת שגיאה.

הרשאה מתאימה לראות את ההגדרה של הפרוצדורה ניתן לתת (ולבדוק שהיא פועלת) כך:

Grant View Definition On MyProc To MyUser;

Go

 

Execute As User='MyUser';

Go

 

Exec SP_HelpText 'MyProc';

Go

 

Revert;

Go

clip_image006

הרשאה כללית לעיין בכל האובייקטים וההגדרות ניתן לתת כך (גם כאן בשילוב עם בדיקה):

Grant View Definition TO MyUser;

Go

 

Execute As User='MyUser';

Go

 

Select * From sys.objects;

Go

 

Revert;

Go

clip_image008

לסיום- נבטל את ההרשאות המיוחדות שנתנו ל-MyUser:

Revoke View Definition To MyUser;

Revoke View Definition On MyProc To MyUser;

Go

כדאי לשים לב ש-Revoke שונה מ-Deny בכך שאינה מונעת הרשאות אלא מבטלת הרשאות שניתנו קודם באמצעות פקודת Grant; כלומר- מבטלת הרשאות שניתנו במפורש/במישרין (Explicitly) ולא במרומז/בעקיפין (Implicitly).

הוסף תגובה
facebook linkedin twitter email

כתיבת תגובה

האימייל לא יוצג באתר. שדות החובה מסומנים *