Foydalanuvchilar va SQLda rollarda foydalanishni boshqarish

Xavfsizlik, ruxsat etilmagan begona odamlar va ularning vakolatini oshib o'tishga urinayotgan insonlar o'zlarining hayotiy muhim ma'lumotlarining gigabaytlarini himoya qilishni istagan ma'lumotlar bazasi ma'murlari uchun juda muhimdir. Barcha ma'lumotlar bazasini boshqarish tizimlari ushbu tahdidlarni kamaytirishga mo'ljallangan bir qator ichki xavfsizlik mexanizmlarini taqdim etadi. Oracle va Microsoft SQL Server kabi ilg'or ma'lumotlar bazalari yordamida qo'llab-quvvatlanadigan murakkab foydalanuvchi / rol tizimiga Microsoft Access tomonidan taqdim etilgan oddiy parol muhofazasidan farq qiladi. Ushbu maqolada, Strukturalangan So'rovlar Tilini (yoki SQL ) amalga oshiradigan barcha ma'lumotlar bazalariga taalluqli xavfsizlik mexanizmlari ko'rib chiqilgan. Bilan birgalikda ma'lumotlar uzatishni boshqarish vositalarini takomillashtirish va ma'lumotlaringizning xavfsizligini ta'minlash jarayoni bo'ylab yuramiz.

Foydalanuvchilar

Server bazasidagi ma'lumotlar bazalari barcha kompyuter operatsion tizimlarida qo'llaniladigan foydalanuvchi tushunchasini qo'llab-quvvatlaydi. Agar siz Microsoft Windows NT va Windows 2000-da joylashgan foydalanuvchi / guruh vakillari bilan tanish bo'lsangiz, SQL Server va Oracle tomonidan qo'llab-quvvatlanadigan foydalanuvchi / rol guruhlari juda o'xshashligini topasiz.

Ma'lumotlar bazasiga kiradigan har bir kishi uchun alohida ma'lumotlar bazasi foydalanuvchi hisoblarini yaratishni tavsiya etamiz. Foydalanuvchilar o'rtasidagi hisoblarni almashish yoki ma'lumotlar bazasiga kirishni talab qiladigan foydalanuvchilarning har bir turi uchun bitta foydalanuvchi hisobini ishlatish texnik jihatdan mumkin, biroq men ushbu amaliyotni ikki sababga ko'ra qattiq qo'zg'ataman. Birinchidan, u shaxsiy javobgarlikni bartaraf qiladi-agar foydalanuvchi ma'lumotlar bazasiga o'zgartirish kiritsa (masalan, o'zingizni $ 5000 oshirishingiz mumkin), uni audit jurnallaridan foydalangan holda ma'lum bir shaxsga qaytarib olmaysiz. Bundan tashqari, muayyan foydalanuvchi tashkilotingizni tark etsa va uning ma'lumotlar bazasidan kirishni o'chirib tashlasangiz, siz barcha foydalanuvchilar ishonadigan parolni o'zgartirasiz.

Foydalanuvchi hisoblarini yaratish usullari platformadan platformaga o'zgarib turadi va aniq amaliyot uchun DBMSga tegishli hujjatlarga murojaat qilishingiz kerak bo'ladi. Microsoft SQL Server foydalanuvchilari sp_adduser saqlangan amaliyotlaridan foydalanishni tekshirishlari kerak. Oracle ma'lumotlar bazasi rahbarlari CREATE USER buyrug'ini foydali deb topadi. Siz shuningdek muqobil autentifikatsiya qilish sxemalarini o'rganishingiz mumkin. Masalan, Microsoft SQL Server Windows NT o'rnatilgan xavfsizlikni qo'llab-quvvatlaydi. Ushbu sxemada foydalanuvchilar Windows NT foydalanuvchi hisoblari bazasida identifikatsiyalanadi va ma'lumotlar bazasiga kirish uchun qo'shimcha foydalanuvchi identifikatorini va parolni kiritish talab qilinmaydi. Ushbu yondashuv ma'lumotlar bazasi ma'murlari orasida juda mashhur bo'lib, hisob boshqaruvi yukini tarmoq ma'muriyati xodimlariga o'tkazadi va u oxirgi foydalanuvchiga bitta kirishni osonlashtiradi.

Rollar

