Internet Windows Android
Kengaytirish

SQL Server: Foydalanuvchi rollari. Ma'lumotlar bazasi foydalanuvchilarini qo'shish SQL Server xavfsizligi va ishonchli autentifikatsiya

SQL Server 2005 ma'lumotlar bazasi foydalanuvchilarini yaratish, FOYDALANUVCHI CREATE, foydalanuvchi xususiyatlari

Ma'lumotlar bazasi foydalanuvchisini yaratishingiz mumkin:

konteynerdan grafik ekranda q Ma'lumotlar bazasi_nomi | Xavfsizlik |Foydalanuvchilar Management Studio'da;

q buyrug'i yordamida FOYDALANUVCHI YARATING(saqlangan protsedura sp_ qo'shimcha foydalanuvchi, bu maqsadda SQL Serverning oldingi versiyalarida ishlatilgan, faqat orqaga qarab muvofiqlik uchun saqlanadi). Masalan, foydalanuvchi yaratish buyrug'i Foydalanuvchi 1, bu SQL Server kirishiga mos keladi Kirish 1 standart sxema bilan dbo, shunday ko'rinishi mumkin:

KIRISH UCHUN FOYDALANUVCHI 1 foydalanuvchisini YARATING Kirish1 DEFAULT_SCHEMA BILAN = dbo;

Foydalanuvchi yaratishda siz quyidagilarni ko'rsatishingiz kerak:

q Foydalanuvchi nomi(Foydalanuvchi nomi), boshqa SQL Server ob'ektlari bilan bir xil qoidalar qo'llaniladi;

q tizimga kirish(SQL Server yoki Windows) ushbu ma'lumotlar bazasi foydalanuvchisiga tayinlanadi. Foydalanuvchi yaratilgandan so'ng, unga tayinlangan loginni o'zgartirib bo'lmaydi. Siz login tayinlanmaydigan foydalanuvchi yaratishingiz mumkin (almashtirish tugmasi yordamida holdatizimga kirish). Bunday foydalanuvchi endi login tayinlay olmaydi. Ushbu turdagi foydalanuvchilar - loginsiz - faqat Service Broker-da qo'shimcha xavfsizlik konfiguratsiyasi uchun ishlatiladi. Shuni ham yodda tutingki, agar login allaqachon foydalanuvchiga tayinlangan bo'lsa, uni bir vaqtning o'zida boshqa foydalanuvchiga tayinlab bo'lmaydi;

q sertifikat(sertifikat nomi) yoki assimetrik kalit(Kalit nomi);

q standart sxema(Standart sxema);

q buning uchun sxemalar bu foydalanuvchi bo'ladi egasi(Egali sxemalar);

q nima ma'lumotlar bazasi rollari(Ma'lumotlar bazasi rollari) unga tayinlanadi.

Faqat ikkita talab qilinadigan parametr mavjud - foydalanuvchi nomi va login.

Yorliqda Xavfsizlik vositalari Foydalanuvchiga darhol ma'lumotlar bazasi ob'ektlariga ruxsatnomalar berilishi mumkin. Ruxsatlar keyingi bo'limlarda muhokama qilinadi. Tab KengaytirilganXususiyatlari ushbu ob'ekt uchun qo'shimcha maxsus xususiyatlarni aniqlash imkonini beradi. Ular ilg'or ma'lumotlar bazasi xususiyatlari bilan bir xil maqsadlarda ishlatiladi. (4.8-bo'limga qarang).

Foydalanuvchi xususiyatlarini o'zgartirish va ularni o'chirish Management Studio'da foydalanuvchi yaratish kabi bir xil konteynerdan, shuningdek buyruqlar yordamida amalga oshiriladi. FOYDALANUVCHINI O‘ZGARTIRISh/TO‘CHIRISH. Ma'lumotlar bazasida biron bir ob'ektga ega bo'lgan foydalanuvchini o'chira olmaysiz.

5 ta javob

Savolingizga asoslanib, foydalanuvchi va login o'rtasidagi farq haqida biroz chalkashib ketgan bo'lishingiz mumkin deb o'ylayman. Login - bu umuman SQL Serverdagi hisob - serverga kirishi mumkin bo'lgan va parolga ega bo'lgan shaxs. Foydalanuvchi ma'lum bir ma'lumotlar bazasiga kirish huquqiga ega bo'lgan kirishdir.

Login yaratish oson va ma'lum bir ma'lumotlar bazasiga kirish uchun foydalanuvchi hisobini yaratishdan oldin (aniq) bajarilishi kerak:

PAROL BILAN NewAdminName LOGIN YARATING = "ABCD" GO

Siz e'lon qilgan login yordamida db_owner imtiyozlariga ega foydalanuvchini shunday yaratasiz:

Ma'lumotlar bazasidan foydalaning; AGAR MAVJUD BO'LMAGAN O'TISH (Sys.database_principals FROM * NI TANLASH QERDA nomi = N"NewAdminName") LOGIN EXEC sp_addrolemember N"db_owner", N"NewAdminName" END UCHUN FOYDALANUVCHI YARATISHNI BOSHLASH; BOSH

