استفاده از گروه‌های سیستم عاملی برای تفکیک مجوزهای دیتابیس در Oracle Database

مقدمه

امنیت و مدیریت دسترسی به دیتابیس یکی از چالش‌های مهم در محیط‌های پایگاه داده است. Oracle Database 19c با استفاده از گروه‌های سیستم عاملی از پیش تعریف‌شده به ما امکان می‌دهد تا به طور مؤثری دسترسی‌ها را مدیریت کنیم. در این مقاله، نحوه استفاده از این گروه‌ها برای تفکیک مجوزها و اعمال عملیات بکاپ بر روی دیتابیس بدون دسترسی به داده‌های کاربر را بررسی خواهیم کرد.

گروه‌های سیستم عاملی در Oracle Database 19c

در صورتی که در هنگام نصب اولیه، oracle-database-preinstall رو نصب کرده باشید، کاربر oracle و گروه های مربوط به آن را می سازد. 

https://vahiddb.com/fa/os/os-infra/installing-required-package-for-oracle-by-dnf

البته احتیاج هست که گروه های باقی مانده را نیز خودتان بسازید که برای نصب grid مورد نیاز هست.

با زدن دستور id می توانید گروه هایی که کاربر اوراکل در آن عضو هست را ببینید:

[oracle@vahiddb1922 ~]$ id

uid=54321(oracle) gid=54321(oinstall) groups=54321(oinstall),54322(dba),54323(oper),54324(backupdba),54325(dgdba),54326(kmdba),54327(asmdba),543                                        28(asmoper),54329(asmadmin),54330(racdba)

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

مراحل عملی

ایجاد و پیکربندی کاربر

 ایجاد کاربر جدید و افزودن به گروه backupdba

با توجه به گروه‌های از پیش تعریف‌شده، ما باید یک کاربر جدید ایجاد کنیم و او را به گروه backupdba اضافه کنیم و برای آن پسورد تنظیم می کنیم. این کار به صورت زیر انجام می‌شود:

[root@vahiddb1922 ~]# useradd -m -G backupdba backupuser

[root@vahiddb1922 ~]# passwd backupuser

Changing password for user backupuser.

New password:

BAD PASSWORD: The password contains the user name in some form

Retype new password:

passwd: all authentication tokens updated successfully.

تنظیم مجوزها

بر اساس نیازهای خود، می‌توانید مجوزهای خاصی برای کاربر backupuser تنظیم کنید تا تنها دسترسی‌های مورد نظر را داشته باشد.

انجام عملیات بکاپ با کاربر جدید

اتصال به دیتابیس

با استفاده از کاربر backupuser به دیتابیس متصل شوید:

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

[backupuser@vahiddb1922 ~]$ sqlplus / as sysbackup

SQL*Plus: Release 19.0.0.0.0 - Production on Fri Aug 23 17:24:53 2024

Version 19.22.0.0.0

Copyright (c) 1982, 2023, Oracle.  All rights reserved.

Connected to:

Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production

Version 19.22.0.0.0

حالا ببینیم به چه چیزهایی دسترسی داریم:

[backupuser@vahiddb1922 ~]$ sqlplus / as sysbackup

SQL*Plus: Release 19.0.0.0.0 - Production on Fri Aug 23 17:26:57 2024

Version 19.22.0.0.0

Copyright (c) 1982, 2023, Oracle.  All rights reserved.

Connected to:

Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production

Version 19.22.0.0.0

SQL> SHOW PDBS

    CON_ID CON_NAME                       OPEN MODE  RESTRICTED

---------- ------------------------------ ---------- ----------

         2 PDB$SEED                       READ ONLY  NO

         3 PDB                            READ WRITE NO

SQL> alter session set container=pdb;

Session altered.

SQL> select username from dba_users where username='HR';

USERNAME

--------------------------------------------------------------------------------

HR

SQL> SELECT TABLE_NAME FROM DBA_TABLES WHERE OWNER='HR';

TABLE_NAME

--------------------------------------------------------------------------------

REGIONS

LOCATIONS

DEPARTMENTS

JOBS

EMPLOYEES

JOB_HISTORY

COUNTRIES

7 rows selected.

SQL> SELECT * FROM HR.REGIONS;

SELECT * FROM HR.REGIONS

                 *

ERROR at line 1:

ORA-01031: insufficient privileges

 

