Oracle ma'lumotlar bazasi xavfsizligi bo'yicha eng yaxshi amaliyotlar
Oracle ma'lumotlar bazasini xavfsizlik devori hujumga qarshi to'liq kuchga ega. Tabiiyki, bu xavfsizlikka tahdid har doim tashqi bo'ladi, deb taxmin qilsa, haqiqiy statistika shuni ko'rsatadiki, xavfsizlik buzilishi ko'p hollarda ichkaridan sodir bo'ladi. Shuning uchun siz "aniq" autentifikatsiya siyosatiga va ma'lumotlarga asoslangan kirish siyosatiga rioya qilishingiz kerak.
Oracle ma'lumotlar bazasini qattiqlashtirish uchun bir necha asosiy qadamlar mavjud. Ularning aksariyati aql-idrokka asoslangan va ma'lum bo'shliqlar orqali ma'lumotlar bazasini buzish va kirib borishining oldini oladi. Keling, ushbu xavfsizlik ko'rsatmalarini tezda ko'rib chiqamiz.
Avtomatik xavfsiz konfiguratsiya
Bizning bloglarimizda DBCA-dan foydalangan holda yangi ma'lumotlar bazasini yaratishda uning uchun avtomatik xavfsiz konfiguratsiyani amalga oshirishingiz mumkin. Oracle Database 11g uchun yangi xavfsiz konfiguratsiya variantlarini tanlaganingizda, yangi ma'lumotlar bazasida quyidagi xavfsizlik xususiyatlari yoqilgan.
Parol bilan bog'liq xavfsizlik parametrlari. Ma'lumotlar bazasi parolning amal qilish muddati tugashini ta'minlaydi va foydalanuvchilarga tayinlangan standart parol profilini tekshirishda ichki qiyinchiliklarni ta'minlaydigan boshqa parol siyosatini amalga oshiradi.
Audit. Odatiy ma'lumotlar bazasi ma'lum ruxsatnomalar uchun tekshiruv o'tkazishga imkon beradi. Ushbu ma'lumotlar, ma'lumotlar bazasiga ulanish ma'lumotlari kabi, ma'lumotlar bazasi xavfsizligi uchun muhim hisoblanadi. Odatiy bo'lib, ma'lumotlar bazasi auditorlik yozuvlarini AUD $ jadvalida saqlaydi
va audit_trail boshlash parametrini db ga o'rnatadi.
Avtomatik xavfsiz konfiguratsiyadan foydalanish ma'lumotlar bazangiz Internet Security Center (CIS) standartlari tomonidan tavsiya etilgan xavfsizlik texnik shartlariga javob berishini ta'minlaydi.
foydalanuvchi hisoblari
Oracle barcha standart foydalanuvchi hisoblarini blokirovka qilishni va bekor qilishni tavsiya qiladi, albatta, SYS va SYSTEM hisoblaridan tashqari, DBSNMP, SYSMAN va MGMT_VIEW kabi boshqa kerakli hisoblardan tashqari.
Odatiy ravishda aniqlangan hisoblar soni ma'lumotlar bazasi faoliyati va ishlatilgan komponentlar soniga va ma'lumotlar bazasi qanday yaratilganiga bog'liq. Masalan, DBCA yordamida ma'lumotlar bazasini yaratish odatda ma'lumotlar bazasini qo'lda yaratishdan ko'ra ko'proq standart hisoblarni yaratadi.
Parollar
Oracle foydalanuvchisi parollari qobiq skriptida qattiq kodlanmasligi kerak. Aks holda, oddiy buyruq berib, foydalanuvchi parollarini bilib olishingiz mumkin ps -ef | Jarayon ishlayotgan paytda grep.
Ma'lumotlar bazasi yaratilgandan so'ng darhol yaratilgan barcha standart foydalanuvchi hisoblarining parollarini o'zgartiring. Ma'lumotlar bazasini yaratish paytida SYS va SYSTEM foydalanuvchi parollari o'rnatilishi kerak, ammo bu talab qilinmaydi.
Parolning amal qilish muddati va amal qilish muddati tugashiga oid qat'iy qoidalarni qo'llang va foydalanuvchilarni o'z vaqtida parollarini o'zgartirishga majbur qiling. Foydalanuvchi profillarini yaratishda FAILED_LOGIN_ATTEMPTS parametridan foydalanib, muvaffaqiyatsiz kirish urinishlari sonini cheklab qo'ying. FAILED_LOGIN_ATTEMPTS limitiga erishilganda hisoblar blokirovka qilinishi kerak (bu odatiy tartib). Bunday holda, DBA ushbu hisoblarning qulfini ochadigan yagona kishi bo'ladi. Shuningdek, foydalanuvchi parollari standart parol murakkabligi talablariga javob berishini ta'minlash uchun siz Oracle Password Murakkabligini Tasdiqlash Muntazamidan foydalanishingiz mumkin.
Operatsion tizimning autentifikatsiyasi
Ikki ishga tushirish parametrlari operatsion tizim autentifikatsiyasi orqali Oracle ma'lumotlar bazasiga kirishni ochadi. Ulardan biri taniqli OS_AUTHENT_PREFIX variantidir, bu ko'pchilik odamlar shell skriptlarida va boshqa joylarda foydalanish uchun OPS $ hisob qaydnomasini yaratish uchun foydalanadilar. Albatta, OPS $ hisob qaydnomasidan foydalanish operatsion tizimning autentifikatsiyasi va xavfsizligiga bog'liqlikni anglatadi.
Operatsion tizim tomonidan foydalanuvchining autentifikatsiyasiga ta'sir ko'rsatadigan ikkinchi ishga tushirish parametri REMOTE_OS_AUTHENT bo'lib, u o'zini serverda emas, balki uzoqdagi ish stantsiyasida autentifikatsiya qilgan foydalanuvchilarga ma'lumotlar bazasiga kirish imkoniyatini beradi. Ushbu vosita kerak bo'ladigan istisno holatlar paydo bo'lishi mumkin. Ammo, umuman olganda, ushbu parametr uchun noto'g'ri bo'lgan noto'g'ri qiymat o'zgarmasdan qoldirilishi kerak. Aks holda, masofaviy operatsion tizim tomonidan avtorizatsiya qilish orqali masofaviy tizim foydalanuvchisi xavfli protokollardan foydalangan holda ma'lumotlar bazasiga kirish imkoniyatiga ega bo'ladi. Va, ehtimol, bundan ham muhimi, har qanday foydalanuvchi o'z kompyuterida tashqi identifikatsiya qilinadigan ma'lumotlar bazasi foydalanuvchisi bilan bir xil nomdagi qayd yozuvini yaratishi mumkin.
Ma'lumotlar bazasi auditi
Ma'lumotlar bazasiga SYSDBA foydalanuvchisi sifatida faqat vakolatli shaxslar kirishini ta'minlash uchun SYSDBA sifatida jurnallarning auditorlik tekshiruvini tekshiring. Auditorlik tekshiruvi ma'lumotlar bazasi auditni o'chirib qo'yish bilan boshlanganligini aniqlashga imkon beradi.
Ma'lumotlar bazasini tizimga kirishga urinishlarning barchasi Oracle tomonidan tekshirilishi kerak. Bundan tashqari, SYSDBA yoki SYSOPER sifatida ulangan har qanday foydalanuvchi tekshirilishi mumkin. Barcha SYSDBA va SYSOPER foydalanuvchi operatsiyalarini tekshirishni yoqish uchun quyidagi ishga tushirish parametrini o'rnating: AUDIT_SYS_OPERATIONS = TRUE
Qaydda! AUDIT_SYS_OPERATIONS = TRUE-ni o'rnatish barcha SYSDBA va SYSOPER foydalanuvchilari faoliyatini ma'lumotlar bazasini tekshirish jurnalida emas, balki operatsion tizim tekshiruv jurnalida qayd etilishiga olib keladi. Natijada, ma'lumotlar bazasidagi kuchli foydalanuvchilar tomonidan auditorlik izini buzish mumkin emas.
Huquqlar berish
Ma'lumotlar bazasining zaifligini kamaytirish uchun Oracle har qanday turdagi (masalan, har qanday) jadvallarni o'chirish huquqi kabi, har qanday turdagi Oracle foydalanuvchilariga huquqlar berishdan qochishni qat'iy tavsiya qiladi. To'g'ridan-to'g'ri foydalanuvchilarga ob'ekt huquqlarini bermaslik bilan siz ushbu muammodan butunlay qochishingiz mumkin. Bundan tashqari, ADMIN OPTION-ni taqdim etishdan qochishingiz kerak. ADMIN OPTION bilan vakolat, u berilgan foydalanuvchi, o'z navbatida, boshqa foydalanuvchilarga vakolat berishi mumkinligini anglatadi. Natijada, DBA tezda kimga qanday imtiyozlar berilganligi ustidan nazoratni yo'qotishi mumkin.
Foydalanuvchilarga rollarni to'g'ridan-to'g'ri berish kerak, ruxsatlar emas. Bu juda ko'p foydalanuvchilar bilan Oracle ma'lumotlar bazasini boshqarishni ancha osonlashtiradi, bu erda ma'lum bir foydalanuvchiga qaysi ruxsatnomalar to'g'ridan-to'g'ri berilganligini tekshirish qiyin. PUBLIC - ma'lumotlar bazasida yaratilgan har bir foydalanuvchi uchun standart rol. Ushbu rolga keraksiz rollar yoki ruxsatnomalar tayinlanmaganligiga ishonch hosil qiling, chunki har bir foydalanuvchi, shu jumladan jimgina yaratilgan DBSNMP va OUTLN kabi foydalanuvchilar avtomatik ravishda ushbu rollar va ruxsatlarga ega bo'lishadi.
Quyidagi so'rov PUBLIC roli 12000 dan ortiq ob'ekt darajasida ruxsatga ega ekanligini ko'rsatadi:
SQL> SELECT COUNT(*) FROM dba_tab_privs
2 WHERE grantee='PUBLIC';
COUNT(*)
-------------
12814
SQL>
PUBLIC roliga berilgan 12000 dan ortiq ob'ekt ruxsatnomalarining 100 dan ortig'i DBMS_JOB, DBMS_METADATA, DBMS_SNAPSHOT, DBMS_DDL, DBMS_SPACE va DBMS_OBFUSCATION_TOOLKIT kabi DBMS paketlarini bajarish uchun ruxsat. Ijro etuvchi barcha muhim vakolatlarni Ijtimoiy rolidan bekor qiling. Rollardan oqilona foydalanish orqali foydalanuvchilaringizga imkoniyatlarni kengaytiring.
SYSDBA vakolati foydalanuvchiga juda kuchli imkoniyatlarni beradi, jumladan ma'lumotlar bazasi ob'ektlarini o'chirish va ma'lumotlar lug'ati jadvallarini o'zgartirish. Aytish kerakki, siz SYSDBA vakolatiga juda kam berishingiz kerak.
Bir nechta DBA muhiti
Agar siz tashkilotingizda yagona Oracle ma'lumotlar bazasi ma'muri bo'lsangiz, ma'lumotlar bazasini boshqarish uchun tizimning to'liq vakolatiga ega bo'lishingiz kerak. Ammo, agar sizda bir nechta ma'lumotlar bazalarini boshqaradigan Oracle DBA guruhi bo'lsa, siz ularning har biriga bir xil vakolat (masalan, SYSDBA) va bir xil turdagi rollarni (masalan, DBA) bermasligingiz kerak. Siz o'zingizning ixtisoslashtirilgan rollaringizni yaratishingiz kerak, ularning har biri ma'lumotlar bazasini boshqarish bo'yicha aniq vazifalarni hal qilish uchun ma'lum ruxsatnomalar to'plamini o'z ichiga olishi kerak. Natijada, ishlab chiquvchilarga yangi ob'ektlarni yaratishda yordam berish uchun mas'ul bo'lgan DBA ma'lum tiklash vazifalarini bajara olmaydi va aksincha. Keyinchalik ushbu rollar ma'lumotlar bazasi ma'murlariga berilishi mumkin, shu bilan vazifalarning aniq ajratilishini ta'minlaydi.
Ma'lumotlar lug'atini himoya qilish
Har qanday tizim vakolati berilgan foydalanuvchilar ma'lumotlar lug'at jadvallarini o'chirib tashlashlari mumkin. Ma'lumotlar lug'atini himoya qilish uchun parametrlar faylidagi 07_DICTIONARY_ACCESSIBILITY konfiguratsiya parametri FALSE-ga o'rnatilishi kerak. Bu faqat SYSDBA hisob ma'lumotlari bilan tizimga kiradigan foydalanuvchilarga har qanday ma'lumotlarning berilishini cheklaydi.
Ruxsatlarni sozlash
Operatsion tizim darajasida tegishli fayl ruxsatlarini sozlang, chunki xavfsizlik teshiklari ko'pincha ushbu darajada mavjud bo'lishi mumkin. Ko'pgina UNIX tizimlarida yaratilgan faylga standart ruxsatlar rw-rw-rw beriladi. Bu shuni anglatadiki, UNIX serverida ruxsat berilgan har qanday foydalanuvchi barcha fayllarni, shu jumladan ma'lumotlar bazasi fayllarini o'qishi yoki nusxalashi mumkin. UMASK o'zgaruvchisi 022 ga o'rnatilishi kerak, shunda faqat Oracle foydalanuvchi nomi ma'lumotlar bazasi fayllariga o'qishi va yozishi mumkin.
SETUID-larni darhol Oracle-ning barcha fayllaridan o'chirib tashlang. UNIX tizimlaridagi ba'zi SETUID fayllari root foydalanuvchisi sifatida skriptlarni bajarishga imkon berishi mumkin.
UTL_FILE to'plami sizga PL / SQL dasturidan operatsion tizim fayllariga yozish imkonini beradi. UTL_FILE_DIR parametridan foydalanganda hech qachon * belgisini uning qiymati sifatida ishlatmang, demak paket OS fayl tizimining istalgan katalogiga fayllarni chiqarishi mumkin. Bunday kataloglar to'plamini UTL_FILE chiqish fayllaridan butunlay alohida bo'lgan ba'zi taniqli joylarda cheklang.
EXTPROC funktsiyasini PL / SQL-da, agar sizga kerak bo'lmasa olib tashlang. Birinchidan, EXTPROC ma'lumotlarini serverdagi listener.ora faylida va mijozdagi tnsnames.ora faylida o'chirib tashlang. EXTPROC bajariladigan fayllarini keyin $ ORACLE_HOME / bin katalogidan olib tashlash mumkin.
Odatda tizimda bajariladigan fayllar juftligi mavjud - extproc va extproc0. EXTPROC, tajovuzkorlarga operatsion tizimga hech qanday autentifikatsiyasiz kirishga imkon beradi. Agar EXTPROC funktsiyasi hali ham zarur bo'lsa, Oracle-ning MetaLink veb-saytidagi Izoh 175429.1 ga qarang.
Muntazam foydalanuvchilarga eksport va import fayllarini boshqarish elementlariga kirishni taqiqlaganingizga ishonch hosil qiling, chunki ushbu fayllarda siz foydalanadigan parollar bo'lishi mumkin.
Qaydda! Peter Finnegan Oracle xavfsizlik sayti Oracle xavfsizligi bilan bog'liq bir nechta qiziqarli va foydali maqolalar va stsenariylarni, shu jumladan SQL in'ektsiyasini aniqlash va boshqa ko'plab Oracle xavfsizlik mavzularini muhokama qilishni taklif qiladi. Finnegan veb-saytida mavjud bo'lgan Oracle ma'lumotlar bazasini to'liq tekshirish ro'yxati Oracle o'rnatmalarini tekshirish uchun mo'ljallangan va Oracle ma'lumotlar bazasi xavfsizligining barcha jihatlari haqida to'liq ma'lumot beradi.
Tinglovchilar tarmog'i va xizmati
Tarmoq va tinglovchi xizmati (TNS tinglovchi) - Oracle xavfsizligining zaif tomonlari. Ma'lumotlar bazasi hujumlari uchun beixtiyor ochiq yo'llarni qoldirish uchun ko'plab imkoniyatlar mavjud. Keling, tinglovchilarga xizmatni kuchaytirish yo'llarini ko'rib chiqamiz.
Tinglovchini himoya qilish
Blog postida muhokama qilinganidek, tinglovchi har doim ruxsatsiz foydalanuvchilarning Oracle ma'lumotlar bazasiga ulanishiga yo'l qo'ymaslik uchun paroldan foydalanishi kerak. Xavfsiz TNS Listener xizmatiga hujum qilish juda sodda ekanligini unutmang. Tinglovchi uchun parol o'rnatilgandan so'ng, tinglovchini to'xtatish yoki boshlash kabi imtiyozli harakatlar tegishli parolni kiritmasdan amalga oshirilmaydi.
Shuningdek, tinglovchining ishiga xalaqit berish uchun foydalanuvchini SET buyrug'idan foydalanishiga yo'l qo'ymaslik mumkin. Buning uchun listener.ora konfiguratsiya fayliga quyidagi qator qo'shilishi kerak:
ADMIN_RESTRICTIONS=ON
Odatiy bo'lib, ushbu parametr "false" ga o'rnatiladi. Shuningdek, siz tinglovchi xizmatini masofadan boshqarishdan saqlanishingiz kerak, chunki uning paroli tarmoq orqali o'tayotganda shifrlanmagan. Tinglovchining paroli listener.ora faylida saqlanadi, shuning uchun siz ushbu faylni himoya qilishingiz kerak.
Tarmoq himoyasi
Zamonaviy Internetga yo'naltirilgan ma'lumotlar bazasi dasturlarining asosiy xavfsizlik talablaridan biri bu tizimni tashqi devorlardan himoya devori bilan himoya qilishdir. Xavfsizlik devori o'rnatilgandan so'ng, uni biron bir sababga ko'ra teshikka yo'l qo'ymaslik orqali ishonchli saqlang - masalan, Internetga ulanish uchun tinglovchi foydalanadigan portlardan foydalaning.
Oddiy xavfsizlik devoridan tashqari, siz Oracle Net xizmatidan server tomonidan kirishni boshqarish deb nomlangan qo'shimcha himoya qatlamini ta'minlash uchun foydalanishingiz mumkin. Server tomondan kirishni boshqarish elementlari tinglovchilar xizmati orqali ma'lumotlar bazasiga ulanish imkoniyatini cheklaydi. Ulanishlarni o'rnatish orqali manzillarni cheklashning ikkita usuli mavjud. Sqlnet.ora faylida siz taklif qilingan (qabul qilingan) manzillarni, shuningdek chiqarib tashlangan manzillarni ro'yxatlashingiz mumkin. Taklifnomalar ro'yxatida ko'rsatilgan barcha tarmoq manzillariga ulanishga ruxsat beriladi va o'chirilgan xostlar ro'yxatidagi barcha manzillarga kirish taqiqlanadi.
Ishga tushganda tinglovchi xizmati sqlnet.ora faylini o'qiydi va kirishning belgilangan boshqaruv elementlariga muvofiq kirish huquqini beradi. Taklif qilinuvchilarni ko'rsatishda serverga kirishni boshqarish vositalarini yoqish uchun sqlnet.ora fayliga quyidagi qatorlarni qo'shing:
tcp.validnode_checking = yes
tcp.invited_nodes = (server1.us.wowcompany.com, 172.14.16.152)
Manzillarni chiqarib tashlash uchun quyidagi qatorni qo'shing:
tcp.excluded_nodes = (server1.us.wowcompany.com, 172.14.16.152)
Qaydda! Umuman olganda, ma'lumotlar bazasiga ulanadigan manzillarni bilishingiz ehtimoli katta bo'lgani uchun TCP_INVITED_NODES parametridan foydalanish tizimga kirishni cheklashning eng samarali usuli hisoblanadi.
Masofaviy mijoz tomonidan autentifikatsiyani rad eting
Ushbu maqolada ilgari muhokama qilinganidek, masofaviy mijozlarga hisobga olish ma'lumotlari autentifikatsiyasini amalga oshirishga ruxsat berish xavfli va server har doim ma'lumotlar bazasiga ulangan mijozlarning autentifikatsiyasi uchun javobgar bo'lishi kerak. Init.ora faylida quyidagi parametrni o'rnatish orqali mijozlar uchun operatsion tizim autentifikatsiyasini o'chirib qo'yish mumkin:
REMOTE_OS_AUTHENT=FALSE
Yuqoridagi sozlama server tomonidan foydalanuvchining autentifikatsiyasini rag'batlantiradi, bu mijozning operatsion tizimiga ushbu vazifani ishonib topshirishdan ko'ra xavfsizroqdir.
Xavfsizlik bilan bog'liq boshlang'ich parametrlarini o'rnatish
SEC_CASE_SENSITIVE_LOGON boshlash parametridan tashqari, Oracle ma'lumotlar bazasini qattiqlashtirish uchun quyidagi parametrlardan ham foydalanish mumkin.
sec_protocol_error_further_action
Mijozlardan buzilgan paketlarni qabul qilishda ma'lumotlar bazasi bajarishi kerak bo'lgan harakatlarni belgilashga imkon beradi (o'chirish yoki qabul qilishni davom ettirish). Ushbu paketlar zararli niyat bilan yuborilgan deb taxmin qiladi.
sec_protocal_error_trace_action
Xatolikni kuzatib borish uchun qanday harakatlar qilinishini belgilashga imkon beradi. Masalan, siz xatoni kuzatishingiz yoki xato haqida ogohlantirish yuborishingiz mumkin.
sec_max_failed_login_attempts
Hatto foydalanuvchining parol profilini o'chirib qo'ygan bo'lsa ham, foydalanuvchilar o'z kuchlarini saqlab qolishlari mumkin bo'lgan ketma-ket muvaffaqiyatsiz ulanish urinishlari sonini belgilashga imkon beradi.
Kuchli autentifikatsiyani yoqadi (Kerberos ma'lumotlari yoki sertifikatlari Secure Sockets Layer (SSL) orqali).
Granüler tarmoqqa kirishni boshqarish
UTL_TCP, UTL_SMTP, UTL_MAIL, UTL_HTTP va UTL_INADDR kabi tarmoq bilan bog'liq paketlar xavfsizlik teshiklarini yaratishi mumkin, chunki PUBLIC ushbu paketlarning barchasida ruxsatni amalga oshiradi. Ushbu paketlardan biri orqali tajovuzkor ma'lumotlar bazasiga bemalol kirib borishi mumkin. Siz tashqi tarmoq xizmatlari orqali ma'lumotlar bazasiga foydalanuvchi kirishini boshqarish uchun Oracle-ning granüler tarmoqqa kirishini boshqarish vositasidan foydalanishingiz mumkin. Masalan, ma'lum bir saytlardan ma'lumotlar bazalariga foydalanuvchi kirishini cheklashingiz mumkin.
DBMS_NETWORK_ACL_ADMIN va DBMS_NETWORK_ACL_UTILITY to'plamlari kirishni boshqarish ro'yxatlari (ACL) yaratish uchun ishlatiladi. Kirish nazorati ro'yxati - foydalanuvchilar ro'yxati va ularga berilgan ruxsatlar. ACL-larni Oracle XML JB orqali boshqarish mumkin. Ma'lumotlar bazasi ACL-larni XML hujjati shaklida Oracle XML JB-dagi / sys / acl papkasida saqlaydi.
Kirish nazorati ro'yxatini yaratish
ACL yaratish uchun DBMS_NETWORK_ADMIN paketining CREATE_ACL protsedurasidan foydalaning, quyidagi misolda ko'rsatilgandek:
SQL> begin
dbms_network_acl_admin.create_acl (
acl => 'my_xml',
description => 'Permissions for my network',
principal => 'APPOWNER',
is_grant => 'TRUE',
privilege => 'connect');
end;
SQL>
Create_acl protsedurasi quyida tavsiflangan parametrlarni oladi.
Процедура create_acl принимает описанные ниже параметры.
Указывает имя XML-файла, который содержит имена пользователей и полномочия, перечисленные в списке ACL.
Указывает имя пользователя и должен совпадать с именем пользователя сеанса.
Показывает, выдано или запрещено данное полномочие.
Berilishi yoki rad etilishi kerak bo'lgan tarmoq ruxsatlarini belgilaydi. CONNECT-ni ruxsat parametrining qiymatlari sifatida belgilashingiz mumkin
yoki RESOLVE. UTL_MAIL kabi har qanday PL / SQL tarmoq to'plami yordamida ma'lumotlar bazasiga ulanishi kerak bo'lsa, foydalanuvchiga CONNECT vakolati berilishi kerak. RESOLVE vakolati UTL_INADDR to'plami yordamida berilgan IP-manzilning xost nomini olishga va aksincha yordam beradi.
ACL yaratilgandan so'ng, unga ADD_PRIVILEGE protsedurasini ishga tushirish orqali foydalanuvchilar yoki ruxsatlarni qo'shishingiz mumkin:
SQL> begin
dbms_network_acl_admin.add_privilege (
acl => 'test.xml',
prinicpal => 'test_users',
is_grant => true,
privilege => 'connect')
end;
SQL>
Agar add_privilege protsedurasida ko'rsatilgan ACL mavjud bo'lmasa, ma'lumotlar bazasi uni yaratadi.
Xostga kirishni boshqarish ro'yxatini tayinlash
Yangi yaratilgan ACL-ni tarmoq xostiga ulash uchun quyidagi misolda ko'rsatilgandek ASSIGN_ACL protsedurasidan foydalaning:
SQL> begin
dbms_network_acl_admin.assign_acl (
acl => 'test.xml',
host => '*.us.mycompany.com',
lower_port => 80,
upper_port => null);
end;
SQL>
ACL-lar xost, domen yoki IP-tarmoqlarga berilishi mumkin. Bunday holda, agar kerak bo'lsa, siz bir qator TCP portlarini belgilashingiz mumkin. ASSIGN_ACL protsedurasini bajarishda quyidagi fikrlarni yodda tutish kerak.
Har bir xost, domen yoki IP pastki tarmog'iga faqat bitta ACL tayinlanishi mumkin.
Eski ACL-ni yangisiga almashtirishda ma'lumotlar bazasi eski ACL-ni avtomatik ravishda o'chirmaydi. ACL-ni olib tashlash uchun DROP_ACL protsedurasini bajarishingiz kerak.
UNASSIGN_ACL protsedurasi yordamida ACL-ni bekor qilishingiz mumkin.
Xost buyurtmasi
* Kabi xost nomida joker belgini ko'rsatsangiz, ma'lumotlar bazasi belgilangan domendagi barcha xostlarga boshqaruv ro'yxatini tayinlaydi. ACL xost nomlarini quyidagi tartibda baholaydi:
belgilangan portlarga ega bo'lgan to'liq malakali xost nomlari;
to'liq malakali xost nomlari;
domen ichidagi subdomainlar.
Xuddi shu tarzda, individual IP-manzillarga berilgan ACL-lar subnetslarga berilgan ACL-lardan ustun turadi.
Xost ruxsatnomalari va topshiriqlarini tekshirish
Quyidagi misolda ko'rsatilgandek foydalanuvchi ACL-da qanday ruxsatlarga ega ekanligini bilish uchun CHECK_PRIVIELGE funktsiyasidan foydalaning:
SQL> SELECT DECODE(dbms_network_acl_admin.check_privilege (
test.xml', 'hr','resolve'),
1, 'granted', 0, 'denied', null) privilege
FROM DUAL;
Ushbu funktsiyani bajarish, agar ruxsat berilmagan bo'lsa 0 ga, agar berilgan bo'lsa 1 ga teng bo'ladi. Agar ruxsat berilmagan yoki rad etilmagan bo'lsa, funktsiya NULL qiymatini qaytaradi.
MetaLink va muhim yangilanishlar va xatolarni tuzatish
Xavfsizlikni boshqarishning muhim qismi bu zaifliklar haqidagi so'nggi yangiliklardan xabardor bo'lish va ularni tuzatish uchun yamoqlarni o'rnatishdir. Oracle-da tezkor ravishda yangi xavfsizlik tuzatishlarini chiqarish siyosati mavjud, shuning uchun doimiy ravishda Oracle MetaLink-ni so'nggi xavfsizlik tuzatishlarini tekshirishingiz kerak.
Muntazam ravishda joylashtirilgan Oracle xavfsizlik tahdidlari to'g'risida ogohlantirishlarni keyingi sahifada topish mumkin. Xavfsizlikni buzganlik haqidagi yangiliklarni MetaLink veb-saytining Yangiliklar va eslatmalar bo'limida ham topish mumkin. Agar xohlasangiz, Oracle elektron pochta orqali yangi xavfsizlik muammolari to'g'risida ogohlantirishlarni yuboradi. Siz ushbu bepul xizmatga veb-sahifada ro'yxatdan o'tish orqali obuna bo'lishingiz mumkin.
Oracle har chorakda Critical Patch Updates-ni chiqaradi, bu haqda Oracle mijozlariga MetaLink, OTN Security Alerts sahifasi va Oracle Security RSS orqali xabar beriladi. Agar siz allaqachon MetaLink abonenti bo'lsangiz, avtomatik ravishda Critical Patch Updates-ga obuna bo'lasiz. Agar yamoq asosiy tahdidni bartaraf qilsa, Oracle har chorakda Critical Patch Update-ning patch fayllarini yuborishini kutmaydi. Bunday hollarda, Oracle MetaLink veb-sayti orqali rejadan tashqari xavfsizlik to'g'risida ogohlantirish beradi va yamoqni darhol yuklab olishga imkon beradi. Ushbu tuzatish, shuningdek, Critical Patch Update-ning keyingi chorakda chop etilishiga qo'shiladi. Biroq, aksariyat hollarda, Catchical Patch Updates Oracle-ning asosiy tarqatish usuli bo'lib, aksariyat yamalar uchun.Kritik yamoqlarni yangilash - bu jiddiy xavfsizlik teshiklarini tuzatuvchi va foydalanishga yaroqli tuzatishlarni, xavfsizlik teshiklarini tuzatish uchun zarur shartlarni yoki ikkalasini o'z ichiga olgan keng qamrovli yamaqlar to'plami. Natijada, ma'murlar o'zlarining ixtiyorlarida tizimdagi yamoqlarni qo'llash bo'yicha har choraklik jadvalga ega. Har chorakda bitta yamoqni qo'llash sinchkovlik bilan sinab ko'rishni talab qiladigan va bir-biri bilan ziddiyatga olib kelishi mumkin bo'lgan bir nechta yamoqlardan ko'ra qulayroqdir.Har chorakda Critical Patch Updates bilan bir qatorda yangi Risk Matrix ham taqdim etildi. Xatarlar matritsasi mijozlarga har bir muhim nuqta yangilanishi bilan tuzatilgan har bir zaiflikning ko'lami va zo'ravonligini baholashga imkon beradi. Xatarlar matritsasi ma'lumotlarning maxfiyligi, yaxlitligi va mavjudligiga tahdidlarni aniqlaydi va tizim eng zaif bo'lgan sharoitlarni ko'rib chiqadi. Bu sizga ma'lum tizimlar uchun mavjud bo'lgan xavfni baholash va ushbu tizimlarga yamoqlarni qo'llash ustuvorligini aniqlashga imkon beradi.
Kengaytirilgan xavfsizlik Oracle opsiyasi
Ma'lumotlar bazalarini himoya qilish uchun Oracle o'zining Advanced Security parametridan foydalanishni talab qilmaydi. Biroq, ushbu parametr juda ko'p kuchli xavfsizlik xususiyatlarini taqdim etadi, agar sizning biznesingiz yuqori darajadagi ma'lumotlar va tarmoq xavfsizligini talab qilsa, mantiqan to'g'ri keladi.
Advanced Security Oracle opsiyasidan foydalanishda mavjud bo'lgan ba'zi qo'shimcha xavfsizlik xususiyatlari quyida keltirilgan.
Mijozlar, dastur serverlari va ma'lumotlar bazalari o'rtasida tarmoq trafigini shifrlash.
Kengaytirilgan foydalanuvchi autentifikatsiya qilish usullari.
Markazlashtirilgan foydalanuvchi boshqaruvi.
Ochiq kalit infratuzilmasini (PKI) qo'llab-quvvatlash.
Ilova xavfsizligi
Xavfsizlik bo'yicha avvalgi eng yaxshi amaliyotlar asosan tarmoq va ma'lumotlar bazasiga ruxsatsiz kirishni oldini olishga qaratilgan bo'lsa-da, dastur xavfsizligi qoidalarini teshiksizligini ta'minlash uchun ularni ko'rib chiqish juda muhimdir. Ilovalarning ishonchliligini ta'minlash uchun tashkilot rollar va SQL * Plus dan foydalanadigan aql-idrok siyosati to'plamini amalga oshirishi kerak.
Rollar orqali ruxsat berish
Ruxsatlarni to'g'ridan-to'g'ri turli foydalanuvchilarga berish o'rniga ularni kapsulalash uchun rollardan foydalanishni allaqachon ko'rib chiqdik. To'g'ridan-to'g'ri berilgan ob'ekt ruxsatnomalari miqdorini minimallashtirish kerak, masalan, protseduralar va paketlar kabi saqlangan kodlarni foydalanuvchilar uchun DML-bayonotlarni chiqaradigan vositalar. Siz shunchaki foydalanuvchiga har qanday DML amallarini bajarish uchun ma'lum bir paket yoki protsedurani bajarish vakolatini berishingiz mumkin. Paket yoki protsedura tugagandan so'ng, foydalanuvchi endi saqlangan koddan tashqarida biron bir DML amallarini bajara olmaydi.
Rollarni o'chirib qo'yish
Barcha dastur rollari foydalanuvchilarga tayinlangan rollarni faollashtirish uchun SET ROLE operatoridan foydalanishi kerak. Ilova foydalanuvchilariga rollar faqat ma'lum maqsadlar uchun berilishi kerak va kerak bo'lmaganda ularni bekor qilish kerak.
Ilova egalari PL / SQL paketlari yordamida yoqiladigan xavfsiz dastur rollarini yaratishni o'ylashlari kerak. Xavfsiz dastur roli yaratilib, foydalanuvchiga tayinlangandan so'ng, ma'lumotlar bazasiga kirganda avtomatik ravishda foydalanuvchiga tayinlanadi.
SQL * Plus-dan foydalanishni cheklash
Ma'lumotlar bazasini ommaga ochishda qilish kerak bo'lgan birinchi ishlardan biri bu foydalanuvchilar tomonidan SQL * Plus interfeysidan foydalanishni keskin cheklashdir. Product_user_profile jadvalidan foydalanib, foydalanuvchining SQL * Plus dan foydalanish imkoniyatini cheklashingiz mumkin.
Foydalanuvchini boshqarish bo'yicha foydali usullar
Maqolaning ushbu qismida foydalanuvchilarni boshqarishda sizga yordam beradigan oddiy skriptlarni ko'rib chiqamiz. Shuningdek, ushbu sohada duch kelishi mumkin bo'lgan ba'zi odatiy muammolar haqida bilib olasiz.
Profillarni o'zgartirish
Quyidagi kod foydalanuvchi profilini o'zgartirganligini namoyish etadi:
SQL> ALTER PROFILE fin_user
2 LIMIT
3 FAILED_LOGIN_ATTEMPTS 5
4 PASSWORD_LOCK_TIME 1;
Profile altered.
SQL>
Foydalanuvchi ma'lumotlarini ko'rsatish
Ma'lumotlar bazasining foydalanuvchi "populyatsiyasi" haqida juda katta miqdordagi ma'lumot uchun siz DBA_USERS ko'rinishiga murojaat qilishingiz mumkin. DBA_USERS ko'rinishi uchun odatiy so'rov quyidagicha ko'rinadi:
SQL> SELECT username, profile, account, status
FROM dba_users;
USERNAME PROFILE ACCOUNT_STATUS
---------- -------- ---------------
SYS DEFAULT OPEN
SYSTEM DEFAULT OPEN
OUTLN DEFAULT OPEN
DBSNMP DEFAULT OPEN
HARTSTEIN DEFAULT OPEN
FINANCE DEFAULT OPEN
SQL>
Hozirda foydalanuvchi bajarayotgan SQL so'rovini bilish
Quyidagi V $ SESSION va V $ SQLTEXT jadvallariga qo'shilgan so'rov foydalanuvchining ma'lum bir vaqtda bajarayotgan SQL matnini olish uchun ishlatilishi mumkin.
SQL> SELECT a.sid,a.username,
2 s.sql_text
3 FROM v$session a,v$sqltext s
4 WHERE a.sql_address = s.address
5 AND a.sql_hash_value = s.hash_value
6 AND a.username LIKE 'HR%'
7 * ORDER BY a.username,a.sid,s.piece;
SID USERNAME SQL_TEXT
-------- --------- -----------------------------------
8 HR BEGIN dbms_stats.gather_table_stats
('HR','REGIONS'); END;
SQL>
Boshqa foydalanuvchi sifatida ro'yxatdan o'tish
Ba'zan, ba'zi bir harakatlarni amalga oshirish uchun siz boshqa DBA sifatida ro'yxatdan o'tishingiz kerak. Ammo, hatto DBA Oracle foydalanuvchisi ham shifrlangan holda saqlanadigan foydalanuvchi parollariga kirish huquqiga ega emas. Foydalanuvchining parolini o'zgartirish uchun ALTER USER iborasidan foydalanish mumkin edi, lekin parolni keraksiz o'zgartirib, foydalanuvchiga noqulaylik tug'dirishi ma'qul emas.
Bunday hollarda siz parolni vaqtincha o'zgartirishingiz va ushbu foydalanuvchi sifatida ma'lumotlar bazasiga kirish uchun yangi paroldan foydalanishingiz mumkin. Parolni almashtirishdan oldin shifrlangan asl parolni oling, undan foydalanuvchi parolini tiklash uchun foydalanishingiz mumkin. Barcha foydalanuvchilarning shifrlangan parollarini USER $ ko'rinishidan olish mumkin, masalan:
SQL> SELECT 'alter user tester identified by values '||password||';'
2 FROM user$
3 * WHERE username='TESTER';
'ALTERUSERTESTERIDENTIFIEDBYVALUES'||';'
---------------------------------------------------------
alter user tester identified by values 1825ACAA229030F1;
SQL>
Теперь измените пароль пользователя tester, чтобы можно было зарегистрироваться под именем этого пользователя:
SQL> ALTER USER tester IDENTIFIED BY newpassword;
Sinovchi foydalanuvchi hisobini qo'llashni tugatgandan so'ng, ushbu foydalanuvchi uchun parolni asl qiymatiga qaytarish uchun ALTER USER iborasini qayta kiriting. Shifrlangan parolni bitta tirnoq bilan qo'shib qo'yganingizga ishonch hosil qiling.
SQL> ALTER USER tester IDENTIFIED BY VALUES '1825ACAA229030F1';
User altered.
SQL>
Foydalanuvchi sessiyasini tugatish
ALTER SYSTEM buyrug'i foydalanuvchining har qanday sessiyasini to'xtatadi. Birinchidan, foydalanuvchining SID (sessiya identifikatori) va seriya # (seriya raqami) qiymatlari uchun V $ SESSION ko'rinishini so'rashingiz kerak. So'ngra, qabul qilingan seans identifikatori va tartib raqami qiymatlari bilan siz ushbu foydalanuvchi seansini to'xtatishingiz mumkin. Masalan:
SQL> SELECT sid, serial# FROM v$session
2 * WHERE username='SALAPATI';
SID SERIAL#
----------------
10 32
SQL> ALTER SYSTEM KILL SESSION '10,32';
System altered.
SQL>
Agar siz tugatmoqchi bo'lgan seans uzoq muddatli orqaga qaytarish kabi uzoq operatsiyada ishtirok etsa, Oracle sessiyaning tugatilishi uchun belgilanganligini va operatsiya tugagandan so'ng uni to'xtatishini bildiradi. Oracle ma'lumotlar bazasi sessiyani tugatgandan so'ng, u bajarilayotgan barcha operatsiyalarni qaytaradi va sessiyaning barcha qulflarini chiqaradi.
Foydalanuvchining UNIX jarayonini bekor qilish, ehtimol Oracle sessiyasining bekor qilinishiga olib keladi, ammo bu sessiyani yakunlashning eng oqilona usuli emas. Agar sizga foydalanuvchining UNIX sessiyasini tugatish kerak bo'lsa va Oracle KILL SESSION buyrug'i ishlamayotgan bo'lsa yoki uzoq vaqt talab qilsa, UNIX o'ldirish buyrug'i yordamida sessiyani juda tez tugatishingiz mumkin. Shuni unutmangki, o'ldirish buyrug'i o'zi yoki -9 tugmachasi bilan ishlatilishi mumkin, ammo aksariyat hollarda oddiy o'ldirish buyrug'i Oracle foydalanuvchisining UNIX sessiyasini tugatish uchun etarli
$ kill 345678 или $ kill -9 345678
Следующий сценарий позволяет извлечь из динамического представления V$SESSION номер процесса (а также SID и порядковый номер):
SQL> SELECT process, sid, serial# FROM v$session
WHERE username='&user';
Enter value for user: SALAPATI
old 2: username='&user'
new 2: username='SALAPATI'
PROCESS SID SERIAL#
--------- ---- -------
2920:2836 10 34
SQL>
Windows tizimlarida jarayonlar tushunchasi ishlatilmaydi, ammo barcha foydalanuvchi jarayonlari bir xil .exe Oracle jarayonining oqimlari. Windows-da Oracle foydalanuvchi sessiyasini to'xtatish uchun ORAKILL yordam dasturidan Oracle .exe jarayonida ma'lum bir ish zarrachasini to'xtatish uchun foydalanishingiz mumkin.
Siz foydalanuvchi sessiyasini tugatishni xohlaysizmi deylik. Ushbu foydalanuvchi oqimini qanday aniqlash mumkin? Quyidagi ro'yxat Windows tizimidagi har qanday foydalanuvchi uchun mavzuni aniqlash uchun oddiy so'rovdan foydalanishni namoyish etadi.
SQL> SELECT sid, spid as thread, osuser, s.program
2 FROM v$process p, v$session s
3 * WHERE p.addr = s.paddr;
SID THREAD OSUSER PROGRAM
--------- -------- ------ ---------------------
1 1192 SYSTEM ORACLE.EXE
2 1420 SYSTEM ORACLE.EXE
3 1524 SYSTEM ORACLE.EXE
4 1552 SYSTEM ORACLE.EXE
5 1528 SYSTEM ORACLE.EXE
6 1540 SYSTEM ORACLE.EXE
7 1580 SYSTEM ORACLE.EXE
8 1680 SYSTEM ORACLE.EXE
9 2948 NETBSA\SAlapati sqlplusw.exe
10 4072 NETBSA\SAlapati sqlplusw.exe
10 rows selected.
SQL>
Yuqoridagi ro'yxatdagi skript Oracle-ning har bir foydalanuvchisi bilan bog'langan oqim raqamlarini aks ettiradi. Oqim raqamlari olinganidan so'ng, foydalanuvchi sessiyasi quyidagi buyruq yordamida to'xtatilishi mumkin (oqim raqami 2948 deb taxmin qilinadi):
C:> orakill 2948
Xulosa:
Ushbu ishda foydalanuvchini yaratish, imtiyozlar va rollarni berish, Oracle ma'lumotlar bazasini auditi, xavfsizlik mexanizmlari (shu jumladan, virtual shaxsiy ma'lumotlar bazasi kontseptsiyasini), autentifikatsiya qilish usullari va ma'lumotlarni shifrlash bo'yicha keng ma'lumotni taqdim etildi. Oracle foydalanuvchisini boshqarish va xavfsizligi to'g'risida batafsilroq ma'lumot olish uchun Oracle ma'lumotlar bazasi xavfsizligi qo'llanmasiga murojaat qilish kerakligi ko’rib chiqildi.
Do'stlaringiz bilan baham: |