Agar siz oz miqdordagi foydalanuvchilar bilan ishlaydigan muhitda bo'lsangiz, foydalanuvchi hisoblarini yaratish va ularga ruxsat berish to'g'ridan-to'g'ri sizning ehtiyojlaringiz uchun etarli ekanligini topasiz. Ammo, agar sizda ko'p sonli foydalanuvchi mavjud bo'lsa, ehtimol hisoblar va tegishli ruxsatnomalar yuki yuklangan bo'ladi. Ushbu yukni engillashtirish uchun relaksial ma'lumotlar bazalari rollarning tushunchasini qo'llab-quvvatlaydi. Ma'lumotlar bazalari rollari Windows NT guruhlariga o'xshash ishlaydi. Foydalanuvchilarning hisob-varaqlari tayinlanadi va ruxsatlar keyinchalik alohida foydalanuvchi hisoblaridan ko'ra butun rolga beriladi. Masalan, biz DBA rolini yaratishimiz va keyinchalik bu rolga ma'muriy xodimlarimizning foydalanuvchi hisoblarini qo'shishimiz mumkin. Buni amalga oshirganimizdan so'ng, hozirgi (va kelajakda) barcha ma'murlar uchun maxsus rozilikni tayinlashimiz mumkin. Yana bir marta, rollarni yaratish tartibi platformadan platformaga o'zgarib turadi. Oracle DBAs CREATE ROLE sintaksisini ishlatishi kerak bo'lgan MS SQL Server administratorlari sp_addrole saqlangan amaliyotini tekshirish kerak.

Ruxsat berish

Endi biz ma'lumotlar bazasiga foydalanuvchilarni qo'shdik, ruxsatni qo'shib xavfsizlikni kuchaytirishni boshlash vaqti keldi. Bizning birinchi qadamimiz foydalanuvchilarimizga tegishli ma'lumotlar bazasi ruxsatini berishdir. Buni biz SQL GRANT bayonnomasi orqali amalga oshirmoqdamiz.

Bu bayonotning sintaksisi quyidagicha:

GRANT
[ON ]
TO
[GRANT OPTION bilan]

Keling, ushbu bayonotni layn-satr ko'rib chiqaylik. Birinchi qator, GRANT biz beradigan maxsus jadval huquqlarini aniqlab olishga imkon beradi. Bular jadval darajasidagi ruxsatnomalar (TANLOV, INSERT, UPDATE va DELETE kabi) yoki ma'lumotlar bazasi ruxsatnomalari (CREATE TABLE, ALTER DATABASE va GRANT kabi) bo'lishi mumkin. Bitta GRANT bayonnomasida bir nechta ruxsat berilishi mumkin, ammo jadval darajasidagi ruxsatnomalar va ma'lumotlar bazasi darajasidagi ruxsatnomalar bitta ariza bilan birlashtirilishi mumkin emas.

Ikkinchi satr, ON

, jadval darajasidagi ruxsatnomalar uchun ta'sirlangan jadvalni ko'rsatish uchun ishlatiladi. Ma'lumotlar bazasi darajasidagi ruxsatnomalarni taqdim qilsak, bu satr buzilmaydi. Uchinchi qatorda ruxsat berilgan foydalanuvchi yoki rol ko'rsatilgan.

Nihoyat, to'rtinchi qator, GRANT OPTION bilan, ixtiyoriy. Agar ushbu satr bayonotga kiritilgan bo'lsa, ta'sirlangan foydalanuvchining boshqa foydalanuvchilarga ham ushbu ruxsatnomalarni berishga ruxsat beriladi. Ruxsatlarga berilgan ruxsatnomalar berilganda, GRANT OPTION bilan MUVOFIQLIK ko'rsatilmaydi.

Misollar

Keling, bir nechta misolni ko'rib chiqaylik. Bizning dastlabki stsenariyda biz yaqinda mijozlar ro'yxatini qo'shish va davom ettiradigan 42 ta ma'lumotni kiritish operatorlari guruhini yolladik. Ular mijozlar jadvalidagi ma'lumotlarga kirishlari, bu ma'lumotni o'zgartirishi va jadvalga yangi yozuvlarni qo'shishlari kerak. Ular ma'lumotlar bazasidan butunlay o'chirib tashlashi kerak emas. Birinchidan, biz har bir operator uchun foydalanuvchi hisoblarini yaratib, so'ngra ularni DataEntry yangi rolga qo'shamiz. Keyinchalik, ularga tegishli ruxsatnomalarni berish uchun quyidagi SQL iborasini ishlatishimiz kerak:

GRANT SELECT, INSERT, UPDATE
Mijozlar haqida
DataEntry ga

Va buning hammasi shu! Keling, ma'lumotlar bazasi darajasidagi ruxsatnomalarni tayinlashimiz kerak bo'lgan vaziyatni ko'rib chiqaylik. DBA rolining a'zolariga ma'lumotlar bazasiga yangi jadvallar qo'shishga ruxsat berishni istaymiz. Bundan tashqari, biz boshqa foydalanuvchilarga ham xuddi shunday qilish uchun ruxsat berishni istaymiz. Quyida SQL bayonoti mavjud:

