
Employee_Get שמחזירה את שם העובד, כולל שילוב של שם פרטי ושם משפחה בעמודה אחת. עמודת משכורת נשארת מוסתרת.Web עם סיסמה. אפשר להשבית את מדיניות הסיסמאות של Active Directory עבורו.GRANT EXECUTE ON Employee_Get TO WebWITH GRANT לא מומלצת, כי היא נותנת גם את הזכות להעביר את ההרשאה הלאה.DENY חוסם הרשאה במפורש, גם אם הרשאה אחרת קיימת.הטקסט המלא של הדקות הראשונות בהרצאה «הרשאות על Stored Procedure» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
שלום וברוכים הבאים להרצאה על הרשאות למשתמשים, על פרוצדורות, שבכלל על הרשאות ליוזרים. הרצאה מאוד מאוד מעניינת. אנחנו ניצור עכשיו יוזר וניתן לו הרשאות ונבין מה המשמעות של הדברים.
אוקיי, בואו נתחיל מזה שנעשה איזושהי פרוצדורה קטנה, שזה תכלס ככה עושים את זה. לדוגמה, אני אקרא לה employee get.
תראה לי את כל העובדים, אוקיי? אני יכול לעשות לה פרמטרים, שהיא תקבל איזשהו ID ורק איזשהו עובד ספציפי תראה לי. כרגע אני לא רוצה להתעסק בזה.
אני רוצה רק לעשות שתראה לי employees, נניח כוכבית. בואו נראה. employees, בואו נראה.
יש לנו employees. עכשיו בואו נוסיף פה איזושהי עמודה סודית. נניח שאנחנו רוצים להחביא אותה. אנחנו לא רוצים את כל העמודות, אנחנו רוצים רק first name ו-last name.
בסדר גמור, נעשה first name, פלוס, נעשה את זה כאילו שזאת עמודה אחת, נדביק את שתי העמודות ביחד, last name, אוקיי? ונניח אנחנו רוצים, אתם יודעים מה?
וגם טייטום. טייטום אנחנו רוצים בנפרד, כי לפעמים צריך אותו, לפעמים לא צריך אותו. בואו נראה מה נוצר לנו, שתי עמודות נוצרו לנו.
כל זה עמודה אחת, תיק עמודה שנייה. לא יפה לי בעין שאין לי פה שם, אין לי פה שם, אז בואו ניתן לו אז פול ניים עם רווח ואז מה קורה?
אוה, יוצא לנו מאוד מאוד יפה. פול ניים וטייטר. יפה מאוד, אני עושה את הפרוצדורה הזאת, יש לי פרוצדורה. עכשיו שימו לב, אני לא רוצה לתת ליוזר מסוים לגשת לכל הטבלה של אימפלואיז.
למה? כי באימפלואיז יש לי עמודה סודית. תחשבו שיש לי פה בדיזיין עמודה חדשה שנקראת סלרי, והיא סודית.
אני רוצה לתת להם רק לגשת לשתי העמודות האלו. אני לא רוצה לתת להם הרשאות לראות את כל העמודות, כי יש לי פה עמודה סודית של משכורות, כן?
מי שמדאיג אותו שיש פה עמודה ריקה, צאת סלרי שווה 6,000 דולר, אוקיי? בבקשה, יופי. אז הנה, אין לנו עכשיו עמודה ריקה, עשינו סלקט ויש לנו פה עמודה עם ששת אלפים, יפה.
ולכן אני רוצה לתת להם רק לראות, רק את המידע הזה לראות, אוקיי? רק את המידע הזה לראות, זה הדבר היחיד שאני רוצה לאפשר ליוזר חדש. אז בואו נעשה יוזר חדש, אנחנו הולכים לשרת שלי, יש פה דאטאבייסים, אנחנו הולכים לסיקיוריטי, עושים יוזר חדש, לוגין חדש לשרת, לכל ה-SQL.
שימו לב, היוזרים יכולים להיות מתוך הווינדוס, מתוך הכתיב דירקטורי, או להתנהל ברמת SQL. נניח נקרא לו User Website, זה אתר ובסייט, ואז אם מישהו יפרוץ לי לאתר, הוא יקבל גישה כאילו הוא אתר אינטרנט, כי הוא הצליח לפרוץ, אבל עדיין ל-SQL ולגנוב לי את הנתונים הוא
לא יצליח. נניח שזה אתר ווב שמראה רק חלק מהנתונים שמראה האפליקציה הפנימית החזקה שלי. פה אני נותן איזושהי סיסמה, אני אומר לו שלא צריך פוליסה לסיסמה כמו באקטיב דירקטורי.
אני אומר לו שבריאת מרדל ילך לנורטווינד. ברמת שרת אני לא נותן לו הרשאות. ברגע שאתם נותנים הרשאות ברמת שרת, כמו לדוגמה סיס אדמין, אם אתם נותנים לו תווי הזה, אז הוא יקבל גישה לכל הדאטאבייסים שיש בשרת.
ממש אני לא רוצה לתת ליוזר של ווב את כל הגישה לכל הזה. זה למעשה להיות אדמיניסטרטור על כל השרת. אני לא רוצה לתת, כי אני בונה יוזר ל-Web.
Public זה אומר שבכלל מותר לו להיכנס לשרת, לא יותר מזה, אז אני נותן לו להיכנס. עכשיו, גם יש בתוך כל דאטאבייס הרשאות. אז אני אומר לו, תקשיב, בנורטווינד אני מרשה לך להיות Public.
זה אומר להיכנס פנימה, אבל לא לראות כלום, רק להיכנס. אני יכול לתת לו להיות דאטאבייס אונר, ואז הוא יכול לעשות שם מה שהוא רוצה. אני לא מוכן לתת לו את זה.
אני נותן לו רק להיכנס. נתתי לו רק להיכנס. אני לא רוצה לתת לו לקרוא את הנתונים, נותן לו רק להיכנס. אז יש לי עכשיו וב.
ברגע שעשיתי את זה, אתם יכולים לראות פה בנורטווינד, שיש לנו, בנורטווינד אנחנו יכולים ללכת ולראות בסיקיוריטי שלו, שיש לנו יוזר וב.
אתם רואים, זה יוזר וב, ואם אנחנו נעשה עליו דאבל קליק, אנחנו נראה שהוא, איפה הוא חבר, אנחנו רואים שהוא לא חבר בשום מקום.
אתם רואים, הוא לא חבר בשום מקום, אין לו שום הרשאות והכל מצוין. אז זה ברמה כללית, אין לו שום הרשאות כרגע. אז יש לוגין ויש יוזר ברמת דאטאבייס ספציפי. עכשיו אני הולך ל-Stored Procedures.
איפה ה-Stored Procedures שעשינו איתכם ביחד הזה? אתם רואים, אנחנו יכולים לקרוא אותה. אנחנו יכולים לקרוא אותה, לשנות אותה, לראות איך היא כתובה.
אנחנו באים ל-Stored Procedure הזאת, עושים פרופרטיז עליה, הולכים ל-Permissions ואומרים שיוזר בשם Web, יוזר בשם Web, על האובייקט Employee-Get, שימו לב, אנחנו ברמת האובייקט הבודד, אנחנו ברמת Employee-Get, User-Web, יש להרשאה רק לעשות Execute.
מותר לו רק להריץ אותה. אפילו אסור לו לראות את ה-Definition שלה, איך היא מוגדרת, את הקוד שלה. הוא לא יכול לראות איך היא בנויה מבפנים. הוא יכול רק לעשות לה Execute.
גרנט זה אומר שזה מה שמותר לו. דיני זה אומר שאסור לו, כן? אם אין כלום, אז גם ככה אסור לו. דיני זה איסור מפורש.
WithGrant אומר שמותר לו להריץ אותה וגם מותר לו לחלק את ההרשאה הזאת ליוזרים אחרים. אני אף פעם לא נותן WithGrant, כל מי שרוצה הרשאות שיבוא אליי, אוקיי? אז אני נותן לו רק Grant.
יופי, אנחנו עם יוזר ווב. שימו לב מה קורה עכשיו. עכשיו אנחנו מחוברים תחת יוני, אתם רואים? תחת היוזר שלי. אנחנו באים ומתחברים עוד פעם לדאטאבייס, הפעם עם SQL תחת ווב.
עושים קונקט, מתחברים. מי שזה לא יתחבר לו צריך ללכת לשרת מי שזה לא יתחבר לו וללכת לסיקיוריטי של השרת ולראות שפה יש לו שמותר או לעשות אותטיקציה ברמת שרת ל-SQL יוזרס לא רק ל-Windows יוזרס גם ל-SQL יוזרס אחרי שאתם משנים את זה אם אין לכם את זה אם אתם משנים את זה אחרי שאתם שיניתם את
זה אתם צריכים לעשות פה ריסטארט לסרוויס ריסטארט לסרוויס של SQL כדי שההגדרה תיכנס לתוקף זה למעשה מה שזה עושה,