Роли
В експлоатацията на една ИС с базата работят много потребители. Ако всеки може всичко, бързо идват проблемите — не само съзнателни вреди, но и несъгласуваност или просто липса на внимание. Защитата е възлагането на роли: всяка роля определя набор от права и задължения, съответстващ на квалификацията и отговорностите на потребителя.
| Системна роля | Предназначение |
|---|---|
db_accessadmin | администратор на правата за достъп до данните |
db_backupoperator | право да съхранява резервни копия (backup) |
db_securityadmin | отговаря за предпазване от неразрешен достъп |
db_datareader / db_datawriter | четене / писане на данните |
public | минимални права — за външните потребители |
Конвенция за имената
Системните роли започват с db_ (както вградените процедури — със sp_). Затова нашите роли започват с db, но третата буква НЕ е знакът за подчертаване.
Нова роля и права
CREATE ROLE dbExecOnly;
GRANT EXECUTE TO dbExecOnly;| Право | Позволява |
|---|---|
EXECUTE | изпълняване на съхранени процедури и функции (без списък — всичките) |
CREATE | създаване на обекти на ниво сървър/база |
DELETE | изтриване на обекти — възлага се особено внимателно! |
SELECT / UPDATE | разглеждане / обновяване — може да се ограничи до конкретни атрибути и таблици |
Мрежа и потребителски профили
- Обичайно базата е на сървърна машина в мрежа. Достъпът отвън се разрешава със SQL Server Configuration Manager: Protocols for SQLEXPRESS → TCP/IP → Enabled = Yes, TCP Port =
1433. - Сървърът се превключва в режим SQL Server and Windows Authentication mode (Properties → Security) и се рестартира.
- Нов профил: папката Security на сървъра → New Login… — име, парола, отметки Enforce password policy и User must change password at next login (при първото свързване потребителят сменя служебната парола със своя).
- С User Mapping свързваме профила с база и роли — по премълчаване получава само минималистичната public; отмятаме например dbExecOnly.
Архивиране и възстановяване (Backup & Restore)
Архивирането (backup) създава резервно копие на базата — файл с разширение .BAK; възстановяването (restore) я връща от копието при повреда. В SSMS: контекстно меню на базата → Tasks/Backup (с бутона Add избираме друго място, например външен диск); обратно — Restore Database… от папката Databases.
Ключово
Грижите за базата не може да са инцидентни — те трябва да са добре планирани и ежедневни. Базата е най-важният елемент на информационната система.
Практикум
1) Формулирайте ролите за вашия проект за училищна ИС и ги регистрирайте. 2) Създайте профили на участниците с поне по една роля. 3) Архивирайте School, направете нарочно „неразумни“ изтривания и възстановете базата от копието.
Какво трябва да запомниш
- Роля = набор от права; на всеки потребител — роля по квалификацията и отговорностите му.
- CREATE ROLE + GRANT право ON обект TO роля; DELETE се дава най-внимателно.
- Мрежов достъп: TCP/IP Enabled, порт 1433, SQL Server Authentication с лични профили.
- Backup (.BAK) редовно; Restore връща базата при повреда.
- Поддръжката е планирана и ежедневна, не инцидентна.