رفتن به مطلب

امنيت در پايگاه داده اوراكل


Fahim

ارسال های توصیه شده

نويسنده: ميکولاش‌پانسکي منبع: هكينگ ترجمه: امين كلانتري

 

 

 

مسائل جدي‌اي درباره امنيت اوراکل وجود دارد.ديويد ليچفيلد در كتابي به نام راهنماي هکرهاي اوراکل، به اين مسائل اشاره‌كرده‌است. اين كتاب شامل روش‌هاي ممكن براي حمله به يك سرور اوراكل است. بعضي از مثال‌هاي كتاب براساس نظارت مداوم به ترافيك عبوري از سطح شبكه (Sniff)، دسترسي مستقيم به حافظه Shared Global Memory يا حتي دسترسي مستقيم به فايل‌هاي داده پايگاه‌داده اوراكل استوار است. بعضي از مشكلات مذکور با افزودن قابليت‌هاي امنيتي پيشرفته اوراكل يعني Advanced Security به پايگاه‌داده موجود برطرف مي‌شود. البته، اين به‌آن معنا نيست كه جعبه‌اي از تجهيزات مختلف در اختيار شما قرار بگيرد و سپس به كمك ابزارهاي آن، بتوانيد يك لايه محافظتي بي‌نقص براي حفاظت از پايگاه‌داده، ايجاد كنيد. نصب تك‌تك اين گزينه‌ها بايد مطابق برنامه‌ريزي مشخص پيش برود و فرآيند نگهداري آن‌ها بايد در نهايت دقت انجام شود. در غير اين صورت و در اثر بروز نقص در سيستم و افتادن آن يا خطا در تنظيمات، ممكن است در وضعيتي قرار گيريد كه نتوانيد به هيچ عنوان داده‌هاي خود را بازيابي كنيد. هرچند اگر پياده‌سازي سيستم با برنامه‌ريزي دقيق صورت گرفته باشد و مدير پايگاه‌داده از تجربه كافي برخوردار باشد، در اين صورت راه‌هايي براي دفاع بهتر از پايگاه‌داده وجود دارد.

احراز هويت

احراز هويت (Authentication) به معني تأييد اعتبار موجوديتي است كه مي‌خواهد به اشياي پايگاه‌داده دسترسي داشته‌باشد. وقتي فرآيند احراز هويت با موفقيت انجام شود، فرآيند اعطاي مجوز (Authorization) شروع مي‌شود. اعطاي مجوز، فرآيندي است كه دسترسي به اشياي پايگاه‌داده را مديريت مي‌كند. براي احراز هويت، روش‌هاي مختلفي وجود دارد. رايج‌ترين روش‌هاي احراز هويت، از طريق سيستم‌عامل، شبكه، پايگاه‌داده، سيستم‌هاي چند لايه يا روش SSL (سرنام Secure Socket Layer) انجام مي‌شود. وقتي كه هويت كاربر تأييد شود، ديگر نيازي به اعتبارسنجي‌هاي بعدي وجود ندارد. كاربران مي‌توانند با استفاده از يك ابزار سمت كلاينت نظير sqlplus، به پايگاه‌داده متصل شوند.

 

جدول‌هاي مورد استفاده براي ايجاد ديدهاي كاربري

$user : جدول كاربران شامل نام، نوع و شماره

$defrole : نقش‌هاي پيش‌فرض (شامل ستون‌هاي $user و $role)

$objauth : جدول احراز هويت

$sysauth : احراز هويت در سطح سيستم (مجوزهاي سيستمي، گيرنده مجوز و گزينه‌ها)

$ts : اطلاعات فضاهاي tablespace

$obj : براي مشخص كردن اشياء از نام، نوع و شماره مالك استفاده مي‌كند.

$cols : ستون‌ها

$profile : رابطه بين پروفايل‌ها و مجوزهاي دسترسي به منابع را ذخيره مي‌كند.

resource_map : توضيحات مربوط به منابع را ذخيره مي‌كند.

system_privilege_map : توضيحاتي را درباره مجوزهاي سيستمي، ارائه مي‌دهد.

table_privilege_map : توضيحاتي را درباره مجوز دسترسي به داده‌ها ارائه مي‌دهد.

user_astatus_map : وضعيت كلمه رمز و حساب كاربران را ذخيره مي‌كند.

 

در روش احراز هويت توسط سيستم‌عامل، در عمل به منظور راحتي كاربر، فرآيند احراز هويت در يك محيط با سطح امنيت پايين‌تر انجام مي‌شود. احراز هويت در شبكه، از طريق SSL يا ساير سرويس‌ها در سطح شبكه، انجام مي‌شود. به‌عنوان مثال، مي‌توان يكي از روش‌هاي احراز هويت مبتني بر PKI يا Kerberos را نام برد. ‌ معمول‌ترين روش احراز هويت در پايگاه‌داده اوراكل، استفاده از رمزهاي متني ساده است. به‌اين‌ترتيب، از يك روش ساده براي احراز هويت استفاده مي‌شود و در عين حال امنيت سيستم در سطح قابل قبولي است. البته، در اين روش، همه چيز به ميزان پيچيدگي كلمه رمز مورد استفاده و ميزان نفوذپذيري آن در برابر فرآيندي به نام مهندسي اجتماعي، بستگي دارد. در اين روش نيازي به نصب ساير سيستم‌هاي احراز هويت وجود ندارد. از طرفي نقاط ضعف ناشي از استفاده از رمز سمت سيستم‌عامل نيز مطرح نيست. فرآيند احراز هويت در سمت پايگاه‌داده، از طريق دريافت نام كاربري و بررسي اعتبار رمز او انجام مي‌شود.

 

كاربران مي‌توانند كلمات رمز خود را همانند ساير اطلاعاتي كه بعد از رمزشدن، در پايگاه‌داده نگهداري مي‌‌شوند، هر زمان كه بخواهند تغيير دهند. يكي از وظايف اصلي در حفظ امنيت پايگاه‌داده، فعال‌كردن امكان رمز‌نگاري كلمات رمز است. از ساير ابزارهاي امن‌سازي پايگاه‌داده مي‌توان به ابزارهاي كنترل ارتباط، قفل‌كردن حساب، كنترل دوره اعتبار رمز و منقضي كردن آن بعد از مدت زمان مشخص و نظارت بر پيچيده‌بودن رمز ايجاد‌شده؛ اشاره كرد. روش ديگر براي دسترسي به پايگاه‌داده،‌ ايجاد برنامه‌هاي چند لايه است. اين كار امكان دسترسي به پايگاه‌داده را از طريق يك لايه مديريت مي‌كند كه پرس‌وجوها و كنترل كاربران از طريق آن انجام مي‌شود. چندين كاربر مي‌توانند به سرور داده دسترسي داشته‌باشند، بدون آن‌كه به رابط يا Connection مجزا به ازاي هر كدام نياز باشد. براي اين منظور مي‌توان از يك رابط فراخواني اوراكل يا Oracle Call Interface استفاده كرد. اين ابزار و اين روش، مزيت‌هاي خاص خود را دارد، اما به دليل امنيت كم، استفاده از آن پيشنهاد نمي‌شود. اگر يك حساب كاربري در خطر باشد، كاربر مي‌تواند به برنامه دسترسي كامل داشته‌باشد و ممكن است به دنبال حساب‌كاربري ديگري با مجوزهاي سطح بالاتر باشد.

 

 

 

 

ديدهاي كاربري مرتبط با امنيت

ديدهاي كاربري مرتبط با پروفايل‌ها

 

DBA_PROFILES, DBA_SQL_PROFILES

.

ديدهاي كاربري مرتبط با نقش‌ها

 

DBA_APPLICATION_ROLES,

DAB_CONNECT_ROLE_GRANTEES, DBA_ROLE_PRIVS,

DBA_ROLES,

