مقدمه
یکی از ویژگی های جدید در پایگاه داده Oracle 23c، نقش جدید به نام DB_DEVELOPER_ROLE است.
بهجای اعطا و لغو امتیازات فردی به یک توسعهدهنده برنامه، فقط میتوانیم نقش واحد DB_DEVELOPER_ROLE را که شامل (بیشتر) امتیازات رایج و ضروری برای طراحی، توسعه و استقرار برنامهها است، اعطا کنیم.
اغلب ممیزی ها متوجه می شوند که به توسعه دهندگان نقش DBA یا امتیازات بالاتری نسبت به آنچه برای توسعه برنامه مورد نیاز است، اعطا شده است.
بنابراین در Oracle Database 23c اعطای نقش جدید واحد DB_DEVELOPER_ROLE به اصل کمترین امتیاز پایبند است و امنیت بیشتری را برای محیط توسعه تضمین می کند. همچنین مدیریت آسان تر و ساده تر اعطای نقش و لغو را برای کاربران برنامه تسهیل می کند.
در ادامه نمونه ای از آن را باهم بررسی می کنیم.
کاربر توسعه برنامه را ایجاد کنید و DB_DEVELOPER_ROLE را اعطا کنید.
SQL> create user dev1 identified by Oracle_4U;
User created.
SQL> grant db_developer_role to dev1;
Grant succeeded.
SQL> alter user dev1 quota unlimited on users;
User altered.
ما می توانیم به عنوان کاربر توسعه برنامه متصل شویم (حتی اگر CONNECT یا CREATE SESSION اعطا نشده باشد)و اشیایی مانند جدول، view و storeprocedure ایجاد کنیم.
اشیاء ایجاد می شوند حتی اگر هیچ امتیاز واضح CREATE به کاربر اعطا نشده باشد.
[oracle@localhost ~]$ sqlplus dev1/Oracle_4U@freepdb1
SQL*Plus: Release 23.0.0.0.0 – Developer-Release on Wed May 17 02:16:08 2023
Version 23.2.0.0.0
Copyright (c) 1982, 2023, Oracle. All rights reserved.
Last Successful login time: Wed May 17 2023 02:08:11 +00:00
Connected to:
Oracle Database 23c Free, Release 23.0.0.0.0 – Developer-Release
Version 23.2.0.0.0
SQL> create table mytab as select * from all_tables;
Table created.
SQL> create view myview as select owner,object_name from all_objects;
View created.
SQL> CREATE OR REPLACE PROCEDURE myproc
IS
BEGIN
DBMS_OUTPUT.PUT_LINE(‘Hello World!’);
END;
/
۲ ۳ ۴ ۵ ۶
Procedure created.
به امتیازات و نقش هایی که به DB_DEVELOPER_ROLE اعطا شده است توجه کنید.
SQL> SELECT PRIVILEGE FROM ROLE_SYS_PRIVS WHERE ROLE=’DB_DEVELOPER_ROLE’ ORDER BY 1;
PRIVILEGE
—————————————-
CREATE ANALYTIC VIEW
CREATE ATTRIBUTE DIMENSION
CREATE CUBE
CREATE CUBE BUILD PROCESS
CREATE CUBE DIMENSION
CREATE DIMENSION
CREATE DOMAIN
CREATE HIERARCHY
CREATE JOB
CREATE MATERIALIZED VIEW
CREATE MINING MODEL
CREATE MLE
CREATE PROCEDURE
CREATE SEQUENCE
CREATE SESSION
CREATE SYNONYM
CREATE TABLE
CREATE TRIGGER
CREATE TYPE
CREATE VIEW
DEBUG CONNECT SESSION
EXECUTE DYNAMIC MLE
FORCE TRANSACTION
ON COMMIT REFRESH
۲۴ rows selected.
SQL> SELECT GRANTED_ROLE FROM ROLE_ROLE_PRIVS WHERE ROLE=’DB_DEVELOPER_ROLE’;
GRANTED_ROLE
——————————————————————————–
SODA_APP
CTXAPP
SQL> SELECT TABLE_NAME FROM ROLE_TAB_PRIVS WHERE ROLE=’DB_DEVELOPER_ROLE’;
TABLE_NAME
——————————————————————————–
JAVASCRIPT
V_$STATNAME
V_$PARAMETER
DBA_PENDING_TRANSACTIONS
اگرچه مستندات بیان میکنند که ما نمیتوانیم امتیازاتی را به DB_DEVELOPER_ROLE اعطا کنیم یا لغو کنیم (“فقط میتوان آن را در طول ارتقا یا تنزل پایگاه داده Oracle تغییر داد”) اما گویا میتوانیم امتیازات بیشتری را به این نقش اعطا کنیم.
SQL> grant create user to db_developer_role;
Grant succeeded.
SQL> SELECT PRIVILEGE FROM ROLE_SYS_PRIVS WHERE ROLE=’DB_DEVELOPER_ROLE’ ORDER BY 1;
PRIVILEGE
—————————————-
CREATE ANALYTIC VIEW
CREATE ATTRIBUTE DIMENSION
CREATE CUBE
CREATE CUBE BUILD PROCESS
CREATE CUBE DIMENSION
CREATE DIMENSION
CREATE DOMAIN
CREATE HIERARCHY
CREATE JOB
CREATE MATERIALIZED VIEW
CREATE MINING MODEL
CREATE MLE
CREATE PROCEDURE
CREATE SEQUENCE
CREATE SESSION
CREATE SYNONYM
CREATE TABLE
CREATE TRIGGER
CREATE TYPE
CREATE USER
CREATE VIEW
DEBUG CONNECT SESSION
EXECUTE DYNAMIC MLE
FORCE TRANSACTION
ON COMMIT REFRESH
۲۵ rows selected.
برای خدمات آموزش، مشاوره و نگهداری پایگاه داده اوراکل با ما در تماس باشید