کاربری با دسترسی به تنها چند رکورد، در PostgreSQL

محمد عسکری
برنامه نویس دون پایه
یکی از نیاز هایی که در یکی از پروژه ها به آن پیدا کردیم، این بود که کاربری روی Postgres داشته باشیم، که تنها به چند رکورد ، از یک جدول خاص دسترسی داشته باشد. راه حلی که پیدا کردیم برای این مشکل این بود، که با استفاده از View ها یک Viewخاص برای آن کار ایجاد کنیم، و به کاربر مورد نظرمان، دسترسی SELECT و UPDATE بر روی آن View را بدهیم.
حال در اینجا مراحل انجام این کار را مرور میکنیم :
ابتدا کاربری ایجاد میکنیم :
CREATE USER limited_user WITH PASSWORD '' ;
پس از ایجاد کاربر، به آن دسترسی اتصال به دیتابیس و وصل شدن به schema مورد نظرمان را می دهیم:
GRANT CONNECT ON DATABASE postgres TO limited_user;
GRANT USAGE ON SCHEMA public TO limited_user;
حال پس از ایجاد دسترسی برای اتصال و استفاده، یک Viewبا شرایط دلخواهمان می سازیم:
CREATE VIEW media_limitation_view as
select id, key, value
FROM settings
where key in ('VIDEO_NUMBER_LIMIT',
'VIDEO_SIZE_LIMIT',
'IMAGE_NUMBER_LIMIT',
'IMAGE_SIZE_LIMIT')
پس از آن دسترسی به SELECT و اپدیت بر روی View ساخته شده را به کاربر مورد نظرمان می دهیم:
GRANT update,select on table public.media_limitation_view to limited_user
توجه داشته باشید با این کار به راحتی قادر خواهید بود هر مدل کوئری را دسترسی بدهید. به عنوان مثال
- تنها پست هایی که در یک ماه اخیر ارسال شده اند
- کاربرانی که تعداد پست های آنها، بیشتر از ۱۰۰ عدد است.
- ...
با استفاده از این دستور، به راحتی کاربران استفاده کننده از دیتابیس را می توانید در سطح همان دیتابیس کاملا کنترل کنید.
نظرات