PROXY_ROLES, PROXY_USER_AND_ROLES.

 

ديدهاي كاربري مرتبط با مجوزها

 

DAB_COL_PRIVS, DBA_ROLE_PRIVS, DBA_SYS_PRIVS, DAB_TAB_PRIVS.

 

ديدهاي كاربري مرتبط با كاربران

 

DBA_USERS.

 

اعطاي مجوز

بعد از فعاليت‌هاي مرتبط با احراز هويت (شناسايي و تأييد اين كه درخواست كننده ارتباط همان‌كسي است كه ادعا مي‌كند)، بايد ميزان دسترسي كاربر به اشياي پايگاه‌داده را كنترل كنيم. در مرحله قبل ما از پرونده اطلاعات هويتي و روش‌هاي شناسايي كاربر استفاده كرديم. در اين مرحله بايد مجوزها، نقش كاربر و محدوديت او در دسترسي به منابع و اطلاعات سيستم را تعيين و محدود كنيم. فرآيند اعطاي مجوز (Authorization) شامل دو فرآيند اصلي است.فرآيند اول، براي اطمينان از اين مسئله است كه تنها كاربران مشخصي مي‌توانند به داده‌ خاصي دسترسي داشته و آن‌را پردازش كرده و تغيير دهند. فرآيند دوم، اعمال محدوديت در دسترسي كاربر به داده‌ها و كارهايي است كه مي‌تواند انجام دهد (يعني محدوديت در دسترسي به اشيا و/يا منابع). وقتي كه درباره مجوزدهي صحبت مي‌كنيم، يكي از اولين سؤالاتي كه مطرح مي‌شود، اين است كه به ازاي هر كاربر، چه مجوزهايي ارائه شده‌است؟ مجوز عبارت است از حق اجراي يك جمله SQL خاص يا دسترسي به اشياي متعلق به كاربر ديگر. مجوزها را مي‌توان به صورت تك‌تك يا از طريق مفهومي به نام Role يا «نقش» به‌صورت گروهي، به كاربران اعطاء كرد. مفهوم Role به اين دليل به پايگاه‌داده افزوده شده تا فرآيند مديريت كاربران و كنترل آزادي و حقوق آن‌ها در انجام كارهاي مختلف در سطح پايگاه‌داده، آسان‌تر كنترل شود.

 

دو گروه اصلي از مجوزها وجود دارد. مجوزهاي سطح سيستم بايد با دقت به كاربران اعطاء شود. اين مجوزها، هرگز نبايد به كاربران ساده پايگاه‌داده اعطاء شوند. اين مجوز فقط بايد به مديران پايگاه‌داده و برنامه‌نويسان، اعطاء شود. جملات SQL كه براي كنترل مجوزها به كار مي‌روند، عبارتند از GRANT و REVOKE. در اوراكل، اعطاي مجوز، با يك قابليت بي‌نظير با عنوان حالت admin، همراه است. اين گزينه به كاربر گيرنده مجوز اجازه مي‌دهد تا آن نوع مجوز را به ساير كاربران نيز اعطاء كرده يا از كاربر خاصي سلب كند. مجوزهاي دسترسي به اشياء، بر دسترسي كاربر به جدول‌ها، ديدها، رويه‌ها، توابع وPackageها كنترل دارد.

 

مفاهيم

براي کاوش پايگاه‌داده اوراكل، بايد از نقطه شروع آغازكرد. اين مقاله يك راهنماي مفهومي است. ايده اصلي امنيت، منع يا مجوز دادن به كاربر براي انجام عمل خاصي است. مدل ايده‌آل امنيتي در اوراكل، كنترل دسترسي مبتني بر آزادي و اختيار كامل است، به اين معنا که اعطاي مجوز دسترسي به يك كاربر به‌صورت كاملاً آزادانه به كاربر ديگر، ممكن است. خود پايگاه‌داده، فهرستي از كاربران را ذخيره مي‌كند. وقتي كه كاربري بخواهد به پايگاه‌داده دسترسي داشته‌باشد، يك نام كاربري و رمز معتبر در اختيار او قرار مي‌گيرد. هر كاربر يك محدوده امنيتي دارد. محدوده امنيتي يا Security Domain، عبارت است از مجموعه‌اي از مجوزها، نقش‌ها، محدوديت دسترسي به منابع سيستم و محدوديت در اشغال فضاي ديسك. مجوز عبارت است از پياده‌سازي كنترل دسترسي. اوراكل در كنترل جزئيات و ارائه مجوزهاي دسترسي به كاربران، انعطاف‌پذيري بسيار زيادي دارد. مي‌توان مجوزهاي سيستم را در دو گروه تقسيم‌بندي كرد. يك دسته از اين مجوزها، به ازاي كل سيستم پايگاه‌داده اعمال مي‌شود. اين دسته از مجوزها معمولاً به صورت عبارتي هستند كه در آن كلمه ANY ديده مي‌شود.

 

اين دسته از مجوزها، خيلي قدرتمند هستند و كاربر داراي اين مجوز مي‌تواند حق دسترسي به همه اشيايي به جز اشياي شِماي كاربري SYS را به دست ‌آورد (شِماي كاربري SYS حاوي اشيايي است كه توضيحات مربوط به اشياء ساير شِماها را در خود ذخيره‌كرده‌اند كه به آن‌هاdata dictionary مي‌گويند). دسترسي به data dictionary را مي‌توان از طريق پارامتر DICTIONARY_ACCESSIBILITY ت_07 تنظيم كرد. اگر اين پارامتر با FALSE مقداردهي شده‌باشد، هيچ يك از مجوزها، نمي‌توانند به data dictionary دسترسي داشته‌باشند. ساير مجوزهاي سيستمي، آن دسته از مجوزهايي را شامل مي‌شوند كه بر وضعيت پايگاه‌داده تأثير دارند. براي مثال، C،CREATE TABLESPACE، ،AUDIT SYSTEM ،CREATE LIBRARY و... . بيشتر مجوزهاي سيستم در ديدكاربري (View) با نام SYSTEM_PRIVILEGE_MAP قابل مشاهده هستند. ما مي‌توانيم دسترسي مناسبي به اين ديد كاربري داشته‌باشيم و محتويات آن‌را از طريق اجراي پرس‌وجو، مشاهده و بررسي كنيم.

 

براي مشاهده مجوزهاي سيستمي اعطاء شده به كاربران و نقش‌ها مي‌توانيم به ديد كاربري با نام DBA_SYS_PRIVS مراجعه كنيم. در لغت‌نامه فني علوم كامپيوتر كاربري كه نام او در ستون grantee باشد، همان كاربري است كه مجوز خاصي به او اعطاء شده‌است. اين ديدها مي‌توانند براي مديريت آسان پايگاه‌داده به كار روند، اما نبايد به‌طور كامل به آن‌ها اعتماد كرد و وابسته بود، زيرا كاربر با دسترسي بدون محدوديت به پايگاه‌داده مي‌تواند به اين ديدها دسترسي داشته‌باشد تا كاربران، پروسس‌ها و ساير موارد را پنهان كند. ديدهاي كاربري زيادي وجود دارد كه براي رعايت اصول امنيتي مي‌توان از آن‌ها استفاده كرد.بعضي از اين ديدها داراي زير مجموعه‌هايي هستند كه بخشي از داده آن‌ها را نمايش مي‌دهند. معمولاً در نام اين دسته‌ از ديدها، كلماتي نظير ALL و USER مشاهده مي‌شود. مهم‌ترين تفاوت اين ديدها با ديد مرجع، محدوده اشياء و ركوردهايي است كه نمايش مي‌دهند.

 

فهرست 1: ايجاد ستون نوع TDE با و بدون salt

CREATE TABLE gold_partner (

partnerID NUMBER ENCRYPT NO SALT,

name VARCHAR2(128),

surname VARCHAR2(128),

ccno NUMBER(16) ENCRYPT USING ‘M4g1cW0rD’

);

