Skip to main content

تعریف کاربر و یوزر جدید در سطح Database

Database-level users

در این درس تخصصی، فرآیند ایجاد یک Database-level User در SQL Server به‌صورت گام به گام در SQL Server Management Studio توضیح داده می‌شود؛ در این آموزش، یک کاربر به نام TestUser با اتصال به یک Instance-level Login (TestLogin) ایجاد شده و از طریق تنظیم Membership به آن نقش‌های db_datareader و db_denydatawriter اختصاص می‌یابد تا دسترسی دقیق به خواندن اطلاعات فراهم و امکان ویرایش یا حذف داده‌ها مسدود شود. این فرآیند با جزئیات فنی و کاربردی ارائه شده و مفاهیم اصلی مدیریت دسترسی‌های پایگاه داده برای متخصصان بازار کار را به شکلی جامع و عملی به تصویر می‌کشد، که در ویدیوی آموزشی همراه با این ایندکس به صورت کامل تدریس خواهد شد.

لینک کمکی (official link) – آموزش ایجاد Database-Level Users در SQL Server: مدیریت دسترسی‌ها و نقش‌ها برای امنیت بیشتر

در ویدئوی آموزشی قبلی، ما یک لاگینی در سطح instance ایجاد کردیم. حالا میخوام در سطح پایگاه داده، یک کاربر یا user ایجاد کنم و اون کاربر یا user رو به سطح instance لاگینم اتصال بدم؛ بذارید یکم حرفه ای تر بگم: در ویدئوی قبلی من یک Instance-level logins ایجاد کردم و الان میخام یک Database-level users ایجاد کنم و این کاربری که با استفاده از Database-level users ایجاد میکنم رو میخام به Instance-level logins أم که در درس قبلی با نام testlogin تعریفش کردم، متصل کنم. بنابراین، برای انجام این کار، اینجا درManagement Studio، من میخوام ساختار درختی AdventureWorks 2014 رو باز کنم.

در پایینترین ایتم یعنی، Security، میخوام اون رو با کلیک روی این علامت به اضافه باز کنم و سپس من  Usersرو به همین طریق باز میکنم و ما یک لیستی از کاربران موجود یا همون users هامون میبینیم. من روی users کلیک راست میکنم و روی new user میرم و روش کلیک می کنم و اون یک صفحه محاوره ای رو برای ایجاد کاربر جدید بهم نشون میده و ایجاد میکنه.

در اینجا برای user name، من فقط تنها کاری که میکنم این هست که اون رو با TestUser نامگذاری میکنم و اون باید به login name با نام TestLogin که قبلا در ویدئوی آموزشی قبلی ایجاد کردیم، متصل بشه. در تب Owned Schemas، یک لیستی از همه طرحای در دسترس وجود داره و الان اونا رو در این پانل سمت راست می بینید. بنظر من هیچ دلیلی که بخایم این اکانت رو با هر کدوم از این چک باکس ها سفارشی کنم وجود نداره. تب بعدی، Membership، من پیش میرم و برای این کاربر، یک تعداد role اضافه میکنم. اینها همون role هایی هستند که در ویدئوی آموزشی قبلی هم بهشون اشاره کردم من دوست دارم role، datareader و role، denydatawriter رو اضافه کنم.

خب اینها دستوراتی هستن که مد نظر من هست تا یک کاربر با حساب کاربری SQL Server Logins با role، db_ datareader بتونه اطلاعات پایگاه داده رو ببینه و با role،  db_ denydatawriterنتونه اطلاعات دیتابیس رو ویرایش کنه. پس به سراغ تب بعدی میرم یعنی تب Securables که نیاز نیست چیزی رو اینجا تغییر بدیم و همچنین تب Extended Properties که این هم نیازی به تغییر درش وجود نداره. بنابراین روی دکمه اوکی در پایین کلیک میکنم و حالا، به منظور تست این، من دوست دارم به عنوان user جدیدی که فقط ایجاد کردیم، ارتباط ایجاد کنم. بنابراین در پانل object explorer در منوی connect، به Database Engine میریم. چیزی که از این پنجره connect to server حاصل میشه، به صورت پیش فرض می بینیم که، قسمت Authentication آن روی Windows Authentication قرار داره.

در قسمت کشویی Authentication، من اون رو به SQL Server Authentication تغییر میدم، و حالا نمیخوام به عنوان TestUser که چند لحظه پیش ایجادش کردم، وارد بشم، چون اگه کمی دقت کرده باشین و از همین فصل مفاهیم اولیه رو به یاد داشته باشین می فهمید که ما یک Database-level users با نام TestUser ایجاد کردیم و اون تنها یک ایتم در سطح پایگاه داده هست که فقط وظایف و قابلیت های لاگین رو مشخص می کنه، اما اون میاد و خیلی راحت به TestLogin که توانایی لاگین شدن به سرور رو داره، و در ویدئوی آموزشی قبلی اون رو تعریف کردیم، نگاشت میشه، بنابراین برای لاگین، من از TestLogin استفاده میکنم. و برای پسورد، از پسوردی استفاده میکنم که برای ایجاد این لاگین تعریف کردم. و روی Connect کلیک میکنم و حالا در پایین Object Explorer، من یک connection جدید میبینم. من میتونم Databases رو باز کنم و به صورت معمول می تونم لیستی از پایگاه داده هایی که AdventureWorks 2014 هم شامل اونها میشه رو ببینم. من اون رو باز میکنم.

و بعد هم برای دیدن لیست table ها روی علامت + کلیک می کنم و حالا می تونم اونها رو ببینم. روی یکی از table ها راست کلیک میکنم و از منوی باز شده گزینه Select Top 1000 Rows رو انتخاب میکنم. و چیزی که من انتظار دارم رو بالا میاره و بله این کار رو به صورت موفقیت امیز برام انجامش داد و اطلاعات اون table رو بهم داد، چون این کاربر مجوز خواندن اطلاعات رو داشت و اگه یادتون باشه با گزینه db_ datareader چند لحظه پیش این سطح دسترسی رو براش فعال کردیم. بنابراین اونها میتونن یک دستور select مثل این رو بدون هیچ مشکلی اجرا کنین و حالا من این کدها و دستورات رو از دستور select به دستور delete تغییر میدم و زمانی که اون رو اجرا میکنم، انتظار دارم که به صورت موفقیت امیز نباشه، چون کاربر نباید مجوز لازم برای ویرایش دستورات رو داشته باشه و دلیلش هم سفارشی کردن گزینه db_ denydatawriter در چند لحظه پیش هستش.

بنابراین من  Executeرو میزنم و این کار رو انجام میدم. در حقیقت، یک پیغام خطایی به من میده که میگه permission was denied یعنی مجوز حذف رد شد. پس این فوق العاده است. این دقیقا همون چیزی هست که من انتظار داشتم و من یک user بر اساس role هایی که در database، تعریف کردم، که اون کاربر مجوز برای خوندن و مشاهده اطلاعات داره و مجوز برای نوشتن یا ویرایش داده ها نداره.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دوره ها
درس ها
Tha PMIS
طهاکو من
0