سلام به همه عزیزان ایران ویج
مقاله ی جالب که در اینترنت یافته ام نیز برای شما می گذارم امیدوارم که لذت ببرید...
اطلاعات صحيح در هر سازماني بسيار مفيد است و باعث موفقيت آن سازمان ميگردد. اما اگر اين اطلاعات دستكاري شود، بدون شك تأثيرات بدي در سازمان خواهد داشت...
اطلاعات صحيح در هر سازماني بسيار مفيد است و باعث موفقيت آن سازمان ميگردد. اما اگر اين اطلاعات دستكاري شود، بدون شك تأثيرات بدي در سازمان خواهد داشت. بانك اطلاعاتي اوراكل با محدود كردن دسترسي به دادهها ميتواند از اطلاعات شما محافظت كند. اوراكل با استفاده از Granting، يا محدود كردن مجوزهاي كاربران و فراهم كردن دستوراتي مانند Create User ،Create Role و Grant براي مديران پايگاهداده ميتواند دسترسي به اطلاعات را مديريت كند. هر كاربر اوراكل داراي نام و رمز ورودي است و صاحب چند جدول، View يا اجزاي ديگري است كه به وجود ميآورد. يك Oracle Role (يا نقش) در واقع شامل امتيازاتي است كه كاربر ميتواند براي دسترسي به اشياي بانك اطلاعاتي داشته باشد. ميتوانيد امتيازي (Privilege) را به نقشي بدهيد و سپس آن نقش را به يك كاربر اهدا كنيد. در اين مقاله قصد ندارم شما را با مباحث پيچيده امنيت در اوراكل آشنا كنم، هدف، آشنا كردن شما به صورت كاملاً عملي با پايه امنيت در اوراكل 10g است.
ايجاد كاربر
هر سيستم اوراكل به صورت پيشفرض داراي چندين كاربر مانند SYSTEM و SYS است. كاربر SYS صاحب جداول داخلي بانك اطلاعاتي است (كه وظيفه مديريت بانك اطلاعاتي را به عهده دارند) و كاربر SYSTEM صاحب جداول ديگر مديريتي است و براي اينكه بتوانيم كاربري را در يك بانك اطلاعاتي اضافه كنيم يا تغييراتي را در مجوزهاي آن بدهيم، بايد با اين كاربر به سيستم وارد شويم. فرمت دستوري كه ميتوانيد با آن كاربر جديدي را به سيستم اضافه كنيد، به صورت زير است:
در شكل 1 مراحل ساخت يك كاربر به نام Amin نشان داده شده است. در مرحله اول كاربر با استفاده از دستور Create User ساخته شده است. در مرحله دوم رمز كاربر تعويض شده است و در مرحله سوم براي اينكه به كاربر اجازه ورود بدهيم، يك Session جديد به نام او ساختهايم.
مديريت رمزها
كاربر بانك اطلاعاتي ميتواند پسورد خود را با استفاده از دستور password عوض كند، ولي در اوراكل ميتوانيم رمزهاي كاربران را به صورت پيشرفته مديريت نماييم. مثلاً ميتوانيم رمز ورودي را منقضي كنيم DBA و... ميتواند پروفايلهاي خاصي را براي مديريت امنيت تعريف نمايد و وقتي كاربر را ايجاد ميكند، آن پروفايل را به آن اختصاص دهد.
Profile ميتواند محدوديتهايي از قبيل طول عمر يك رمز، مدت زماني كه كاربر بايد رمز خود را عوض كند، تعداد دفعات ورود به سيستم با رمز اشتباه براي قفل كردن سيستم، تعداد روزهايي كه حساب كاربر بسته باشد، تعداد روزهايي كه بايد بگذرد تا كاربر دوباره از يك رمز استفاده كند، طول رشته رمز و محدوديتهاي ديگر را در خود داشته باشد.
در شكل 2 طريقه ايجاد يك پروفايل را مشاهده ميكنيد كه تعداد اشتباه در ورود روز را «2» تعيين كرده است. همانطور كه در اين كدها مشخص شده است، اين پروفايل به كاربر amin داده ميشود و حساب او پس از دو اشتباه قفل مي گردد. البته DBA ميتواند با دستور زير Account او را مجدداً باز كند.
ايجاد نقش براي كاربر
در مراحل قبل كاربر amin را ساختيم و رمز جديدي به آن داديم. حال او داراي حساب است، ولي نميتواند كار خاصي انجام دهد؛ چراكه هيچ نقش و مجوزي جز Create Session به او Grant نشده است. مهمترين نقشهاي اوراكل براي كاربران در جدول زير مشاهده ميشود:
حال سؤال اينجاست كه با وجود اختياراتي كه به Parham داده شده است، آيا او ميتواند به جداول amin دسترسي كامل داشته باشد يا خير؟ براي دسترسي كاربري به جدوال خود از دستور grant به نوعي ديگر استفاده ميكنيم. مثلاً ميتوانيم با دستور زير بگوييم كه كاربر Parham ميتواند از جدول emp كاربر amin استفاده كند:
اضافه بر نقشهايي كه به صورت پيشفرض در اوراكل وجود دارد، ميتوانيد نقشهاي ديگري نيز در اوراكل درست كنيد. مثلاً دو دستور زير دو نقش جديد به سيستم اضافه ميكند.
حال همانطور كه در كدهاي زير ميبينيد، ميتوانيد امتيازها را به نقش بدهيد:
بررسي عملكرد كاربران
در اوراكل ميتوانيم به راحتي تمامي اعمالي كه اتفاق افتاده است را بررسي كنيم. تمامي اين اعمال به صورت ركوردهايي در بانك اطلاعاتي ثبت ميشود. در اوراكل امكان بررسي يا Audit سه چيز وجود دارد: برقراري ارتباط با سيستم، دسترسي به اشياي بانك اطلاعاتي، و اعمالي كه روي بانك اطلاعاتي انجام ميگيرد. براي فعالسازي اين گزينه، بايد مقدار AUDIT_TRAIL در فايل Init.ora ،DB يا OS باشد.
براي اينكه ارتباطات كاربران به بانك اطلاعاتي را كنترل كنيم، ميتوانيم از دستورات زير استفاده نماييم:
در اين حالت سيستم از تمامي ارتباطات موفق و غيرموفق كاربران ركورد برداشت مينمايد. براي مشاهده اين اطلاعات ميتوانيم از جدول dba_aduit_session استفاده نماييم و با استفاده از فيلد returncode كه در اين جدول است، خطاي مربوطه كه معمولاً ORA_1017 و ORA_1005 است را استخراج نمود.
ORA_1005 وقتي است كه كاربر بدون كلمه عبور ميخواهد وارد شود و خطاي ORA_1017 زماني است كه كاربر رمز اشتباه را وارد مينمايد. براي غير فعال كردن بررسي ارتباطات كاربران، ميتوانيم از دستور NOAUDIT session استفاده نماييم.
براي بررسي عمل كاربرها روي اشيايي مانند Database Link ،Tablespace ،User و Index كه غالباً Drop ،Alter وCreate را اجرا ميكنند، بايد دستور AUDIT ROLE را اجرا كنيم و با جستوجوي زير عملكرد كاربران را مشاهده كرد:
اضافه بر كنترل دسترسي بر اشيا، ميتوانيم اعمال دستكاري داده ها بر اشيا را نيز بررسي نماييم. مثلاً اعمالي مانند Insert ،Select و Delete. براي بررسي اين قسمت مانند دستورات قبلي از دستور Audit استفاده ميكنيم، ولي عبارت اضافي By Session يا By Access نيز به اين دستور اضافه ميشود. اين دستور به سيستم ميگويد: براي هر دسترسي يك ركورد جمعآوري كند. مثلاً براي بررسي اعمالي كه روي جدول emp انجام ميشود، بايد دستورات روبهرو را نوشت:
با اين كار هر گونه دستكاري از قبيل اضافه كردن ركورد و حذف آن در جدولDBA_AUDIT_OBJECT ذخيره ميشوند و شما ميتوانيد به راحتي اين اطلاعات را مشاهده كنيد.
منبع