CREATE INDEX partnerID_idx ON god_partner (partnerID);

فهرست 2: نمونه‌اي از فايل sqlnet.ora درسمت سرور

# sqlnet.ora Network Configuration (Server)

# Example configuration for server to use Oracle Advanced

Features

SQLNET.CRYPTO_CHECKSUM_TYPES_SERVER= (MD5)

SQLNET.ENCRYPTION_TYPES_SERVER= (3DES168, 3DES112, DES40) فهرست 3: نمونه‌اي از فايل sqlnet.ora درسمت كلاينت

# sqlnet.ora Network Configuration (Client)

# Example configuration for client to use Oracle Advanced

Features

SQLNET.CRYPTO_CHECKSUM_TYPES_CLIENT= (MD5)

SQLNET.ENCRYPTION_TYPES_CLIENT= (3DES112, 3DES168, DES40)

 

اين تفاوت از روي پيشوند نام ديد، قابل تشخيص است، به‌عنوان مثال، پيشوند ALL، همه اشياء را نشان مي‌دهد و پيشوند USER، اشيايي را نشان مي‌دهد كه متعلق به كاربر هستند يا DBA آن‌ها را به عنوان اشياي مديريت پايگاه‌داده معرفي كرده‌است. اين ديدها، در حقيقت، اشيايي از پايگاه‌داده هستند كه مي‌توانند اطلاعات جدول‌هاي لايه زيرين را به روشي قابل فهم، در اختيار كاربر قرار دهند.همان‌گونه كه قبلاً نيز گفته شد، گروه ديگري از مجوزها وجود دارد كه آن‌ها را مجوز اشياء مي‌گويند. اين مجوزها براي شيء خاصي ارائه مي‌شود. به‌عنوان مثال، براي مشاهده محتويات جدول employee، بايد يك دستور SELECT را به ازاي اين جدول توليد كند. در حالي‌كه به صورت پيش‌فرض، كاربران امکان ديدن مجوزهاي خود را ندارند. اگر مدير پايگاه‌داده بخواهد به همه كاربران اجازه دهد تا سطح دسترسي خود را مشاهده كنند، بايد مجوز مشاهده اطلاعات در ديدهاي كاربري با نام‌هاي user_objects_privs يا user_sys_privs را براي كاربر با نام PUBLIC ايجاد كند. البته، من پيشنهاد مي‌كنم كه به هيچ عنوان اين كار را انجام ندهيد. تنها مورد كاربري كه به ذهن من مي‌رسد، ارائه سطح دسترسي پايگاه‌داده از نوع Debug است. البته، روش ديگري كه براي استفاده از اين ديدكاربري وجود دارد، اين است كه بررسي كنيم و ببينيم چه كسي مجوز اعطاي آن‌را به سايرين دارد.

 

سوپروايزورها يا كاربران ناظر

