ESC را فشار دهید تا بسته شود

زمیوس آموزش، یادگیری و سرگرمی

Schema Privilege در اوراکل ۲۶ai چیست؟

Schema Privilege یکی از مهم‌ترین مفاهیمی است که هر توسعه‌دهنده، DBA یا حتی طراح سیستم باید در Oracle Database 26ai بلد باشد.

وقتی شما یک Schema دارید، در واقع مالک مجموعه‌ای از اشیای دیتابیس هستید؛ مثل جدول، ویو، پروسیجر، پکیج و…

حالا اگر کاربر دیگری بخواهد روی اشیای شما کاری انجام بدهد، باید مجوز داشته باشد.

به این مجوزها می‌گوییم Schema Privilege.

در نسخه‌های جدید اوراکل مثل ۲۳ai و ۲۶ai کنترل امنیت و مدیریت دسترسی‌ها هوشمندتر و دقیق‌تر شده، و همین باعث شده نقش این مفهوم مهم‌تر از همیشه باشد.

در بسیاری از سیستم‌های سازمانی، دانستن اینکه چه کسی، چه زمانی و دقیقاً کدام بخش از داده را تغییر داده یا مشاهده کرده، فقط یک مزیت نیست؛ بلکه یک الزام امنیتی و قانونی است.

در Oracle Database، یکی از پیشرفته‌ترین قابلیت‌ها در این زمینه، Auditing در سطح ستون (Column‑Level Auditing) است.

پیشنهاد می کنم این مقاله زیر رو حتما مطالعه کنی.

در این مقاله شما می خوانید

Schema Privilege دقیقاً چه کاری انجام می‌دهد؟

Schema Privilege تعیین می‌کند چه کسی چه کاری می‌تواند روی اشیای یک Schema انجام دهد.

این مجوزها به دو دسته تقسیم می‌شوند:

۱) System Privileges

مجوزهای سیستمی که روی کل دیتابیس تأثیر دارند، اما کاربر را قادر می‌کنند در شِماهای مختلف عملیات مهم انجام دهد.

مثال‌:

  • CREATE ANY TABLE
  • ALTER ANY PROCEDURE
  • DROP ANY VIEW
  • EXECUTE ANY PROCEDURE
  • SELECT ANY TABLE

نام هر کدام را دیدی که ANY داشت، بدان بسیار حساس است و باید با احتیاط داده شود.

۲) Object Privileges

دسترسی مستقیم روی یک شیء خاص در یک schema.

مثلاً:

  • SELECT
  • UPDATE
  • INSERT
  • DELETE
  • EXECUTE
  • REFERENCES

مثال:

				
					GRANT SELECT ON hr.employees TO app_user;

				
			

چرا Schema Privilege در اوراکل ۲۶ai اهمیت بیشتری پیدا کرده؟

در نسخه ۲۶ai، اوراکل امکانات امنیتی مبتنی بر AI اضافه کرده که رفتار کاربران، الگوهای دسترسی و خطرات احتمالی را تحلیل می‌کند.

اگر دسترسی‌ها درست داده نشده باشند:

  • نشت اطلاعات
  • حذف ناخواسته داده
  • اجرای پروسیجرهای حساس
  • نوشتن یا آپدیت اشتباهی روی داده‌های حیاتی

به‌سادگی رخ می‌دهد.

پس مدیریت صحیح Schema Privilege دیگر فقط یک توصیه نیست؛ بلکه یک ضرورت است.

مهم‌ترین دسترسی‌های مربوط به Schema در اوراکل

در ادامه پرکاربردترین و مهم‌ترین دسترسی‌هایی که در مدیریت شِما با آن سر و کار دارید را آورده‌ام:

CREATE

اجازه ساختن جدول، ویو یا هر object در شِمای خود کاربر.

CREATE ANY

ایجاد اشیا در شِمای کاربران دیگر. (بسیار خطرناک)

ALTER و ALTER ANY

اجازه تغییر اشیای موجود در شِمای خود یا دیگران.

DROP ANY

حذف اشیا در هر شِما — یکی از خطرناک‌ترین دسترسی‌ها.

EXECUTE

اجازه اجرای پکیج‌ها، پروسیجرها و فانکشن‌ها.

SELECT ANY TABLE

امکان خواندن تمام جداول همه شِماها.

در سیستم‌های عملیاتی توصیه نمی‌شود مگر برای DBA سطح بالا.

یک نکته مهم: مالکیت Schema با Privilege فرق دارد

خیلی‌ها اشتباه می‌گیرند.

مالک بودن یعنی شما ساختید، نه اینکه دیگران هم بتوانند از آن استفاده کنند.

مثلاً کاربر HR مالک جدول EMPLOYEES است،

اما اگر APP_USER بخواهد SELECT بزند:

باید مجوز بدهیم:

				
					GRANT SELECT ON hr.employees TO app_user;

				
			