Endi loginlar men yuqoridagiga qaraganda bir oz ko'proq suyuqlikdir. Masalan, ma'lumotlar bazasi o'rnatilganda Windows Administrator hisobi uchun foydalanuvchi hisobi avtomatik ravishda yaratiladi (ko'pgina SQL Server o'rnatishlarida). Ko'pgina hollarda men ma'lumotlar bazasini boshqarayotganimda foydalanaman (u barcha imtiyozlarga ega).

Biroq, agar siz SQL Serverga ilova orqali kirmoqchi bo'lsangiz, serverni "Aralash rejim" (Windows va SQL login) uchun sozlashingiz va yuqorida ko'rsatilganidek Login yaratishingiz kerak. Keyin ilovangiz uchun zarur bo'lgan narsaga asoslanib, ushbu SQL kiritish uchun "GRANT" imtiyozlarini olasiz. Qo'shimcha ma'lumot olish uchun qarang.

YANGILANISH: Aaron hisobingizga belgilangan rolni tayinlash uchun sp_addsrvrolemember dan foydalanishga ishora qiladi. Bu yaxshi fikr - imtiyozlarni qo'lda berishdan ko'ra tezroq va osonroq. Agar siz uni topsangiz, ko'plab havolalarni ko'rasiz. Biroq, siz hali ham login va foydalanuvchi o'rtasidagi farqni tushunishingiz kerak.

Butun server yoki ma'lum bir ma'lumotlar bazasi uchun to'liq administrator huquqlari? Menimcha, boshqalar ma'lumotlar bazasi uchun javob berishdi, lekin server uchun:

FOYDALANISH; KETISH MyNewAdminUser PAROL BILAN LOGIN YARATISH = N"abcd", CHECK_POLICY = OFF, CHECK_EXPIRATION = OFF; GO EXEC sp_addsrvrolemember @loginame = N"MyNewAdminUser", @rolename = N"sysadmin";

Siz foydalanayotgan SQL Server Express versiyasiga qarab CHECK_ parametrlarini qoldirishingiz kerak bo'lishi mumkin (bu ma'lumotni savolingizga kiritish deyarli har doim yaxshi fikr).

Agar siz umumiy skript yaratmoqchi bo'lsangiz, uni foydalanuvchi nomi va ma'lumotlar bazasi nomi bilan almashtirgan holda Execute bayonoti bilan qilishingiz mumkin.