براي مديريت پايگاه‌داده اوراكل دو حساب از پيش‌تعريف‌شده به نام‌هاي SYS و SYSTEM وجود دارد. در نسخه‌هاي قبل (10g و قبل‌تر) به ازاي هر يك از اين حساب‌ها، دو رمز پيش‌فرض وجود داشت. رمز پيش‌فرض كاربر SYS، عبارت CHANGE_ON_INSTALL و رمز پيش‌فرض كاربر SYSTEM، عبارت MANAGER بود. يكي از مهم‌ترين وظايف هنگام ايجاد پايگاه‌داده با دستور CREATE DATABASE، اين است، از عبارت[uSER SYS IDENTIFIED BY [password استفاده كرده و با درج رمز دلخواه به جاي عبارت password، رمز ورود اين كاربر را تغيير دهيد. درباره كاربر SYSTEM نيز از عبارت مشابه[uSER SYSTEM IDENTIFIED BY [password، استفاده كنيد. تعداد زيادي ابزار هك وجود دارد كه رمزهاي پيش‌فرض مربوط به كاربران سيستمي نرم‌افزارهاي مختلف را نگهداري مي‌كنند. اين دو حساب كاربري، قدرت و اختيارات بسيار نامحدودي دارند و بهتر است براي انجام فعاليت‌هاي مديريت روزانه يك حساب كاربري ديگر ايجاد كرده و از آن استفاده كنيد و به‌طور خلاصه از به‌کارگيري اين‌گونه حساب‌هاي كاربري، اجتناب كنيد.

 

كليدهاي ذخيره‌شده در Oracle Wallet

حالت پيش‌فرض

 

\HKEY_CURRENT_USER\SOFTWARE\ORACLE\WALLETS\DEFAULT

 

كيف جيبي رمزنگاري‌شده

 

\HKEY_CURRENT_USER\SOFTWARE\ORACLE\WALLETS\DEFAULT\EWALLET.P12

 

كيف جيبي اوراكل در حالت پيچيده

 

\HKEY_CURRENT_USER\SOFTWARE\ORACLE\WALLETS\DEFAULT \CWALLET.SSO

 

 

 

براي كمك به ساده‌سازي مجوزهاي اعطايي به كاربران، مفهومي ارائه شده كه در آن مجموعه‌اي از مجوزها در قالب يك گروه ايجاد مي‌شود. به اين گروه‌ها، Role مي‌گويند. مي‌توان Roleها را با استفاده از عبارت GRANT به كاربران اعطاء كرد. تصور كنيد كه قرار است تا دسترسي صد كاربر به پايگاه‌داده را كنترل كنيد و اين كاربران در ده دپارتمان مختلف مشغول كار هستند. اگر قرار باشد بدون استفاده از Role، به هر كاربر فقط پنج مجوز متفاوت ارائه دهيد، در اين صورت با سناريوي ترسناكي مواجه خواهيد بود و اگر قرار باشد شما مجوزهاي همه كاربران مربوط به يك دپارتمان را تغيير دهيد. شرايط به مراتب بدتر خواهد بود در چنين شرايطي استفاده از Roleها به كار مي‌آيد. مي‌توانيد براي هر دپارتمان يك Role تعريف کنيد، پس از آن تغيير مجوزهاي همه اعضاي يك دپارتمان، به سادگي اعطا يا سلب مجوز از آن Role است. يكي ديگر از كارهاي نقش‌ها، زماني است كه مي‌خواهيد از چندين برنامه استفاده كنيد. اصل پايه همان مفاهيمي است كه گفته شد، اما دليل استفاده از نقش‌ها كمي تغيير مي‌كند. برنامه‌اي را تصور كنيد كه از جدولي به نام Offers استفاده مي‌كند. با استفاده از نقش‌ها در اين برنامه، مي‌توان به سادگي دسترسي را با توجه به كاربري كه به پايگاه‌داده وارد شده‌است، محدود كرد.

 

به‌عنوان مثال، براي آن‌كه يك كاربر معمولي وارد محيط برنامه مي‌شود، مي‌توان نقشي متناسب با اين نوع كاربر ايجاد و به او نسبت داد. البته، اين اصل به شما امكان مي‌دهد تا تنها با استفاده از عبارت SET ROLE به‌صورت آني مجوزهاي دسترسي را تغيير دهيد. قوي‌ترين نقش در پايگاه‌داده، DBA است (يعني مدير پايگاه‌داده يا Database Administrator). اين نقش به صورت ضمني به حساب‌هاي كاربري SYS و SYSTEM، اعطا شده‌است. البته، بايد دوباره يادآوري کرد كه كنترل دسترسي به اين دو حساب بسياري ضروري است. در نسخه‌هاي قديمي اوراكل (8i و قبل از آن) يك كاربر خاص با نام INTERNAL وجود داشت كه مي‌توانست بدون درنظرگرفتن وضعيت MOUNT يا NOMOUNT بودن پايگاه‌داده، به آن دسترسي داشته‌باشد. رمز پيش‌فرض اين حساب كاربري، عبارت Oracle بود. اين حساب كاربري در Data Dictionary نگهداري نمي‌شد و محل نگهداري آن فايل رمزهاي اوراكل بود. در نسخه قبلي اواركل، مكانيزم INTERNAL با مجوزهاي SYS و SYSDBA جايگزين شد.

 

مجوزهاي اعطا شده به SYSDBA، براي او اين امكان را فراهم مي‌آورد تا فرآيندها و عمليات‌هايي نظير روشن و خاموش‌كردن پايگاه‌داده، تهيه نسخه پشتيبان و بازيابي آن و ايجاد پايگاه‌داده را انجام دهد. فهرستي از همه كاربراني كه مجوزهاي SYSDBA يا SYSOPER را دارند در v$defile users به‌وجود مي‌آيد. نقش با نام SYSDBA، محدوديت‌هايي دارد. نمي‌توان اين نقش را به كاربر با نام public انتساب كرد. مسئله ديگر هنگام ايجاد پايگاه‌داده وجود دارد، فرآيند ايجاد خودكار نقشي به نام PUBLIC است. در سناريوهايي كه براي هك‌كردن پايگاه‌داده مطرح مي‌شود، استفاده‌هاي زيادي از اين كاربر مي‌شود. اين سوء‌استفاده به دو دليل شايع است. اول آن‌كه بعضي‌ها اصلاً نمي‌داند چنين كاربري وجود دارد، زيرا اين كاربر در dab_roles مشاهده نمي‌شود. دليل دوم و مهم‌تر آن‌كه تغيير مجوزهاي اين نقش، در همه ساير كاربران، اعمال مي‌شود. اين نقش زماني هر زمان كه يك پايگاه‌داده جديد ايجاد شود، به صورت خودكار ايجاد مي‌شود (اوراكل براي ايجاد يك پايگاه‌داده جديد از فايل متني sql.bsq استفاده مي‌كند). براي تعيين نوع حسابي كه يك كاربر از طريق آن به پايگاه‌داده متصل شده مي‌توان در SQL*Plus از عبارت SHOW USER استفاده كرد. در استفاده از اين نوع حساب‌ها، بايد مسئله ديگري را نيز در نظر داشت. اشياي متعلق به كاربر SYS را نمي‌توان از طريق ابزارهاي استاندارد، نظير exp و imp استخراج كرد. قانون ديگري وجود دارد كه مي‌گويد، نمي‌توان هيچ شيء جديدي را در شِماي SYS ايجاد كرد. شِماي SYS، وظيفه ذخيره اشياي Data Dictionary را بر عهده دارد و اين شما به طور كامل توسط پايگاه‌داده، مديريت مي‌شود.

 

 

منبع : ماهنامه شبكه

  • Like 1
لینک به دیدگاه

نقش‌هاي مرتبط با امنيت برنامه

نقش‌هاي مرتبط با امنيت برنامه‌ها را مي‌توان تنها از طريق اعطاي مجوز بسته‌هاي PL/SQL، به كاربران، فعال كرد. براي تضمين سطح امنيتي بالاتر، بهتر است كه رمزهاي برنامه‌ها در كد برنامه يا در جدول‌ها نگهداري نشود. براي رسيدن به اين مقصود، لازم است تا يك نقش كاربري با سطح امنيتي مناسب ايجاد كرد. اين كار را مي‌توان با استفاده از بسته‌هاي PL/SQL كه مجوز كافي را براي فعال‌كردن نقش‌ها دارند، انجام داد. اين مفهوم مي‌تواند از طريق افزودن كنترل‌هاي سمت برنامه به منظور بررسي مجوزها توسط برنامه، بهبود يابد. البته، پياده‌سازي مكانيزم‌هاي اعطاي مجوز در سمت كلاينت هميشه قابل دورزدن است. مهم‌ترين دليل براي اين مسئله، آن است كه مي‌توان با استفاده از محيط sqlplus يا هر ابزار ديگر دسترسي به پايگاه‌داده در سمت مشتري، در عمل برنامه و كنترل‌هاي امنيتي آن‌را دور زد. دليل ديگر استفاده از مكانيزم‌‌هاي امنيتي در سمت سرور، قابليت استفاده دوباره از آن‌ها است.

 

در صورتي كه برنامه را تغيير دهيم، لازم نيست تا سيستم امنيتي كنترل دسترسي را دوباره پياده‌سازي كنيم. كافي است تا يك‌بار آن‌را در سمت سرور ذخيره كرده و دوباره توسط برنامه‌هاي مختلف، مورد استفاده قرار دهيم. همچنين هنگام استفاده از ابزارهاي امنيتي سمت سرور پايگاه‌داده، مي‌توانيم همه قابليت‌هاي امنيتي را كه اوراكل ارائه مي‌دهد، يعني امكان كنترل دسترسي دقيق و همراه با جزئيات نقش‌ها، رويه‌هاي ذخيره‌شده و... را با موفقيت انجام دهيم. به همين دليل، استفاده از ابزارها و روش‌هاي متفرقه خود يك مشكل امنيتي بالقوه به شمار مي‌رود.اوراكل پيشنهاد مي‌كند، بين كاربران برنامه و پايگاه‌داده، تناظر يك‌به‌يك داشته باشيم. به نحوي كه به ازاي هر كاربر برنامه، يك كاربر پايگاه‌داده ايجاد شود. اين كار به ما امكان مي‌دهد تا از قابليت‌هاي امنيتي ارائه‌شده در اوراكل، به خوبي استفاده كنيم، هرچند كه اين مسئله در حال حاضر درباره بسياري از برنامه‌ها، رعايت نمي‌شود. بسياري از اين برنامه‌ها از يك كاربر با سطح دسترسي بالا براي اتصال به پايگاه‌داده استفاده مي‌كنند. اين روش را مدل Big Application User يا «يك كاربر بزرگ» مي‌نامند.

 

در صورت استفاده از اين روش براي دسترسي به پايگاه‌داده، با مسائلي مواجه مي‌شويد. به‌عنوان مثال، به‌منظور شناسايي كارهاي انجام‌شده توسط هر كاربر توسط برنامه، راه‌حلي وجود ندارد و پايگاه‌داده نيز نمي‌تواند كاربران را از يكديگر تشخيص دهد. در اين صورت ما مجبوريم تا مدل شناسايي كاربر ابداعي توسط خودمان را استفاده كنيم. دليل و نقيصه ديگر مرتبط با روش تك‌كاربره، احتمال عدم امكان استفاده از مكانيزم Advanced Security Authentication است. اين روش شامل استفاده از توكن‌هاي SSL و ساير موارد است. دليل سوم براي ردكردن روش تك‌كاربره مذكور، كارايي كمتر آن در مقايسه با حالتي است كه از نقش‌ها استفاده مي‌كنيد. اين محدوديت را مي‌توانيد با استفاده از دستور آني Set Role برطرف كنيد. دليل آخر كه از درجه اهميت بالايي برخوردار است، اين است كه روش اتصال همه كاربران توسط يك نام كاربري، مانع استفاده از سيستم مديريت هويت اوراكل «Oracle Identity Manager» مي‌شود [در سيستم مذكور همه كاربران پايگاه‌داده‌هاي مختلف سازمان در يك‌جا تجميع شده و پايگاه‌داده اوراكل از طريق نگاشت كاربري محلي هر پايگاه‌داده به كاربران متمركز در اين سيستم مي‌تواند فرآيند كنترل دسترسي به منابع را آسان‌تر و دقيق‌تر انجام دهد]. مباني پياده‌سازي مكانيزم Secure Application Role به اين‌ترتيب است كه بتوان هويت هر كاربر را به‌طور جداگانه با نگاه به اطلاعات زمان ارتباط او به پايگاه‌داده شناسايي كرد.

 

همچنين، نقش‌هاي برنامه‌ها را مي‌توان از طريق كنترل IP و آدرس كامپيوتر مورد استفاده توسط كاربر براي ارتباط با پايگاه‌داده كنترل كرد. پردازش‌ها و سرويس‌هاي مرتبط به هر يك از نقش‌هاي برنامه‌ها را مي‌توان در يك بسته جداگانه پياده‌سازي كرد. اصل پايه در استفاده از نقش‌هاي امن براي برنامه‌ها، اين است كه بتوانيم مجوزها را به ازاي كاربران مختلف ارائه دهيم. اجازه دهيد، به جزئيات نحوه استفاده از نقش‌ها بيشتر توجه كنيم. از نقش‌ها استفاده مي‌شود تا فرآيند اعطا و سلب مجوز از كاربران كه دسترسي آن‌ها به اشياي پايگاه‌داده را كنترل مي‌كند، به روش ساده‌تري انجام شود (به‌عنوان مثال، كنترل دسترسي به برنامه‌هاي SQL). يك پرس‌وجوي جالب ديگر وجود دارد كه مي‌تواند مجوزهاي پيش‌فرض اعطايي به كاربران را به جز مجوزهاي اعطاشده به PUBLIC نمايش دهد. توصيه مي‌شود كه مجوزها از كاربر PUBLIC، سلب شود. با اين كار مي‌توانيم مهم‌ترين عامل هك‌شدن پايگاه‌داده را برطرف كنيم، زيرا در فرآيند هك، هدف هك‌كننده دسترسي به بالاترين سطح از مجوزها يا قوي‌ترين نقش‌ها در پايگاه‌داده است.

 

مكانيزم Oracle Advanced Security

OAS مجموعه‌اي از قابليت‌هاي امنيتي است كه با Oracle Net Services ،Oracle Database ،Oracle Appliation Server و Oracle Identity Manager در ارتباط است. اين مكانيزم، مجموعه‌اي از ابزارهاي مقابله را در برابر تهديدهاي امنيتي معمول ارائه مي‌دهد. تهديدهاي معمول عبارتند از: دسترسي به اطلاعات در حال مبادله در سطح شبكه (eavesdropping)، سرقت اطلاعات، دستكاري اطلاعات، تغيير اطلاعات هويتي يك كاربر و ساير تهديدهاي مرتبط با كلمه عبور.دسترسي به اطلاعات در حال مبادله در سطح شبكه عبارت است از ورود مخفيانه و غيرقانوني در ارتباطات بين دو پايانه در سطح شبكه. اين روش توسط نفوذگرها و در صورتي كه مبادله داده در سطح يك شبكه ناامن، صورت گيرد، كاربرد دارد. بايد توجه داشت كه در يك محيط نا‌امن دسترسي به ارتباطات محرمانه امكان‌پذير است. دستكاري داده عبارت است از، تغيير داده‌ها هنگام انتقال آن‌ها از يك سايت به سايت ديگر. تغيير هويت كاربر نيز به اين معنا است كه نفوذگر سعي مي‌كند تا وانمود كند كه او كس ديگري است، به اين معنا كه نفوذگر اطلاعات هويتي شخص ديگري را سرقت كرده و از آن‌ها سوءاستفاده مي‌كند. نوع ديگري از حمله‌ها كه در همين گروه دسته‌بندي مي‌شود، به اين صورت است كه نفوذگر مسير ارتباطي شخص ديگري را سرقت مي‌كند.

 

احراز هويت با استفاده از مكانيزم OAS SSL

مكانيزم پيشرفته امنيتي در اوراكل (Oracle Advanced Security) هم از استاندارد SSL (سرنام Secure Socket Layers) و هم از استاندارد TLS (سرنامTransport Layer Security) پشتيباني مي‌كند. پروتكل SSL يك روش احراز هويت و رمزنگاري است كه سرويس‌هاي امني را براي كلاينت‌هاي پروتكل TCP فراهم مي‌كند. اين پروتكل براي اولين بار توسط Netscapce Communication Company ارائه شد تا سطح امنيت پروتكل HTTP را در ارتباط بين كلاينت و سرور، ارتقا دهد. در حال حاضر نيز اين مورد مهم‌ترين كاربرد پروتكل SSL است. پروتكل SSL از بعضي جهات مبتني بر استاندارد RFC-2246 گروه IETF است كه نام ديگر آن TLS يا Transparent Layer Security است. هر يك از طرفين ارتباط با استفاده از يك تأييدنامه ديجيتال(يك بلاك از داده رمزنگاري‌شده)، هويت خود را اثبات مي‌كند. اين تأييدنامه ديجيتال، توسط نفر سوم يا ابزار مستقل كه مورد اعتماد است، بررسي مي‌شود و سپس اين نفر سوم با ارائه يك كليد رمزنگاري‌شده، برقراري ارتباط بين دو طرف را تأييد مي‌كند.

 

نفر سوم را گروه بررسي تأييدنامه‌هاي ديجيتالي مي‌نامند كه مي‌توانيد با مراجعه به آدرس

برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید.
جزئيات بيشتري را درباره آن‌ها مشاهده كنيد. استفاده از اين قابليت، ارتباطات رمزنگاري‌شده بين كلاينت و سرور را تضمين مي‌كند و همچنين مي‌توان از آن براي تأييد برقراري يك ارتباط امن بين كلاينت و سرور نيز استفاده كرد. از اين قابليت در مواردي استفاده مي‌شود كه يك نفوذگر سعي مي‌كند تا با نظارت مداوم به ترافيك عبوري از سطح شبكه يا به اصطلاح sniff كردن خطوط ارتباطي، اطلاعاتي را به دست آورده و از آن‌ها استفاده كند. اين روش همچنين ميزان اعتماد به فرآيند احراز هويت را افزايش مي‌دهد. ارتباطات مبتني بر SSL شركت اوراكل، در چند مرحله اساسي انجام مي‌شود. همچنين هر ارتباط مبتني بر SSL دو قسمت عمده دارد. قسمت اول را به اصطلاح SSL Handshake مي‌گويند و قسمت دوم، فرآيند اصلي احراز هويت است. قسمت SSL Handshake، شامل مراحل زير است. كلاينت و سرور، مجموعه‌اي از فرآيندهاي احراز هويت، رمزنگاري و الگوريتم‌هاي بررسي جامعيت داده‌هاي مبادله شده را آغاز مي‌كنند كه در مبادله پيام‌ها، بين نودهاي شبكه به كار مي‌رود. به‌عنوان مثال، در طول يك فرآيند SSL Handshake، دو نود با هم در مورد اين‌كه كدام مجموعه از استانداردهاي محيط وب (Cipher Suite) را هنگام مبادله بسته‌هاي داده‌ها و پاسخ به درخواست‌ها، مورد استفاده قرار دهند. سرور، تأييدنامه خود را براي كلاينت ارسال مي‌كند و كلاينت تأييد مي‌كند كه تأييدنامه سرور توسط يك CA معتبر، بررسي و تأييد شده‌ است. اين فرآيند، هويت سرور را تأييد مي‌كند. در صورتي‌كه لازم باشد تا هويت كلاينت نيز تأييد شود، كلاينت نيز تأييدنامه خود را براي سرور مي‌فرستد و سرور نيز بررسي مي‌كند كه تأييدنامه كلاينت توسط يك CA معتبر، تأييد شده‌باشد.

عبارات پركاربرد در رمزنگاري

Encrypt: دستكاري داده و غيرقابل تشخصي كردن آن

Decrypt: منظم كردن دوباره داده به صورت حالت اوليه آن

Cipher: معادل با كلمه الگوريتم

Certificate Authority يا CA : نفر سوم و معتمد براي دو طرف يك جلسه ارتباطي نظير Verisign، CyberTrust يا RSA

Digital Certificate يا تأييدنامه ديجيتالي: تركيبي از زوج كليد محرمانه و عمومي كه كليد محرمانه بايد توسط CA مورد تأييد باشد.

سپس كلاينت و سرور، اطلاعات اصلي را با استفاده از رمزنگاري كليد عمومي انجام مي‌دهند. هر يك از دو طرف بر مبناي اين اطلاعات، يك كليد مرتبط با Session يا جلسه ارتباطي ايجاد شده را ايجاد مي‌كنند. كليد جلسه در محدودترين حالت، بين دو طرف مبادله مي‌شود. اين كليد در طول آن جلسه ارتباطي مورد استفاده قرار مي‌گيرد. اين كار امنيت ارتباط را بالا مي‌برد، زيرا كليد جلسه به طور مداوم تغيير مي‌كند. در نتيجه، احتمال لو رفتن و سوء استفاده از اين كليد، برطرف مي‌شود. مرحله بعدي، فرآيند احراز هويت است. ابتدا كاربر از طريق Oracle Net و با استفاده از SSL، ارتباطي را با سرور برقرار مي‌كند. ارتباط SSL، يك درخواست ارتباطي از كلاينت به سرور ايجاد مي‌كند و اگر اين درخواست با موفقيت انجام پذيرد، سرور تأييد مي‌كند كه كاربر، مجوز لازم را براي ارتباط با پايگاه‌داده دارد. براي انجام صحيح اين مراحل در محيط اوراكل، يك زيربناي ساختاري با نام Public Key وجود دارد (كه با نام PKI شناخته مي‌شود). PKIها برقراري ارتباط قابل‌اعتماد را براي كل سازمان تضمين مي‌كنند. PKI مورد استفاده توسط اوراكل بر مبناي استاندارد Public Key Cryptography Standards كه توسط گروهRSA Security، ارائه مي‌شود، ايجاد شده‌است. PKI، يك سيستم ارائه كليد عمومي است كه بر مبناي استفاده از قابليت يك‌بار تأييد و ارائه شناسه ID ديجيتال يا رمزنگاري به وسيله كليد همزمان انجام مي‌شود. اين مكانيزم به يك كليد محرمانه نياز دارد كه در اختيار دو يا تعداد بيشتري نود قرار مي‌گيرد و به عبارتي كليد عمومي به صورت رايگان در اختيار همه قرار مي‌گيرد.

پشتيباني استاندارد رمزنگاري با استفاده از كليد عمومي (PKCS)

شركت RSA Data Security، ارائه‌دهنده اين استاندارد است. RSA، بخشي از اتحاديه EMC است و نام كامل آن، «توليدكنندگان سيستم‌هاي رسانه‌هاي ذخيره‌سازي و مديريت نرم‌افزار و امنيت»، است. شركت RSA مالك و ابداع‌كننده الگوريتم كليد ناهمزمان RSA است. تحقيقات اين شركت به ارائه استاندارد PKCS منجر شد. اين مورد يك استاندارد صنعتي را تعريف مي‌كند كه استفاده از تكنيك‌هاي مبتني بر ارائه كليد عمومي را تشويق و تسهيل مي‌كند. آشناترين موارد در استفاده‌هاي مورد نظر ما، PKCS#15، PKCS#12 و 10 است. استاندارد PKCS#15 استانداردي است كه كاربران را قادر مي‌سازد تا توكن‌هاي رمزنگاري شده را براي معرفي خود به چندين برنامه سازگار با اين استاندارد، معرفي كنند، بدون توجه به آنكه خود برنامه از چه روشي براي رمزنگاري استفاده مي‌كند. از PKCS#12 نيز به عنوان يك فرمت استاندارد براي ذخيره تأييدنامه‌هاي نوع X.509 و كليدهاي محرمانه استفاده مي‌شود. در نهايت، از PKCS#10 براي ايجاد درخواست دريافت تأييدنامه استفاده مي‌شود. ذخيره‌سازي اطلاعات هويتي در قطعات سخت‌افزاري نيز با ويژگي‌هاي استاندارد PKCS#11 مطابقت دارد.

اين كليد عمومي براي رمزنگاري پيام‌ها به كار مي‌رود كه پيام رمزنگاري شده تنها توسط كليد محرمانه مرتبط با آن كليد عمومي، قابل رمزگشايي است. اين كليد محرمانه به همراه ساير اطلاعات هويتي با رعايت اصول امنيتي در يك محيط رمزنگاري‌شده كه Wallet [كيف جيبي] نام دارد، نگهداري مي‌شود. Wallet، عبارت است از يك ساختار داده‌اي كه براي نگهداري و مديريت اطلاعات هويتي هر يك از مدخل‌ها، به كار مي‌رود. سرويسي به نام WRL( سرنامWallet Resource Locator ) يا «مكان‌ياب منبع Wallet» همه اطلاعات لازم را براي مكان‌يابي Wallet انجام مي‌دهد.

 

الگوريتم كليد عمومي، نقطه ضعفي دارد كه در صورت عدم تأييد توسط طرف دوم ارتباط، ممكن است مورد سوء استفاده قرار گيرد. اين نوع حمله را به اصطلاح man-in-the-middle مي‌نامند. ايده و الگوي انجام اين نفوذ، به اين ترتيب است كه نفوذگر، كليد عمومي ارسالي توسط فرستنده را شناسايي و ذخيره مي‌كند. سپس از كليد عمومي خود براي ارسال پيام به گيرنده، استفاده مي‌كند. با دريافت اين كليد عمومي توسط گيرنده، نفوذگر مي‌تواند پيام را با كليد عمومي فرستنده، دوباره به رمز تبديل كرده و آن‌را براي فرستنده، ارسال كند. اين فرآيند به نفوذگر اجازه مي‌دهد تا به اطلاعات در حال مبادله در سطح شبكه، دسترسي داشته‌باشد. براي مقابله با اين روش حمله، لازم است كه هويت مالك كليد عمومي از طريق احراز هويت، تأييد شود. در اين مرحله است كه نياز به CA مطرح مي‌شود. وظيفه CA، صدور تأييدنامه براي كليد عمومي است.

 

اين تأييدنامه شامل اطلاعات هويتي و امنيتي اصلي كاربر است كه پيام محتوايي آن توسط كليد محرمانه شخص، رمز مي‌شود. اين كار باعث مي‌شود مطمئن شويم كه كليد ارسالي توسط CA ارسال‌شده است. در محيط اوراكل، مؤلفه‌هاي PKI نهاد صدور تأييدنامه، خود تأييد نامه، فهرست تأييدنامه‌هاي نامعتبر، Walletها و قطعات امنيتي و سخت‌افزاري را شامل مي‌شود.

 

CA يك تأييدنامه صادر مي‌كند كه توسط كليد محرمانه خودش رمزنگاري شده‌است. براي اطمينان از اين‌كه تأييدنامه توسط CA صادر شده، از كليد عمومي CA كه در اختيار همه است، براي رمزگشايي تأييدنامه استفاده مي‌كنيم. تأييدنامه تنها زماني ايجاد مي‌شود كه كليد عمومي آن كلاينت توسط يك CA معتبر، تأييد شده‌باشد. فهرست نامه‌هاي بي‌اعتبار يا CLR، جدولي است كه CA در آن اطلاعات مربوط به CAهاي منقضي‌شده را نگهداري مي‌كند. سرور براي يافتن CLR آدرس‌هاي زير را جست‌وجو مي‌كند: سيستم فايل‌محلي، Oracle Internet Directory و مركز توزيع CLR. ازOracle Wallet براي توليد زوج‌هاي كليد عمومي و محرمانه و ايجاد درخواست براي تأييدنامه، استفاده مي‌شود. اين سرويس، همچنين تأييدنامه كاربر را كه با كليد محرمانه مطابقت دارد، نگهداري مي‌كند و تأييدنامه‌هاي معتبر را مورد استفاده قرار مي‌دهد. در نهايت اين‌که قطعات سخت‌افزاري و امنيتي، قطعاتي هستند كه اطلاعات رمزنگاري شده نظير كليد محرمانه را ذخيره مي‌كنند يا آن‌كه به منظور برداشتن بار پردازش‌هاي RSA، فرآيند رمزنگاري را خودشان انجام مي‌دهند. دو نوع از اين تجهيزات وجود دارد. تجهيزات سمت سرور (كه كليدها را نگهداري مي‌كنند) و تجهيزات سمت كلاينت نظير دستگاه‌هاي کارت‌خوان هوشمند. براي ارتقاي امنيت، مي‌توان از ساير روش‌هاي احراز هويت نظير RADIUS و kerberos، استفاده كرد. استفاده از SSL به همراه Firewall، مسائل خاص خود را دارد.

 

در صورتي که Firewall مورد استفاده فرآيند بررسي محتواي packet را انجام ‌دهد، بايد اين قابليت Firewall را غيرفعال كنيم، در غير اين صورت نمي‌توانند محتواي بسته را بخوانند. در اين موارد، كيت Oracle Net Firewall Proxy مي‌تواند بعضي‌ از پشتيباني‌هاي مورد نياز را براي كنترل ترافيك پايگاه‌داده ارائه دهد. قوانين ايالات متحده فرآيند رمزنگاري دو مرحله‌اي را ممنوع كرده‌است. به همين دليل، كيت فوق نمي‌تواند به طور همزمان با رمزنگاري به روش SSL يا ساير روش‌هاي رمزنگاري به كار رود.

  • Like 1
لینک به دیدگاه

طرز کار احراز هويت با استفاده از OAS SSL

وقتي كه قابليت‌هاي پيشرفته امنيتي را پياده‌سازي مي‌كنيد، چندين گزينه پيش روي شما است. مي‌توانيد از نرم‌افزارهاي جانبي مانند Kerberos يا RADIUS استفاده كنيد. همچنين مي‌توانيد از مكانيزم‌هاي SSL استفاده كنيد. اوراكل مجموعه‌اي از ابزارهاي خاص را دارد كه براي تأييدنامه‌ها، Walletها و فهرست تأييدنامه‌هاي نامعتبر را مديريت مي‌كند. Oracle Wallet Manager، برنامه‌اي است كه اطلاعات امنيتي و محرمانه كاربر را در فضايي به نام كيف شخصي هر كاربر، نگهداري مي‌كند. اين سيستم مديريتي كاربردهاي مختلفي دارد، به‌عنوان مثال، براي توليد زوج‌هاي كليد عمومي و محرمانه استفاده مي‌شود، اطلاعات هويتي كاربر را نگهداري كرد، درخواست تأييدنامه را توليد و تأييدنامه‌هاي مربوط به ارائه‌دهندگان تأييدنامه را نگهداري و مديريت مي‌کند، كيف‌هاي شخصي كاربران را از LDAP Directory، بارگذاري يا به آن ارسال مي‌کند يا Walletهايي را به منظور ذخيره اطلاعات هويتي مربوط به سخت‌افزارهاي نگهداري اطلاعات هويتي محرمانه ايجاد مي‌کند. مطابق شکل1، مي‌توان در يونيكس از مسير $ORACLE_HOME/bin/owm، به OWM دسترسي داشت. Oracle Net Manager، يكي ديگر از ابزارهاي مهم است كه مي‌توان به آن اشاره كرد.اين ابزار يكي از ابزارهاي معمول براي مديريت پايگاه‌داده است. البته، زماني كه سرويس‌هاي امنيت پيشرفته اوراكل نصب شود،Oracle Net Manager به شما اجازه مي‌دهد تا فرآيندهاي احراز هويت قابل اعتمادتري ايجاد كنيد و امكان رمزنگاري در سطح شبكه و فرآيند كنترل Check sum را مطابق شکل 2، به منظور بررسي جامعيت داده، انجام دهيد.

برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید.

شكل 1- تصويري از پنجره Oracle Wallet

برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید.

شكل 2- برنامه Oracle Network Manager

 

Oracle Wallet Manager

از Wallet Manger به عنوان فضايي براي نگهداري، مديريت و ويرايش اطلاعات احراز هويت و اطلاعات هويتي، استفاده مي‌شود. از جمله آيتم‌هاي ذخيره‌شده مي‌توان به كليدهاي محرمانه، تأييدنامه‌ها، تأييدنامه‌هاي قابل‌اعتماد و مورد نياز براي SSL، اشاره كرد. همچنين مي‌توان از Wallet Manger به عنوان محل ذخيره‌سازي اطلاعات هويتي سخت‌افزارهاي امنيتي استفاده كرد. براي محافظت از داده‌ها، بايد رمزي انتخاب شود كه با قوانين توليد رمز قابل‌اعتماد، سازگار باشد، يعني حداقل هشت كلمه بوده و تركيبي از حروف و اعداد باشد. مي‌توان با استفاده از Wallet Manger تأييدنامه‌ها (X.509) را تحت مجوز رمزنگاري مدل Triple-DES ذخيره كرد. اوراكل براي دسترسي بهينه به Wallet و مديريت آن، گزينه‌هايي را در اختيار شما قرار مي‌دهد تا پروفايل خود را در رجيستري ذخيره كنيد.

 

OWM شما را قادر مي‌كند تا چندين تأييدنامه را در هر يك از Walletها ذخيره كنيد، به طوري كه اين تأييدنامه‌ها از رمزنگاري و امضاي نوع S/MIME و امضاي كد و امضاي تأييدنامه ارسالي توسط CA پشتيباني كند. فرآيند اخذ يك تأييدنامه جديد در چندين مرحله انجام مي‌شود. در اولين مرحله، يك زوج كليد محرمانه/عمومي ايجاد مي‌شود. كليد محرمانه در wallet باقي مي‌ماند و كليد عمومي به همراه يك درخواست براي آدرسي كه اعتبار تأييدنامه‌ها را مديريت مي‌كند، ارسال مي‌شود. زماني كه گروه فوق تأييدنامه را مشاهده و امضاء كند، مي‌توان اين كليد عمومي تأييدشده را در Wallet و در كنار كليد محرمانه مرتبط با آن ذخيره كرد. يك نسخه از X.509 وجود دارد كه سه كليد توليد مي‌كند تا از آن در تأييد Oracle PKI استفاده کند. Oracle Wallet همچنين از LDAP پشتيباني مي‌كند. اين قابليت به كاربران امكان مي‌دهد تا Wallet يا اطلاعات محرمانه خود را از مسيرهاي LDAP دريافت كنند. اين كار به كاربران امكان مي‌دهد تا به Walletهايي مربوط به ابزارها يا مستقر در آدرس‌هاي مختلف دسترسي داشته‌باشند. تنها مي‌توانWalletهاي عملياتي را در LDAP بارگذاري كرد. براي محافظت از دسترسي به Walletهاي ذخيره‌شده در LDAP، از كلمات رمز استفاده مي‌شود، كه يكي براي كنترل دسترسي به مسير LDAP و ديگري براي دسترسي به محتويات wallet است. پيشنهاد مي‌شود كه از دو رمز مجزا كه هيچ‌گونه ارتباط منطقي با هم نداشته‌باشند، استفاده كنيد. خلاصه‌اي از امكانات و كارهاي ممكن در ارتباط با Walletها عبارتند از: ايجاد Wallet (به صورت استاندارد يا ذخيره‌شده روي يك قطعه امنيتي، سخت‌افزاري [PKCS #11])، بازكردن، بستن، بارگذاري يا دريافت از دايركتوري‌هاي LDAP، ذخيره، ذخيره با نام جديد، حذف، تغيير رمز، ارائه امكان login به صورت خودكار و درنهايت مديريت تأييدنامه‌ها.

 

اجازه دهيد به آخرين مورد نگاه دقيق‌تري داشته‌باشيم. دو نوع تأييدنامه قابل مديريت وجود دارد. اين تأييدنامه‌ها عبارتند از: تأييدنامه‌هاي كاربران و تأييدنامه‌هاي قابل اطمينان يا تأييد شده توسط شركت‌هاي بررسي و مديريت تأييدنامه‌ها. اولين مرحله كار عبارت است از درخواست يك تأييدنامه (تأييدنامه‌ها با توجه به طول كليد انواع مختلفي را از 512 بيت تا 4096 بيت شامل مي‌شوند). بعد از آن‌كه شركت مسئول براي ارائه تأييدنامه‌هاي معتبر، درخواست شما را بررسي كرده و قبول كرد، مي‌توانيد تأييدنامه را در Wallet بارگذاري كنيد.

 

رمزنگاري شفاف داده

رمزنگاري شفاف داده يا TDE (سرنامTransparent Data Encryption) به منظور بهبود امنيت پايگاه‌داده در سطح سيستم‌عامل، به كار مي‌رود. اين قابليت مي‌تواند از پايگاه‌داده نوع Virtual Private Database محافظت كند. نوعي از حمله وجود دارد كه از طريق دسترسي به داده‌هاي خام ذخيره‌شده در Datafileها انجام مي‌شود. داده‌هاي رمزنگاري شده به روش Transparent Data Encryption مي‌تواند در موارد قانوني مفيد باشد. همچنين نيازي نيست كه از كاربران بخواهيم تا كليدهاي رمزنگاري را در جايي ذخيره كنند. همچنين اين روش، فرآيند توليد را آسان مي‌كند، زيرا لازم نيست در برنامه‌هايي كه به داده دسترسي دارند، تغييرات زيادي ايجاد شود. مواردي وجود دارد كه در آن‌ها استفاده از TDE، توصيه نمي‌شود (شامل انديس‌ها، BLOBها و ابزارهايي با دسترسي به داده خام). در حالي‌كه TDE خوب است اما، بهترين راه‌حل به شمار نمي‌رود. كليد اصلي به صورت رمزگشايي‌شده، در ناحيه SGA ذخيره مي‌شود.

 

اين مسئله بايد به عنوان يك اخطار تلقي شود، زيرا حتي پيچيده‌ترين مكانيزم‌هاي امنيتي و دفاعي نيز مي‌توانند در برابر تلاش نفوذگران باهوش، نواقص خود را نمايان كنند. اجازه دهيد ابتدا آنچه را مي‌دانيم، مرور كنيم: كاربرد Wallet يا كيف‌جيبي، براي اين منظور است كه كليد اصلي را در آن، ذخيره كنيم. براي كار كردن با Wallet، دستورات خاصي وجود دارد. براي ساده‌ كردن مثال اين مقاله فرض مي‌كنيم كه براي بازكردن و دسترسي به Wallet، تنها يك كليد وجود دارد. همچنين قابليتي وجود دارد كه امكان Login خودكار به Wallet فراهم مي‌كند. Mkwallet، يك ابزار خط فرمان است كه امكان مديريت Wallet را بدون نياز به رابط كاربري گرافيكي فراهم مي‌كند. درست بعد از تنظيم Wallet و بازكردن آن با استفاده از كليد اصلي، ما مي‌توانيم رمزنگاري شفاف داده را ايجاد كرده و آغاز كنيم. براي ايجاد يك كليد اصلي جديد از دستور ALTER SYSTEM SET ENCRYPTION KEY IDENFIED BY password ، استفاده كنيد. براي در دسترس بودن داده رمزنگاري شده نيز از دستور ALTER SYSTEM SET WALLET OPEN IDENTIFIED BY password، استفاده كنيد. TDE، درست بعد از باز كردن Wallet، از دستورات استاندارد نوع DDL نظير CREATE TABLE table_name (... و(­column_name column_type ENCRYPT) يا دستور ALTER TABLE table_name MODIFY (column_name(...وcolumn_type ENCRYPT استفاده مي‌شود. دسترسي به همه ستون‌هاي رمزنگاري‌شده در پايگاه‌داده از طريق جمله ALTER SYSTEM SET WALLET CLOSE انجام مي‌شود.

 

براي دسترسي به اطلاعات درباره ستون‌هايي از پايگاه‌داده كه رمزنگاري‌شده‌اند، مي‌توانيد از ديدهاي كاربري زير استفاده كنيد:DBA_ENCRYPTED_COLUMNS ،ALL_ENCRYPTED_COLUMNS و USER_ENCRYPTED_COLUMNS.

 

رمزنگاري داده در سطح شبكه و كنترل جامعيت داده

اجازه دهيد آنچه را كه در اين مقاله آموخته‌ايم، مرور كنيم. در گذشته نه چندان دور، زماني كه نسخه 8.1.7 از اوراكل ارائه شده‌بود، ايالات متحده درباره امكان استخراج (Export) داده، محدوديت‌هايي را در نظر گرفته‌بود. به همين دليل، اين نسخه از پايگاه‌داده در سه نوع داخلي، به‌روزرساني‌شده و مخصوص صادرات عرضه مي‌شد. هر كدام از اين نسخه‌ها از جهت طول كليد مورد استفاده تفاوت‌هايي را با سايرين داشت. يك روش نفوذي معروف نيز براي حمله و نفوذ در پايگاه‌داده اوراكل شناخته شده‌بود. اين فرآيند شامل پياده‌سازي Rootkit بعد از نفوذ موفقيت‌آميز است. روش ديگر تخريب جامعيت داده به يكي از دو روش حمله از طريق تغيير داده (اين كار به معناي تغيير مقادير ذخيره‌شده در پايگاه‌داده است)يا حمله از طريق ارسال دوباره داده (استفاده چندباره و غير مجاز از يك درخواست يا تراكنش)، انجام مي‌شود.

 

اوراكل براي مقابله با اين نوع حمله‌ها، از بسته‌هاي كنترل Checksum استفاده مي‌كند. به‌عنوان مثال، از روش MD5 ش (Message Digest 5)يا SHA-1 ا (S(Secure Hash Algorithm) براي ممانعت و شناسايي اين گونه حمله‌ها، استفاده مي‌كند. اصل كلي به اين صورت است كه با استفاده از الگوريتم‌هاي Hash، مقدار Checksum به ازاي هر بسته از داده توليد مي‌شود. يكي از كاربردهاي Checksum، بررسي تغيير احتمالي در جامعيت داده در مسير بين سرور و كلاينت است. به عبارتي، اين كار احتمال حمله به روش man-in-the-middle را كاهش مي‌دهد. اصول كار اين‌گونه است كه يك كليد ارتباطي با استفاده از الگوريتم ارتباطي Diffie-Hellman ايجاد مي‌شود. سپس OAS، كليد مخفيانه اشتراكي را با كليد Diffie-Hellman تركيب كرده تا يك كليد قوي‌تر ايجاد كند و با حمله احتمالي به روش man-in-the-middle مقابله كند.

 

براي فعال‌كردن سيستم رمزنگاري و كنترل جامعيت داده، سرور از ميان الگوريتم‌هاي ذخيره‌شده در sqlnet.ora، مواردي را كه بايد استفاده شوند، انتخاب مي‌كند. بين كلاينت و سرور چهار سطح امنيتي وجود دارد. اين‌ها عبارتند از: مدل REJECTED (حداقل امنيت)، ACCEPTED (حالت پيش‌فرض)، REQUESTED و REQUIRED (حداكثر امنيت). به عنوان يك گزينه اختياري مي‌توان از روش توليد مداوم رمز

(encryption seed) نيز استفاده كرد.

  • Like 1
لینک به دیدگاه
×
×
  • اضافه کردن...