تا اینجا متوجه شدیم با اینکه لیست جدوال و کاربرهای دیتابیس را می بیند، اما به اطلاعات کاربر دسترسی ندارد.

حالا برویم کار اصلی که از انتظار داریم انجام دهد را انجام دهیم. یعنی گرفتن بک آپ از دیتابیس:

[backupuser@vahiddb1922 ~]$ rman

Recovery Manager: Release 19.0.0.0.0 - Production on Fri Aug 23 17:37:08 2024

Version 19.22.0.0.0

Copyright (c) 1982, 2019, Oracle and/or its affiliates.  All rights reserved.

RMAN> connect target '/ as sysbackup'

connected to target database: ORCL (DBID=1703352953)

RMAN> backup database;

Starting backup at 23-AUG-24

using target database control file instead of recovery catalog

allocated channel: ORA_DISK_1

channel ORA_DISK_1: SID=50 device type=DISK

channel ORA_DISK_1: starting full datafile backup set

channel ORA_DISK_1: specifying datafile(s) in backup set

input datafile file number=00001 name=+DATA/ORCL/DATAFILE/system.270.1175572125

input datafile file number=00003 name=+DATA/ORCL/DATAFILE/sysaux.261.1175572161

input datafile file number=00004 name=+DATA/ORCL/DATAFILE/undotbs1.274.1175572175

input datafile file number=00007 name=+DATA/ORCL/DATAFILE/users.269.1175572177

channel ORA_DISK_1: starting piece 1 at 23-AUG-24

channel ORA_DISK_1: finished piece 1 at 23-AUG-24

piece handle=/u01/app/oracle/product/19.22/dbhome_1/dbs/163371im_38_1_1 tag=TAG20240823T173726 comment=NONE

channel ORA_DISK_1: backup set complete, elapsed time: 00:00:25

channel ORA_DISK_1: starting full datafile backup set

channel ORA_DISK_1: specifying datafile(s) in backup set

input datafile file number=00010 name=+DATA/ORCL/1E5F693390D2312FE0632438A8C0BDEA/DATAFILE/sysaux.268.1175573501

input datafile file number=00009 name=+DATA/ORCL/1E5F693390D2312FE0632438A8C0BDEA/DATAFILE/system.272.1175573501

input datafile file number=00011 name=+DATA/ORCL/1E5F693390D2312FE0632438A8C0BDEA/DATAFILE/undotbs1.273.1175573501

input datafile file number=00012 name=+DATA/ORCL/1E5F693390D2312FE0632438A8C0BDEA/DATAFILE/users.267.1175573517

channel ORA_DISK_1: starting piece 1 at 23-AUG-24

channel ORA_DISK_1: finished piece 1 at 23-AUG-24

piece handle=/u01/app/oracle/product/19.22/dbhome_1/dbs/173371jf_39_1_1 tag=TAG20240823T173726 comment=NONE

channel ORA_DISK_1: backup set complete, elapsed time: 00:00:15

channel ORA_DISK_1: starting full datafile backup set

channel ORA_DISK_1: specifying datafile(s) in backup set

input datafile file number=00006 name=+DATA/ORCL/86B637B62FE07A65E053F706E80A27CA/DATAFILE/sysaux.279.1175572811

input datafile file number=00005 name=+DATA/ORCL/86B637B62FE07A65E053F706E80A27CA/DATAFILE/system.262.1175572811

input datafile file number=00008 name=+DATA/ORCL/86B637B62FE07A65E053F706E80A27CA/DATAFILE/undotbs1.277.1175572811

channel ORA_DISK_1: starting piece 1 at 23-AUG-24

channel ORA_DISK_1: finished piece 1 at 23-AUG-24

piece handle=/u01/app/oracle/product/19.22/dbhome_1/dbs/183371jv_40_1_1 tag=TAG20240823T173726 comment=NONE

channel ORA_DISK_1: backup set complete, elapsed time: 00:00:15

Finished backup at 23-AUG-24

Starting Control File and SPFILE Autobackup at 23-AUG-24

piece handle=/u01/app/oracle/product/19.22/dbhome_1/dbs/c-1703352953-20240823-00 comment=NONE

Finished Control File and SPFILE Autobackup at 23-AUG-24

RMAN>

همانطور که می بینیم بک آپ گرفته شد. 

این موضوع برای تفکیک وظایف در سازمانهای بزرگ مناسب است.