@userName ni varchar(50) sifatida e'lon qiling; @defaultDataBaseName ni varchar(50) sifatida e'lon qiling; @LoginCreationScript ni varchar(max) sifatida e'lon qiling; @UserCreationScript ni varchar(max) sifatida e'lon qiling; @TempUserCreationScript ni varchar(max) sifatida e'lon qiling; @defaultDataBaseName = "ma'lumotlar1" o'rnating; set @userName = "domen\userName"; set @LoginCreationScript ="DEFAULT_DATABASE BILAN WINDOWSDAN LOGIN [(userName)] YARATING =(dataBaseName)" @UserCreationScript =" FOYDALANISH (ma'lumotlarBazaName) LOGIN [(userEXtarName") uchun foydalanuvchini [(userName)] YARASH [;adlemeda" "", ""(foydalanuvchi nomi)""; EXEC sp_addrolemember ""db_datawriter"", ""(foydalanuvchi nomi)""; Sxema bo'yicha bajarishga ruxsat bering:: dbo TO [(userName)];" /*Login yaratish*/ set @LoginCreationScript=Oʻzgartirish(Almashtirish(@LoginCreationScript, "(userName)", @userName), "(dataBaseName)", @defaultDataBaseName) set @UserCreationScript =Replace(@UserCreationScript, "(userName)" , @userName) Execute(@LoginCreationScript) /*Foydalanuvchi yaratish va rolni belgilash*/ set @TempUserCreationScript =Replace(@UserCreationScript, "(dataBaseName)", @defaultDataBaseName) Execute(@TempUserCreationScript) set @TempUserCreationScript(@TempUserCreationScript) @TempUserCreationCreplaceUset "(dataBaseName)", "db2") Execute(@TempUserCreationScript) set @TempUserCreationScript =Replace(@UserCreationScript, "(dataBaseName)", "db3") Execute(@TempUserCreationScript)

Siz foydalanishingiz mumkin:

LOGIN YARATISH PAROL BILAN = " "; BOSH

Siz ham foydalanishingiz mumkin:

Ruxsat berish [ ,...n ] ON SCHEMA:: schema_name

Siz foydalanuvchilarga tayinlagan sxema uchun ruxsatlarni sozlash uchun.

O'tgan hafta men o'z sahifamga Microsoft SQL Server 2014 Developer Edition-ni o'rnatdim va darhol ilgari hech qachon ko'rmagan muammoga duch keldim.

Men SQL Serverning turli versiyalarini ko'p marta o'rnatdim va bu odatda og'riqsiz jarayon. Serverni o'rnating, boshqaruv konsolini ishga tushiring, bu juda oddiy. Biroq, ushbu o'rnatishni tugatgandan so'ng, SSMS yordamida serverga kirishga harakat qilganimda, quyidagiga o'xshash xatolik yuz berdi:

SQL Serverga kirish xatosi 18456 "Foydalanuvchi uchun tizimga kirish amalga oshirilmadi... (Microsoft SQL Server, xato: 18456)" Agar tizimga kirishda noto'g'ri parol kiritgan bo'lsam, bu xatolikdan foydalandim - lekin bu faqat aralash rejimdan foydalanayotganimda ( Windows va SQL autentifikatsiyasi). Bunday holda, server faqat Windows autentifikatsiyasi bilan tuzilgan va foydalanuvchi hisobi meniki edi. O'rnatish vaqtida nega mening foydalanuvchini SYSADMIN roliga qo'shmaganiga hali ham ishonchim komil emas; Ehtimol, men bir qadamni o'tkazib yubordim va uni qo'shishni unutdim. Har holda, barcha umidlar yo'qolmadi.

Agar SQL Serverda boshqa hisob qaydnomasi bilan tizimga kira olmasangiz, buni tuzatish usuli CLI orqali tarmoqqa kirishni qo'shishdir. Buning uchun siz tizimga kirgan shaxsiy kompyuteringiz uchun Windows administratori bo'lishingiz kerak.

MSSQL xizmatini to'xtating. Administrator sifatida ishga tushirish buyrug'i yordamida buyruq satrini oching. SQL Server EXE fayli saqlanadigan papkaga o'ting; SQL Server 2014 uchun standart "C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\Binn". Quyidagi buyruqni bajaring: "sqlservr.exe -m". Bu SQL Serverni bitta foydalanuvchi rejimida ishga tushiradi. Ushbu buyruq satridan chiqqaningizdan so'ng, boshqasini oching, 2 va 3-bosqichlarni takrorlang. Ikkinchi buyruq satri oynasida "SQLCMD -S Server_Name\Instance_Name" ni ishga tushiring. Ushbu oynada har biridan keyin Enter tugmasini bosing: 1

WINDOWS 2DAN LOGIN [domen nomi\foydalanuvchi nomi] YARATING. SQL Server jarayonini tugatish uchun sizdan Y tugmasini bosishingiz so'raladi.

MSSQL xizmatini qayta ishga tushiring. Mana shu! Endi siz onlayn login yordamida tizimga kirishingiz mumkin.

12.07.2016 Tim Ford

Ma'lumotlar bazasi ma'muri xavfsizlik to'g'risida nimani bilishi kerak: shartlar tushuntirishi va amaliyotdagi ob'ektlarning umumiy ko'rinishi

SQL Server xavfsizligi va ishonchli autentifikatsiya

Microsoft SQL Serverda xavfsizlik sxemalarining ikki turi mavjud: SQL Server xavfsizligi va ishonchli autentifikatsiya (Windows autentifikatsiyasi deb ham ataladi). SQL Server xavfsizligi standart login foydalanuvchi nomi va parol birikmasidir va ishonchli autentifikatsiya SQL Server nusxasiga ulanishga urinayotgan qurilmaning domen autentifikatsiyasi protsedurasi tomonidan tasdiqlanganligini va bu tekshirish natijalari nusxasiga uzatilishini nazarda tutadi. SQL Server: domen SQL Server namunasi foydalanuvchi hisobiga ishonadigan xost sifatida qabul qilinadi - avval tekshirilgan.

SQL Server xavfsizlik mexanizmi orqali SQL Serverga ulanishga urinayotgan foydalanuvchilar va ilovalar maqsadli SQL Serverda yaratilgan foydalanuvchi nomi va parolni taqdim etishi kerak. Ishonchli autentifikatsiya yordamida ulanishda siz faqat ishonchli autentifikatsiya ishlatilganligini bildirish uchun ulanish qatorida bayroqni o'rnatishingiz kerak. Bunday holda, oxirgi foydalanuvchi yoki ilova xizmati hisobi hisobga olish ma'lumotlari xavfsizlik belgisi sifatida yuboriladi. Agar SQL Serverda mos keladigan foydalanuvchi nomi mavjud bo'lsa, kirish huquqi beriladi.

Ismlar va foydalanuvchilar

SQL Server misoliga kirishning ikki darajasi mavjud: server (yoki misol) foydalanuvchi hisoblari va ma'lumotlar bazasi foydalanuvchilari. Hisob qaydnomalaridan foydalanib, serverlar tashqi foydalanuvchiga (ushbu maqolada "foydalanuvchi" atamasi SQL Serverga ulanishga urinayotgan har qanday dastur, xizmat, API va hokazolarni bildiradi) SQL Server namunasiga dastlabki ulanishni amalga oshirish imkonini beradi. SQL-ga asoslangan xavfsizlik bilan bu foydalanuvchi nomi va parolni talab qiladi. Ishonchli autentifikatsiya holatida bu domen hisobi.

Ushbu foydalanuvchi hisoblarini yaratishning ikkita usuli mavjud: Transact-SQL (https://msdn.microsoft.com/en-us/library/ms189751.aspx? f=255&MSPPError=-2147217396) yoki GUI orqali. Hisob qaydnomalarini yaratish uchun T-SQL-dan foydalanish tartibi yaxshi hujjatlashtirilgan va rasmiy Microsoft SQL Server hujjatlariga murojaat qilish yaxshidir. Hozircha, grafik interfeysda hisob qaydnomasini qanday yaratishni ko'rib chiqamiz. Foydalanuvchi hisoblarini yaratish uchun dialog oynasini ishga tushirish uchun Object Explorer-da SQL Server Management Studio (SSMS) da SQL Server misoliga ulaning va keyin Security\Logins tugunini kengaytiring. Kirish-ni o'ng tugmasini bosing va kontekst menyusidan Yangi kirish-ni tanlang (1-rasm).

Siz 2-rasmda ko'rsatilgan hisob sozlamalari dialog oynasini ko'rasiz. Xuddi shu oynada foydalanuvchi nomingizni o'zgartirishingiz mumkin.

Bu hisob sozlamalarini yaratish (va o'zgartirish) uchun Umumiy yorlig'i. U ilgari tasvirlangan ikkita xavfsizlik sxemasidan farq qiladi. Umumiy yorlig'ida siz quyidagilarni o'rnatishingiz mumkin:

  • Kirish nomi. Autentifikatsiya qilish uchun ishlatiladi. Windows yoki ishonchli autentifikatsiyada siz DOMAIN\LOGIN formatida nomni ko'rsatishingiz kerak, bu erda LOGIN foydalanuvchi autentifikatsiya qilayotgan domendagi foydalanuvchi nomidir. Agar SQL Server nusxasi boshqa domenda joylashgan bo'lsa, u holda ushbu domen va SQL Server domeni o'rtasida ishonch aloqasi talab qilinadi.
  • Parol. SQL Server autentifikatsiyasi bilan parol matn maydoni yoqiladi va siz ham foydalanuvchi nomini, ham tegishli parolni kiritasiz.
  • Parol siyosati va amal qilish muddati. Parol va amal qilish muddati siyosati katakchalari SQL Server autentifikatsiya rejimida ham tanlanadi va SQL Serverni o'z ichiga olgan domendagi Active Directory-da amalda bo'lgan siyosatlar qo'llaniladi. SQL Server foydalanuvchi nomini belgilash orqali siz ro'yxatdan o'tgandan so'ng foydalanuvchilarga parollarini o'zgartirishga ruxsat berishingiz mumkin. Natijada, ma'lumotlar bazasi ma'muri oxirgi foydalanuvchining hisob nomiga kirish huquqiga ega emas.
  • Sertifikatlar, kalitlar, hisobga olish ma'lumotlari. Ushbu boshlang'ich maqolasida biz sertifikatlar, kalitlar va hisobga olish ma'lumotlarini ko'rib chiqmaymiz.
  • Standart ma'lumotlar bazasi SQL Serverga ulanish o'rnatilgandan so'ng, ikki bosqich amalga oshiriladi: autentifikatsiya (agar Windows yoki Ishonchli autentifikatsiya ishlatilsa, foydalanuvchining domeni hisobga olish ma'lumotlari uchun foydalanuvchi nomi mavjud bo'lishi kerak yoki foydalanuvchi nomi/parol kombinatsiyasi SQL Server misoliga o'tkazilishi kerak). Bu birinchi to'siq. Ikkinchisi, tasdiqlangan foydalanuvchi nomi standart ma'lumotlar bazasida bog'langan foydalanuvchi ob'ektiga ega - ma'lumotlar bazasi dastlab identifikatsiyadan so'ng foydalanuvchi nomi konteksti sifatida sozlangan. Birinchi to'siqdan o'tgan bo'lsa ham, standart ma'lumotlar bazasida mos keladigan ma'lumotlar bazasi foydalanuvchisi bo'lmasa, ulanish o'rnatilmaydi va tegishli yozuv SQL xatolar jurnaliga yoziladi. Ammo istisnolar mavjud: agar foydalanuvchining server roli juda muhim bo'lsa, har bir ma'lumotlar bazasida sukut bo'yicha unga yashirin huquqlarni o'rnatish zarur bo'lsa, unda standart ma'lumotlar bazasida mos keladigan foydalanuvchi bo'lishi shart emas. Biroq, men o'zimdan oldinda ketyapman, chunki biz hali ma'lumotlar bazasi foydalanuvchilari yoki server rollarini ko'rib chiqmaganmiz. GUI-da standart ma'lumotlar bazasini tanlaganingizda, bog'langan ma'lumotlar bazasi foydalanuvchisi yaratilmasligini ta'kidlash kifoya. Siz shunchaki standart ma'lumotlar bazasi qanday bo'lishi kerakligini aniqlaysiz. Buni qilganingizda, bog'langan ma'lumotlar bazasi foydalanuvchisini yaratish uchun "Kirish yaratish" dialog oynasining "Foydalanuvchi xaritasi" yorlig'idan foydalanasiz.

3-rasmda ko'rsatilgan keyingi yorlig'iga o'tamiz Server rollari. Ushbu sahifada siz yangi foydalanuvchi uchun istalgan SQL Server (namuna) darajasidagi rollarni tanlashingiz mumkin. Server rollari huquqlar to'plami bo'lib, ular himoyalanuvchilar deb ham ataladi, ular to'plamga to'planadi, shuning uchun har bir himoyalanuvchiga alohida huquqlarni belgilashingiz shart emas. Odatiy bo'lib, har bir hisob umumiy rolning a'zosi bo'lib, u SQL Server nusxasiga asosiy ulanishni o'rnatish imkonini beradi. Maqolaning qolgan qismida Microsoft SQL Serverga kiritilgan har bir server roli ko'rib chiqiladi.

SQL Server Management Studio'da Login yaratish dialog oynasining keyingi sahifasi foydalanuvchi hisoblarini xaritalash uchun mo'ljallangan. Har bir hisob bir yoki bir nechta ma'lumotlar bazasida foydalanuvchiga ega bo'lishi mumkin. Ushbu sahifada siz yangi hisob bilan bog'langan ma'lumotlar bazasi foydalanuvchilarini yaratishingiz mumkin. Buning uchun siz quyidagi ma'lumotlarni taqdim etishingiz kerak.

  • Ma'lumotlar bazasi. Hisob uchun bog'langan foydalanuvchi yaratmoqchi bo'lgan ma'lumotlar bazasi yonidagi katakchani belgilang.
  • Foydalanuvchi nomi Foydalanuvchi obyekti nomi hisob nomiga mos kelishi shart emas va buni qanday o‘zgartirish mumkinligini keyinroq ko‘rsatamiz.
  • Standart sxema Har bir ma'lumotlar bazasi foydalanuvchisi standart sxemaga tayinlanishi kerak. Sxema - bu ma'lumotlar bazasidagi boshqa ob'ektlardan mantiqiy (lekin jismoniy jihatdan shart emas) ajratilgan ma'lumotlar bazasi ob'ektlari to'plami. Siz foydalanuvchi yoki foydalanuvchilar guruhiga berilgan sxemadagi barcha ob'ektlarga huquqlar berishingiz mumkin, masalan, Buxgalteriya hisobi (yoki buxgalteriya ilovasi xizmati hisobi) dan barcha foydalanuvchilarga Billing sxemasidagi barcha ob'ektlarga ma'lum huquqlarni berishingiz mumkin, lekin ularga kirish huquqini bermaysiz. boshqa foydalanuvchilarga ob'ektlar. Ma'lumotlar bazasi foydalanuvchisiga standart sxemani tayinlaganingizda, ushbu sxemadagi ob'ektlarga murojaat qilishda ma'lumotlar bazasiga T-SQL qo'ng'iroqlarida sxema nomini kiritishning hojati yo'q. Bu shuningdek, agar foydalanuvchiga ob'ektlar yaratish huquqi berilgan bo'lsa, ob'ektlarni yaratishda sxema nomini ko'rsatmaguningizcha, ular sukut bo'yicha ushbu sxemada yaratiladi. Keyinchalik maqolada biz sxemalar tushunchasiga to'xtalamiz.
  • Ma'lumotlar bazasi roliga a'zolik Xuddi misol yoki server darajasida bo'lgani kabi, har bir ma'lumotlar bazasida rollarga to'plangan oldindan belgilangan huquqlar to'plami mavjud. Microsoft SQL Server bilan birga keladigan ma'lumotlar bazasi rollarini biroz keyinroq ko'rib chiqamiz.

SQLCRUISE\skipper foydalanuvchi hisobi uchun misol dialog oynasini ko'rib chiqamiz (4-rasmga qarang).

Ushbu misolda SQLCRUISE\skipper foydalanuvchisiga standart ma'lumotlar bazasiga (qutqaruv qayig'iga) huquqlar beriladi, bunda bog'langan foydalanuvchi nomi oddiygina skipper hisoblanadi. Standart sxema faqat skipper_only. Ushbu hisob qaydnomasi uchun foydalanuvchilar yaratiladigan boshqa ikkita ma'lumotlar bazasi foydalanuvchi nomidagi kabi bir xil foydalanuvchi nomidan foydalanadi (odatda identifikatsiya qilish qulayligi uchun) va standart sxema dbo bo'lib, u Microsoft SQL Serverda barcha foydalanuvchi tomonidan belgilangan standart hisoblanadi. ob'ektlar. Bu haqda batafsil ma'lumot keyingi bo'limda taqdim etiladi. Qutqaruv kemasi ma'lumotlar bazasida biz faqat umumiy ma'lumotlar bazasi roliga a'zolikni ta'minlaymiz, bu sizga ma'lumotlar bazasiga qo'shimcha ruxsatlarsiz ulanish imkonini beradi.

Keyingi sahifa, Securables, server yoki misol darajasida himoyalanuvchilarni taqdim etadi. Yuqorida ta'kidlab o'tilganidek, himoyalanuvchilar ob'ektlarga berilgan ruxsatlardir. Xavfsiz ob'ektlar odatda quyidagi hollarda taqdim etiladi:

  • belgilangan rol juda keng (hisob uchun ko'plab boshqa huquqlar);
  • Belgilangan rol yoki rollar to'plami hisob uchun zarur bo'lgan barcha huquqlarni to'liq qamrab olmaydi.

Bizning misolimizda men umumiy server rolida SQLCRUISE\skipper a'zoligini berdim va unga server darajasida mavjud bo'lgan har qanday ob'ekt ta'riflarini ko'rishga ruxsat berdim (5-rasmga qarang).

Nihoyat, biz Status sahifasiga o'tamiz. Ushbu sahifada siz foydalanuvchiga kirishga ruxsat berishingiz yoki rad etishingiz mumkin (odatda Grant tanlangan - ruxsat berish). Shuning uchun siz hisob yaratishingiz, huquqlar berishingiz, bog'langan foydalanuvchilarni yaratishingiz va keyin kirishni bekor qilishingiz mumkin. Mavjud foydalanuvchi uchun ushbu oynaga qaytishingiz va SQL Server misoliga kirishni bekor qilishingiz mumkin. Hisobni yoqish va o'chirish xuddi shu tarzda sodir bo'ladi (6-ekranga qarang). Nihoyat, biz foydalanuvchining hisob holatini ko'rishimiz va noto'g'ri parol bilan kirish uchun juda ko'p muvaffaqiyatsiz urinishlar tufayli hisob bloklanganligini ko'rishimiz mumkin.

SQL_Cruise ma'lumotlar bazasida tblFoo nomli faqat bitta jadval mavjud bo'lsa va joriy ma'lumotlar bazasi konteksti SQL_Cruise ma'lumotlar bazasi bo'lsa, har bir variant muvaffaqiyatli ishlaydi. Biroq, SQL_Cruise ma'lumotlar bazasini o'z ichiga olgan SQL Server nusxasida qaysi ma'lumotlar bazasiga ulanganligingizdan qat'i nazar, faqat birinchi variant to'g'ri ishlaydi. Ikkinchi variant, agar siz SQL_Cruise ma'lumotlar bazasiga ulangan bo'lsangiz, tblFoo-ga ega bo'lgan sxemalar sonidan qat'i nazar, amalga oshiriladi, chunki siz dbo sxemasini ko'rsatgansiz. Uchinchi variant xato xabarini hosil qiladi (8-rasmga qarang), agar SQL_Cruise ma'lumotlar bazasida tblFoo bilan bir nechta sxemalar mavjud bo'lsa, men dbo.tblFoo jadvalini va user.tblFoo jadvalini yaratgan 4-listda ko'rsatilganidek.

Ha, bu to'g'ri - ob'ekt mavjud, lekin siz noto'g'ri ob'ekt nomi xato xabarini olasiz. Bunday nomdagi ob'ekt mavjud emasligiga hech qachon oldindan ishonch hosil qilmang. Xabar sintaksis muammosini ko'rsatishi mumkin.

Ruxsat etilgan rollar Microsoft SQL Server bilan server va ma'lumotlar bazasi darajasida mavjud. Biroq, agar siz ko'p foydalanuvchilarga bir xil ruxsatlarni belgilashingiz kerak bo'lgan vaziyatlar yuzaga kelsa, o'zingizning rollaringizni yaratishingiz mumkin. Maxsus rollarni yaratish sizga ushbu huquqlarni faqat bir marta belgilash imkonini beradi: rolni yaratganingizda, har bir foydalanuvchi yoki har bir foydalanuvchi hisob qaydnomasi asosida emas (ma'lumotlar bazasi yoki server rollariga qarab). Vaqtni tejashga qo'shimcha ravishda, u bir nechta foydalanuvchi yoki hisob qaydnomalariga huquqlarni belgilashda nomuvofiqlikni yo'q qiladi.

Microsoft tomonidan taqdim etilgan server rollari va ma'lumotlar bazasi rollarining to'liq ro'yxati bo'ylab harakatlanish uchun giperhavolalardan foydalaning. Kelgusi maqolalar, biz asosiy mavzulardan chuqurroq mavzularga o'tishni boshlaganimizda, rollarni qanday yaratish, ushbu rollarga foydalanuvchilar yoki hisoblarni qo'shish va server va ma'lumotlar bazasi darajasidagi rollar bilan huquqlarni qanday bog'lashni o'z ichiga oladi.

Microsoft SQL Server xavfsizligi juda muhim mavzu. U o'zining teranligi, shuningdek, terminologiyasining o'ziga xosligi bilan ajralib turadi. Umid qilamanki, men turli atamalarni tushuntirish va amaliyotda qo'llaniladigan ob'ektlar haqida umumiy ma'lumot berish maqsadiga erishdim. Biz ushbu boshlang'ich darajadagi maqolalarda yana bir nechta mavzularni ko'rib chiqamiz, lekin men tez orada ushbu postdan kelib chiqadigan murakkabroq muammolarni ko'rib chiqaman. Har doimgidek, o'quvchilarga e'tiborlari uchun minnatdorchilik bildiraman va sharhlaringizni kutaman. Umid qilamanki, ushbu maqola yangi boshlanuvchilar ma'lumotlar bazasi ma'murlariga SQL sirlarini o'zlashtirishga yordam beradi.

Listing 1. GUIda qilingan sozlamalarga mos keladigan kod

FOYDALANISH GO DEFAULT_DATABASE BILAN WINDOWSDAN LOGIN YARATISH= FOYDALANISH GO KIRISH UCHUN FOYDALANUVCHI YARASH DEFAULT_SCHEMA BILAN FOYDALANUVCHI O‘GRISH= SCHEMA YARATISH AVTORIZASYONASINI KETISH FOYDALANING. KIRISH UCHUN FOYDALANUVCHI YARATISH FOYDALANUVCHINI DEFAULT_S CHEMA BILAN O‘ZGARTIRISh= GO GO GRANT KO'RISHNI KETISH uchun har qanday ta'rifni ishlating

Listing 2. Tizim va ma'lumotlar bazasi foydalanuvchilari haqida ma'lumot

ism , sid , principal_id , type_desc , default_ma'lumotlar bazasi_nomini sys.server_principals FROM TANGLASH QERDA nomi = "professor"; lifeboat.sys.database_principals FROM nomi , sid , principal_id , type_desc , default_schema_name NI TANLASH QERDA nomi = "professor";

Listing 3. Jadval ustunlari va satrlarini tanlash uchun so'rov namunasi

1-VARIANT: FQDN -============================================= ============ ============================== SQL_Cruise.dbo.tblFoo dan * TANLASH; -================================================== === ======================== - 2-VARIANT: ism sxema orqali aniqlangan -============= == ================================================ ===== ======= dbo.tblFoo dan * TANLASH; -================================================== === ======================== - 3-VARIANT: faqat ob'ekt nomi -============== === ================================================ ====== ===== tblFoo dan * TANLASH; Listing 4. Bir nechta sxemalar bilan jadvallar yaratish USE GO CREATE SCHEMA AVTORIZATION GO CREATE TABLE dbo.tblFoo (id INT); JADVAL YARATISH .tblFoo (id INT); tblFoo dan * TANLASH;


SQL Server xavfsizligi asoslari


Ma'lumotlar bazasi foydalanuvchilarini qo'shish

Ma'lumotlar bazasi manbalari

Foydalanuvchi Windows foydalanuvchi hisobi yoki SQL Server login yordamida ma'lumotlar bazasi tizimiga kirishi mumkin. Keyinchalik ma'lum ma'lumotlar bazasiga kirish va ular bilan ishlash uchun foydalanuvchi ma'lumotlar bazasi foydalanuvchi hisobiga ham ega bo'lishi kerak. Har bir alohida ma'lumotlar bazasi bilan ishlash uchun siz ushbu ma'lumotlar bazasi uchun maxsus foydalanuvchi hisobiga ega bo'lishingiz kerak. Ma'lumotlar bazasi foydalanuvchi hisobi mavjud Windows foydalanuvchi hisobiga, Windows guruhiga (foydalanuvchi a'zo bo'lgan), login yoki rolga moslashtirilishi mumkin.

Ma'lumotlar bazasi foydalanuvchilarini Management Studio yoki Transact-SQL bayonotlari yordamida boshqarishingiz mumkin. Ushbu ikkala usul ham keyingi bo'limlarda muhokama qilinadi.

Management Studio yordamida ma'lumotlar bazasi foydalanuvchilarini boshqarish

Management Studio yordamida ma'lumotlar bazasi foydalanuvchisini qo'shish uchun Object Explorer oynasidagi server tugunini va undagi "Ma'lumotlar bazalari" papkasini kengaytiring va bu papkada kerakli ma'lumotlar bazasi tugunini va undagi "Xavfsizlik" papkasini kengaytiring. Foydalanuvchilar jildini o'ng tugmasini bosing va kontekst menyusidan Yangi foydalanuvchi-ni tanlang. Ma'lumotlar bazasi foydalanuvchisi - yangi dialog oynasi ochiladi, unda siz foydalanuvchi nomini kiritishingiz va tegishli Login nomini tanlashingiz kerak:

Bu erda siz ushbu foydalanuvchi uchun standart sxemani ham tanlashingiz mumkin.

Transact-SQL bayonotlari yordamida ma'lumotlar bazasi xavfsizligini boshqarish

Joriy ma'lumotlar bazasiga foydalanuvchi qo'shish uchun foydalaning FOYDALANUVCHI ko‘rsatmasini yaratish. Ushbu yo'riqnomaning sintaksisi quyidagicha ko'rinadi:

FOYDALANUVCHI foydalanuvchi_nomini YARATING Sintaksis qoidalari

user_name parametri ma'lumotlar bazasida foydalanuvchi identifikatsiyalangan nomini, login parametri esa foydalanuvchi yaratilgan login nomini belgilaydi. Cert_name va key_name parametrlari mos ravishda tegishli sertifikat va assimetrik kalitni belgilaydi. Nihoyat, parametrda DEFAULT_SCHEMA BILAN ma'lumotlar bazasi serveri berilgan ma'lumotlar bazasi foydalanuvchisi uchun ob'ekt nomlarini hal qilish uchun qidiruvni boshlaydigan birinchi sxemani belgilaydi.

CREATE USER iborasidan foydalanish quyidagi misolda ko'rsatilgan:

SampleDb dan foydalanish; LOGIN UCHUN FOYDALANUVCHI Vasya YARATING Vasya; FOYDALANUVCHI Aleksni DEFAULT_SCHEMA BILAN KIRISH UCHUN YARATING = poco;

Ikkinchi yo'riqnomani kompyuteringizda muvaffaqiyatli bajarish uchun avvalo Aleksandr foydalanuvchisi uchun Windows hisob qaydnomasini yaratishingiz va ProfessorWeb domeni (server) o'rniga serveringiz nomini belgilashingiz kerak.

Ushbu misolda, birinchi CREATE USER bayonoti Windows hisob qaydnomasining Vasya foydalanuvchisi uchun Vasya ma'lumotlar bazasi foydalanuvchisini yaratadi. Foydalanuvchi Vasya uchun standart sxema dbo bo'ladi, chunki DEFAULT_SCHEMA parametrida hech qanday qiymat belgilanmagan. Ikkinchi CREATE USER bayonoti yangi Aleks ma'lumotlar bazasi foydalanuvchisini yaratadi. Ushbu foydalanuvchi uchun standart sxema poco bo'ladi. (DEFAULT_SCHEMA parametri hozirda ma'lumotlar bazasida mavjud bo'lmagan sxemaga o'rnatilishi mumkin.)

Har bir ma'lumotlar bazasi o'ziga xos foydalanuvchilarga ega. Shuning uchun, foydalanuvchi hisobi mavjud bo'lishi kerak bo'lgan har bir ma'lumotlar bazasi uchun CREATE USER bayonoti chiqarilishi kerak. Bundan tashqari, ma'lum bir ma'lumotlar bazasi uchun SQL Serverga kirish faqat bitta ma'lumotlar bazasi foydalanuvchisiga ega bo'lishi mumkin.

Ko'rsatmalardan foydalanish FOYDALANUVCHI ALTER ma'lumotlar bazasi foydalanuvchi nomini o'zgartirishingiz, standart foydalanuvchi sxemasini o'zgartirishingiz yoki boshqa login nomi bilan foydalanuvchini bekor qilishingiz mumkin. CREATE USER bayonotiga o'xshab, foydalanuvchi yaratilishidan oldin standart sxema tayinlanishi mumkin.

Joriy ma'lumotlar bazasidan foydalanuvchini olib tashlash uchun bayonotdan foydalaning FOYDALANUVCHI TO'CHIRISH. Himoyalangan ob'ektlar (ma'lumotlar bazasi ob'ektlari) egasi bo'lgan foydalanuvchini o'chirib bo'lmaydi.

Standart ma'lumotlar bazasi sxemalari

Tizimdagi har bir ma'lumotlar bazasida quyidagi standart sxemalar mavjud.

MS SQL ma'lumotlar bazasidan foydalangan holda mijoz-server rejimida 1C yechimlari asosida korporativ ma'lumotlar bazalarini o'rnatishda ba'zida turli foydalanuvchilar nomidan turli ma'lumotlar bazalarini yaratish kerak bo'ladi. Bular. Biz ba'zan SQL Management Studio'da sa'dan boshqa foydalanuvchi yaratishimiz va yangi axborot xavfsizligini qo'shish uchun oynaning maydonlariga uning ma'lumotlarini kiritishimiz kerak. (1-rasm)

Bularning barchasi ishlaydigan minimal huquqlar qanday?

ITS uslubiy yordam materiallarida aytilishicha, "bu foydalanuvchi nafaqat ma'lumotlar bazasi ma'lumotlar bazasiga to'liq huquqlarga, balki SQL serverida ma'lumotlar bazalarini yaratish va Master ma'lumotlar bazasi jadvallarini o'qish huquqiga ham ega bo'lishi kerak". Buning amalda qanday ishlashini ko'rish uchun biz MS SQL Server 2008 R2 Express yordamida mijoz-server versiyasida axborot xavfsizligini sinovdan o'tkazamiz. Siz, albatta, ahmoqona foydalanuvchi parametrlarini nusxalashingiz mumkin, lekin keling, buni mazmunli qilaylik, bu har doim foydalidir.

Keling, SQL Management Studio 2008 R2 muhitini ishga tushiramiz, SQL serveriga ulanishni o'rnatamiz va Xavfsizlik->Logins bo'limini oching va kontekst menyusining "Kirish yaratish" buyrug'ini tanlang, foydalanuvchi nomini o'rnating va huquqlarni o'rnating. dbcreator, ommaviy(2-rasm)

"Foydalanuvchini xaritalash" foydalanuvchi xususiyatlari sahifasida xaritalangan foydalanuvchilar jadvalidagi barcha asoslar uchun "Sxema" katagiga belgi qo'ying. master, model, msdb, tempdb, va jadvaldagi har bir ma'lumotlar bazasi uchun biz rol a'zoligini qayd etamiz ommaviy, db_owner(3-rasm)

Endi siz rasmda ko'rsatilgan oynaga qaytishingiz mumkin. 1 va kiritilgan parametrlarni qo'llang. bosing Keyinchalik -> Tayyor va... ma'lumotlar bazasi yaratildi, ma'lumotlar bazalari ro'yxati bir pozitsiyaga ko'paydi.

Shunday qilib, biz tizim ma'murini mamnun qila olamiz va ishontira olamiz, chunki MS SQL foydalanuvchi huquqlarining belgilangan kombinatsiyasi 1C platformasi bilan mijoz-server rejimida foydalanish uchun minimal darajada etarli va "sa" paroli buzilmagan bo'lib qoladi va biz bizga kerak bo'lgan MS SQL foydalanuvchi huquqlariga ega.