GRANT yaratmoq TABLE
DBA ga
GRANT OPTION bilan

DBA'larimiz ushbu ruxsatni boshqa foydalanuvchilarga berishi mumkinligi uchun GRANT OPTION liniyasi bilan qo'shildik.

Ruxsatnomalarni olib tashlash

Ruxsatlar berilgandan keyin, ularni keyinroq bekor qilishni talab qiladi. Yaxshiyamki, SQL oldindan berilgan ruxsatlarni olib tashlash uchun bizni REVOKE buyrug'i bilan ta'minlaydi. Quyidagi sintaksis:

REVOKE [imtiyozli variant] uchun
ON
dan

Ushbu buyruqning sintaksisi GRANT buyrug'iga o'xshashligini ko'rasiz. Faqatgina farq shundaki, GRANT OPTION bilan buyruqlar oxirida REVOKE buyruqlar qatorida ko'rsatiladi. Misol uchun, biz mijozlar bazasida qaydlarni olib tashlash uchun Maryamga oldindan berilgan ruxsatni bekor qilishni tasavvur qilishni tasavvur qilaylik. Quyidagi buyruqni ishlatamiz:

REVOKE DELETE
Mijozlar haqida
Maryamdan

Va buning hammasi shu! Microsoft SQL Server tomonidan qo'llab-quvvatlanadigan yana bir qo'shimcha mexanizm mavjud - bu DENY buyrug'i. Ushbu buyruq foydalanuvchi uchun mavjud yoki kelajakda ishtirok etadigan a'zolik orqali ruxsat berilishini rad etish uchun ishlatilishi mumkin. Quyidagi sintaksis:

DENY
ON
TO

Misollar

Oldingi misolimizga qaytib, Maryam shuningdek, mijozlar jadvaliga kira oladigan menejerlar rolining a'zosi bo'lganini tasavvur qilaylik. Avvalgi REVOKE bayonoti jadvalga kirishni rad etish uchun etarli bo'lmaydi. U o'z hisobiga yo'naltirilgan GRANT bayonnomasi orqali unga berilgan ruxsatni olib tashlaydi, ammo menejerlar roliga a'zolik orqali olingan ruxsatlarni ta'sir qilmaydi. Biroq, agar biz DENY bayonotidan foydalansak, uning iznisiz merosini blokirovka qiladi. Quyidagi buyruq:

DENY DELETE
Mijozlar haqida
Maryamga

DENY buyrug'i ma'lumotlar bazasidan foydalanishni boshqarishda "salbiy ruxsat" ni yaratadi. Keyinchalik, mijozlar jadvalidagi satrlarni olib tashlash uchun Meri ruxsat berishga qaror qilsak, GRANT buyrug'ini ishlata olmaymiz. Ushbu buyruq darhol mavjud DENY tomonidan bekor qilinadi. Buning o'rniga, biz REVOKE buyrug'idan foydalanib, salbiy ruxsatnomani quyidagicha olib tashlashimiz kerak:

REVOKE DELETE
Mijozlar haqida
Maryamdan

Siz bu komandaning ijobiy ruxsatni olib tashlash uchun ishlatilganiga o'xshashligini bilib olasiz. DENY va GRANT buyruqlar ham xuddi shunday usulda ishlashini yodda tuting, ular ma'lumotlar bazasiga kirishni boshqarish mexanizmida ruxsatnomalar (ijobiy yoki salbiy) yaratadilar. REVOKE buyrug'i ko'rsatilgan foydalanuvchi uchun barcha ijobiy va salbiy ruxsatlarni olib tashlaydi. Ushbu buyruq berilgandan so'ng, Maryam bu ruxsatga ega bo'lgan rolning a'zosi bo'lsa, jadvaldagi satrlarni o'chirishi mumkin. Shu bilan bir qatorda, DELETE ruxsatini to'g'ridan-to'g'ri hisobga olish uchun GRANT buyrug'i berilishi mumkin.

Ushbu maqola davomida Siz standart so'rovlar tili tomonidan qo'llab-quvvatlanadigan foydalanishni boshqarish mexanizmlari haqida yaxshi ma'lumotga ega bo'ldingiz. Bu kirish sizni yaxshi boshlanish nuqtasi bilan ta'minlashi kerak, ammo tizimingiz tomonidan qo'llab-quvvatlangan xavfsizlik choralarini o'rganish uchun sizning OBBS hujjatingizga murojaat qilishingizni tavsiya qilaman. Ko'plab ma'lumotlar bazalari muayyan ustunlarga ruxsat berish kabi yanada rivojlangan erkin foydalanishni boshqarish mexanizmlarini qo'llab-quvvatlaydi.