שפת בקרת נתונים (DCL) עבור הרשאות מסד נתונים

ה שפת בקרת נתונים היא תת-קבוצה של שפת השאילתות המובנית. מנהלי מסדי נתונים משתמשים ב-DCL כדי להגדיר גישת אבטחה למסדי נתונים יחסיים. זה משלים את שפת הגדרת נתונים, אשר מוסיפה ומוחקת אובייקטי מסד נתונים, וה- שפת מניפולציה של נתונים, אשר מאחזר, מוסיף ומשנה את התוכן של מסד נתונים.

DCL הוא הפשוט ביותר מבין קבוצות המשנה של SQL, מכיוון שהוא מורכב משלוש פקודות בלבד: GRANT, REVOKE ו-DENY. יחד, שלוש הפקודות הללו מספקות למנהלי מערכת את הגמישות להגדיר ולהסיר הרשאות מסד נתונים בצורה מפורטת.

הוספת הרשאות עם הפקודה GRANT

הפקודה GRANT מוסיפה הרשאות חדשות למשתמש במסד נתונים. יש לו תחביר פשוט מאוד, המוגדר כדלקמן:

הענק [הרשאה]
מופעל [אובייקט]
למשתמש]
[עם אפשרות מענק]

להלן התקציר על כל אחד מהפרמטרים שאתה יכול לספק בפקודה זו:

  • זְכוּת - יכולה להיות מילת המפתח ALL (כדי להעניק מגוון רחב של הרשאות) או הרשאה ספציפית למסד נתונים או קבוצת הרשאות. דוגמאות כוללות CREATE DATABASE, SELECT, INSERT, UPDATE, DELETE, EXECUTE ו-CREATE VIEW.
  • לְהִתְנַגֵד - יכול להיות כל אובייקט של מסד נתונים. אפשרויות ההרשאות התקפות משתנות בהתאם לסוג אובייקט מסד הנתונים שאתה כולל בסעיף זה. בדרך כלל, האובייקט יהיה מסד נתונים, פונקציה,
    נוהל מאוחסן, שולחן או נוף.
  • מִשׁתַמֵשׁ - יכול להיות כל משתמש במסד נתונים. אתה יכול גם להחליף תפקיד עבור המשתמש בסעיף זה אם ברצונך לעשות שימוש באבטחת מסד נתונים מבוססת תפקידים.
  • אם אתה כולל את האופציונלי עם אפשרות מענק סעיף בסוף הפקודה GRANT, אתה לא רק מעניק למשתמש שצוין את ההרשאות מוגדר בהצהרת SQL, אלא גם לתת למשתמש הרשאה להמשיך להעניק את אותם הרשאות ל אַחֵר משתמשי מסד נתונים. מסיבה זו, השתמש בסעיף זה בזהירות.

לדוגמה, נניח שאתה רוצה להעניק למשתמש ג'ו היכולת לאחזר מידע מה עוֹבֵד שולחן ב-a מאגר מידע שקוראים לו משאבי אנוש. השתמש בפקודת SQL הבאה:

הענק בחירה
ON HR.עובדי
אל ג'ו.

ג'ו יכול לאחזר מידע מטבלת העובדים. עם זאת, הוא לא יוכל להעניק למשתמשים אחרים הרשאה לאחזר מידע מאותה טבלה מכיוון שסקריפט DCL לא כלל את סעיף WITH GRANT OPTION.

ביטול גישה למסד נתונים

הפקודה REVOKE מסירה גישה למסד הנתונים ממשתמש שקיבל בעבר גישה כזו. התחביר עבור פקודה זו מוגדר כדלקמן:

בטל את [הענקת אפשרות עבור] [הרשאה]
מופעל [אובייקט]
FROM [משתמש]
[אֶשֶׁד]

להלן התקציר על הפרמטרים של הפקודה REVOKE:

  • רְשׁוּת - מציין את הרשאות מסד הנתונים להסרה מהמשתמש המזוהה. הפקודה מבטלת את הצהרות GRANT ו-DENY שנעשו בעבר עבור ההרשאה שזוהתה.
  • לְהִתְנַגֵד - יכול להיות כל אובייקט של מסד נתונים. אפשרויות ההרשאות התקפות משתנות בהתאם לסוג אובייקט מסד הנתונים שאתה כולל בסעיף זה. בדרך כלל, האובייקט יהיה מסד נתונים, פונקציה, פרוצדורה מאוחסנת, טבלה או תצוגה.
  • מִשׁתַמֵשׁ - יכול להיות כל משתמש במסד נתונים. אתה יכול גם להחליף תפקיד עבור המשתמש בסעיף זה אם ברצונך לעשות שימוש באבטחת מסד נתונים מבוססת תפקידים.
  • ה מתן אפשרות עבור סעיף מסיר את היכולת של המשתמש שצוין להעניק את ההרשאה שצוינה למשתמשים אחרים. אם אתה כולל את מתן אפשרות עבור סעיף בהצהרת REVOKE, ההרשאה הראשית אינה מבוטלת. סעיף זה מבטל רק את יכולת ההענקה.
  • ה אֶשֶׁד האפשרות גם מבטלת את ההרשאה שצוינה מכל המשתמשים שהמשתמש שצוין העניק להם את ההרשאה.

הפקודה הבאה מבטלת את ההרשאה שניתנה לג'ו בדוגמה הקודמת:

בטל את הבחירה
ON HR.עובדי
מג'ו.

מניעת גישה מפורשות למסד נתונים

הפקודה DENY מונעת באופן מפורש ממשתמש לקבל הרשאה מסוימת. תכונה זו מועילה כאשר משתמש הוא חבר בתפקיד או קבוצה שקיבלו הרשאה, וברצונך למנוע מאותו משתמש בודד לרשת את ההרשאה על ידי יצירת חריגה. התחביר עבור פקודה זו הוא כדלקמן:

דחה [רשות]
מופעל [אובייקט]
למשתמש]

הפרמטרים של הפקודה DENY זהים לאלה המשמשים עבור הפקודה GRANT. לדוגמה, אם רצית להבטיח שמתיו לעולם לא יקבל את היכולת למחוק מידע מטבלת העובדים, הפק את הפקודה הבאה:

דחה מחיקה
ON HR.עובדי
אל מתיו.