تجربیات کاری چند دوست

در این وبلاگ تجربیاتی که در حین کار بدست آورده ایم را به اشتراک خواهیم گذاشت

تجربیات کاری چند دوست

در این وبلاگ تجربیاتی که در حین کار بدست آورده ایم را به اشتراک خواهیم گذاشت

تجربیات کاری چند دوست
آخرین نظرات
  • ۱۶ مرداد ۹۸، ۰۱:۰۰ - علی جهان نما
    عالی بود

۴ مطلب با موضوع «Oracle Security» ثبت شده است

در اوراکل 12c امکان ثبت رویدادنگاری از دستورات DDL وجود دارد ، البته این امکان در 11g نیز وجود داشت ولی در نسخه جدید رویدادنگاری ها جدای از alert log دخیره میشوند . با این امکان میتوان متوجه شد که چه تغییراتی توسط چه کسی و در چه زمانی بر روی پایگاه داده اعمال شده است . بزای فعالسازی این امکان باید پارامتر ENABLE_DDL_LOGGING را فعال کنیم ، این پارامتر میتواند در سطح دیتابیس یا سشن فعال شود . پس از فعال شدن این پارامتر تمام دستورات DDL در قالب یک فایل XML و یک لاگ فایل در مسیر  ORACLE_BASE/diag/rdbms/DBNAME/log|ddl$  ذخیره خواهند شد. یک فایل XML شامل اطلاعاتی نظیر دستور DDL ، آدرس IP ، زمان اجرا و ... میباشد .

دستور فعال سازی DDL logging : 

ALTER SYSTEM|SESSION SET ENABLE_DDL_LOGGING=TRUE;

در صورت فعال سازی دستورات زیر رویدادنگاری خواهند شد :

CREATE|ALTER|DROP|TRUNCATE TABLE
DROP USER
CREATE|ALTER|DROP PACKAGE|FUNCTION|VIEW|SYNONYM|SEQUENC

بیشتر بخوانید :

enable_ddl_logging Tips in Oracle 11g


  • صادق جوانمرد

گاهی اوقات نیاز است به دلایل امنیتی ارتباط بین دیتابیس و نرم افزار را رمز نگاری کرد . یکی از بهترین روشها استفاده از SSL در ارتباطات TNS و LISTENER است . در این مقاله به پیاده سازی این راهکار خواهیم پرداخت.


با دنبال کردن مراحل زیر میتوان ارتباط بین برنامه و دیتابیس را ایجاد کرد:

در این مستند فرض را بر این گرفته که server با نام ol7-121.localdomain بوده و client یک سیستم ویندوزی با نام "my-computer" میباشد و oracle client بر روی آن نصب میباشد.

 

ایجاد wallet بر روی سرور:

1-    ساخت wallet بصورت auto_login بر روی سرور

 

$ mkdir -p /u01/app/oracle/wallet

 

$ orapki wallet create -wallet "/u01/app/oracle/wallet" -pwd WalletPasswd123 -auto_login_local

 

2-    ساخت certificate بصورت self-signed  و load به wallet

$  orapki wallet add -wallet "/u01/app/oracle/wallet" -pwd WalletPasswd123 -dn "CN=`hostname`" -keysize 1024 -self_signed -validity 3650

  • حامد اسماعیلی

صورت مسئله :

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

مراحل کار :

1- ایجاد یک تابع جهت تعریف کاربران مجاز

create or replace function VPD( p_owner in varchar2, p_name in varchar2 ) return varchar2
    as
    begin
            if sys_context( 'userenv', 'session_user' ) in( 'user1','user2') --and SYS_CONTEXT('USERENV','HOST')in('DOMAIN\TESTPC','hamed')
            and sys_context('userenv','ip_address') in ('192.168.1.10','192.168.1.20')
            then
                    return NULL;
            else
                   return '1=0';
            end if;
   end;
   /
  • حامد اسماعیلی

گاهی اوقات نیاز است که کاربر نتواند اقدام به ALTER نمودن جداول نماید . در مثال زیر تمامی دسترسیهای کاربر به جز دستور TRUNCATE گرفته میشود.

CREATE OR REPLACE TRIGGER TEST.DDLTrigger
  BEFORE DDL ON schema
BEGIN
  if (ora_sysevent = 'TRUNCATE') then
    null; -- I do not care about truncate
  else
    raise_application_error(-20000, 'YOU CAN NOT DO DDL!');
  end if;
END;

  • حامد اسماعیلی