مثال‌ کاربردی (قابل استفاده در محیط کار)

دسترسی SELECT روی یک جدول

				
					GRANT SELECT ON hr.employees TO app_user;

				
			

دسترسی UPDATE فقط روی چند ستون خاص

(قابلیت جدید در نسخه‌های ۲۱c به بعد)

				
					GRANT UPDATE(salary, commission_pct) ON hr.employees TO app_user;

				
			

دسترسی EXECUTE روی یک پکیج

				
					GRANT EXECUTE ON hr.payroll_pkg TO app_user;

				
			

ویژگی جدید نسخه ۲۳ai / 26ai: دستور DENY

برای جلوگیری از دسترسی ناخواسته:

				
					DENY SELECT ON hr.employees TO app_user;

				
			

دادن دسترسی روی همه‌ی جداول یک Schema (نسخه‌های جدید)

				
					GRANT READ ON hr.* TO app_user;

				
			

دادن EXECUTE روی همه‌ی پروسیجرهای یک Schema

				
					BEGIN
  FOR r IN (SELECT object_name FROM dba_objects WHERE owner='HR' AND object_type='PROCEDURE') LOOP
    EXECUTE IMMEDIATE 'GRANT EXECUTE ON HR.' || r.object_name || ' TO APP_USER';
  END LOOP;
END;
				
			

بهترین روش‌ها برای مدیریت Schema Privilege

برای اینکه دیتابیس امن، سریع و قابل مدیریت داشته باشی:

  • از دسترسی‌های ANY فقط وقتی مجبور هستی استفاده کن.
  • همیشه دسترسی‌ها را روی Role بده، نه مستقیم روی User.
  • برای کاربران اپلیکیشن فقط READ یا EXECUTE کافی است.
  • دسترسی UPDATE، INSERT یا DELETE را فقط اگر واقعاً نیاز دارند بده.
  • Audit را روی جداول حساس فعال کن:
				
					AUDIT SELECT, INSERT, UPDATE, DELETE ON hr.employees;

				
			

سوالات متداول درباره Schema Privilege در Oracle 26ai

Schema Privilege مجموعه‌ای از مجوزهاست که تعیین می‌کند یک کاربر چه عملیاتی می‌تواند روی اشیای یک شِما (Schema) انجام دهد.

Object Privilege فقط روی یک شیء مثل جدول یا ویو اعمال می‌شود.

دسترسی‌هایی که کلمه ANY دارند حساس‌ترین هستند، چون به کاربر اجازه می‌دهند روی اشیای تمام شِماها عملیات انجام دهد.

پنج مورد پرخطر:

  • DROP ANY TABLE
  • ALTER ANY PROCEDURE
  • CREATE ANY TABLE
  • EXECUTE ANY PROCEDURE
  • SELECT ANY TABLE

این دسترسی‌ها فقط باید به DBA سطح بالا داده شوند.

از نسخه‌های جدیدتر اوراکل (۲۱c تا ۲۶ai) امکان دادن دسترسی یک‌جای خواندن روی کل شِما فراهم شده است:

GRANT READ ON hr.* TO app_user;

به این ترتیب کاربر بدون اینکه روی هر جدول جداگانه GRANT بدهید، به همه جداول شِما دسترسی فقط خواندنی خواهد داشت.

بله. از Oracle 23ai به بعد دستور DENY دوباره اضافه شده و در Oracle ۲۶ai کامل‌تر شده است.

این دستور زمانی استفاده می‌شود که بخواهید یک کاربر حتی اگر از طریق Role یا دسترسی غیرمستقیم مجوز دارد، باز هم نتواند یک عملیات خاص را انجام دهد.

مثال:

DENY SELECT ON hr.employees TO app_user;

این دستور کاربر را به‌طور کامل از خواندن جدول employees منع می‌کند.

جمع‌بندی

Schema Privilege در اوراکل ۲۶ai ستون اصلی امنیت و مدیریت درست دیتابیس است.

با فهم دقیق این مجوزها می‌توانی ساختار دسترسی‌ها را حرفه‌ای طراحی کنی، از مشکلات امنیتی جلوگیری کنی و دیتابیس را برای هر نوع اپلیکیشن پایدار و امن نگه داری.

سؤالی درباره این مقاله داری؟

اگر نکته‌ای در این مقاله برات مبهم بود یا خواستی بیشتر بدونی، همین حالا برام بنویس تا دقیق و صمیمی پاسخت رو بدم — مثل یه گفت‌وگوی واقعی 💬

برو به صفحه پرسش و پاسخ

میثم راد

من یه برنامه نویسم که حسابی با دیتابیس اوراکل رفیقم! از اونایی ام که تا چیزی رو کامل نفهمم،ول کن نیستم، یادگرفتن برام مثل بازیه، و نوشتن اینجا کمک می کنه تا چیزایی که یاد گرفتم رو با بقیه به شریک بشم، با هم پیشرفت کنیم.

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

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