GRANT، REVOKE و DENY مجوزهای پایگاه داده
زبان کنترل داده ها (DCL) زیر مجموعه ای از زبان پرس و جو ساختار (SQL) است و اجازه می دهد تا مدیران پایگاه داده دسترسی امنیتی به پایگاه های داده رابطه ای را پیکربندی کنند. این مفهوم به زبان تعریف داده (DDL)، که برای اضافه کردن و حذف اشیاء پایگاه داده و زبان DAM استفاده می شود، مورد استفاده برای بازیابی، قرار دادن و تغییر محتویات پایگاه داده است.
DCL ساده ترین زیر مجموعه های SQL است ، زیرا تنها سه دستور دارد: GRANT، REVOKE و DENY. در مجموع، این سه دستور، مدیران را با انعطاف پذیری برای تنظیم و حذف مجوزهای پایگاه داده به شیوه بسیار گرانبها ارائه می دهند.
اضافه کردن مجوز با فرمان GRANT
دستور GRANT توسط مدیران برای افزودن مجوزهای جدید به یک کاربر پایگاه داده استفاده می شود . این یک نحو بسیار ساده است، تعریف شده به شرح زیر است:
GRANT [امتیاز] ON [object] TO [کاربر] [با گزینه گانت]در اینجا از هر پارامتری که می توانید با این فرمان ارائه دهید، خلاص شدن است.
- امتیاز میتواند کلید واژه ALL باشد (برای اعطای طیف گسترده ای از مجوزها) یا یک مجوز خاص یا مجوز پایگاه داده خاص. نمونه هایی از قبیل ایجاد پایگاه داده، انتخاب، INSERT، UPDATE، DELETE، EXECUTE و CREATE VIEW.
- شیء می تواند هر شیء پایگاه داده باشد. گزینه های دسترسی معتبر متفاوت است بر اساس نوع شی پایگاه داده که در این بند وجود دارد. به طور معمول، شی خواهد بود یا یک پایگاه داده، تابع، روش ذخیره شده ، جدول یا نمایش.
- کاربر می تواند هر کاربر پایگاه داده باشد. اگر می خواهید از امنیت پایگاه داده مبتنی بر نقش استفاده کنید، می توانید یک نقش را برای کاربر در این بند جایگزین کنید.
- اگر گزینه انتصاب OPTION GRANT OPTION را در انتهای دستور GRANT درج کنید، نه تنها به کاربران مشخص شده مجوزهای تعریف شده در بیانیه SQL داده می شود بلکه کاربر را نیز قادر به اعطای مجوز مشابه به سایر کاربران پایگاه داده می کند. به همین دلیل، با استفاده از این بند با دقت توجه کنید.
به عنوان مثال، فرض کنید شما میخواهید کاربر Joe توانایی بازیابی اطلاعات را از جدول کارکنان در یک پایگاه داده به نام HR پیدا کند. شما ممکن است از دستور SQL زیر استفاده کنید:
بر اساس HR.employees انتخاب به جوجو حالا توانایی بازیابی اطلاعات را از جدول کارکنان دارد. با این وجود او نمیتواند مجوز سایر کاربران را برای بازیابی اطلاعات از آن جدول به شما اعطا کند، زیرا شما در بند GRANT OPTION OPTION درج نشده است.
لغو دسترسی به پایگاه داده
دستور REVOKE برای حذف دسترسی به پایگاه داده از یک کاربر قبلا چنین دسترسی را اعمال کرده است. نحو این دستور به شرح زیر تعریف شده است:
REVOKE [اختیار دادن برای] [مجوز] ON [object] FROM [user] [CASCADE]در زیر پارامترهای دستور REVOKE خلاصه شده است:
- مجوز دسترسی پایگاه داده را برای حذف از کاربر شناسایی مشخص می کند. این دستور هر دو ادعاهای GRANT و DENY که قبلا برای مجوز مشخص شده است را لغو می کند.
- شیء می تواند هر شیء پایگاه داده باشد. گزینه های دسترسی معتبر متفاوت است بر اساس نوع شی پایگاه داده که در این بند وجود دارد. به طور معمول، شی خواهد بود یا یک پایگاه داده، تابع، روش ذخیره شده، جدول یا نمایش.
- کاربر می تواند هر کاربر پایگاه داده باشد. اگر می خواهید از امنیت پایگاه داده مبتنی بر نقش استفاده کنید، می توانید یک نقش را برای کاربر در این بند جایگزین کنید.
- clause GRANT OPTION FOR حذف توانایی مشخص شده کاربر برای اعطای مجوز مشخص به دیگر کاربران است. توجه : اگر عبارت GRANT OPTION FOR در یک جمله REVOKE را وارد کنید، مجوز اصلی لغو نخواهد شد. این بند فقط توانایی دادن را لغو می کند.
- گزینه CASCADE نیز مجوز مشخص شده از هر کاربری را که کاربر مشخص شده مجوز را مجاز کرده است، لغو می کند.
به عنوان مثال، دستور زیر اجازه دسترسی به جو را در مثال قبلی را لغو می کند:
بازخوانی انتخاب بر HR.employees از جودسترسی به بانک اطلاعاتی منعکس شده
دستور DENY برای صریح جلوگیری از دسترسی کاربر به یک کاربر خاص استفاده می شود. این مفید است که کاربر یک عضو از یک نقش یا گروهی است که مجوز دریافت می شود و شما می خواهید از ایجاد این استثنا برای جلوگیری از این فرد استفاده کنید. نحو این دستور به شرح زیر است:
DENY [مجوز] ON [object] TO [کاربر] پارامترهای دستور DENY همانند آنهایی هستند که برای دستور GRANT استفاده می شوند.
به عنوان مثال، اگر بخواهید اطمینان حاصل کنید که متی هرگز قادر به حذف اطلاعات از جدول کارکنان نیست، دستور زیر را صادر کنید: