1C, SQL Server, режими автентифікації

Перевірялося на: Win 2000 Server, SQL Server 2000, 1C 18 реліз

Змішаний режим підключення (Mixed Mode, SQL Server and Windows NT/2000).

Додатково до матеріалу книги хотів би наголосити на ще одному важливому моменті. 1С при підключенні до SQL Server може використовувати лише один логін. Права даного логіну (або користувача) повинні дозволяти 1С робити будь-які дії з даною базою. Такі права за промовчанням мають системні адміністратори, а також власники бази даних. Щоб зменшити ризик руйнування даних в інших базах, варто вибирати як такий логін саме власника бази даних. Якщо, через порушення безпеки, з базою даних 1С щось і станеться, це не торкнеться інших баз даних, які управляються даним сервером. Як призначити базі власника базі даних розказано у цій статті.

РежимпідключенняWindows (Windows Authentication Mode, Windows NT / 2000 only)

Важливо! Довірче з'єднання SQL Server 2000 підтримується лише за наявності мережевих бібліотек Multiprotocol і Named Pipes.

Операційна система працює з обліковими записами (logins), які містять усі дані про користувача. Кожен запис має унікальний ідентифікатор (login ID) або, як його називають по-іншому, ідентифікатор безпеки (SID, Security Identification), за допомогою якого користувач реєструється в мережі.

Аутентифікація Windows NT передбачає збереження в системній базі даних Master у SQL Server 2000 лише ідентифікаційного номера облікового запису. Решта інформації зберігається у базі даних домену. Зміна імені користувача або його пароля ніяк не вплине на права доступу до SQL Server.

Інформація про обліковий запис зчитується SQL Server тількипри реєстрації. Тому зміни, які адміністратор зробив із нею, позначаться лише під час чергової реєстрації.

Авторизація Windows NT дає певні переваги. Користувачі автоматично відображають усі правила безпеки, встановлені в домені. Також цей режим спрощує керування правами доступу за наявності кількох серверів SQL Server. При виконанні запитів на кілька серверів не потрібно відображати логіни SQL Server.

Якщо у вашій мережі велика кількість користувачів, то зручніше надаватиме доступ до SQL Server не кожному користувачеві, а групі користувачів вибраного домену.

Server - Security - Logins (керування обліковими записами сервера)

Server - Databases - Database - Users (управління користувачами бази даних)

Administering SQL Server - Managing Security (управління безпекою)

Важливо, щоб довжина рядка залишалася колишньою і щоб вона починалася у файлі з того ж зсуву. Для цього перед словом DATABASE додаємо 4 пробіли. Вуаль!

Але це ще не все. Цей рядок можна переписати по-іншому:

Знову ж таки потрібно дотриматися усунення початку і кінця рядка. Цей рядок дозволяє підключатися до SQL Server через джерело даних, налаштоване на клієнта. Цей спосіб трохи складніший (потрібно налаштовувати джерела на кожному клієнті), але за допомогою нього можна вирішити іншу проблему - зберігання пароля підключення не у файлі DBA (який як відомо досить легко розшифровується), а зберігання його засобами операційної системи. Для цього в конфігураторі потрібно просто задати ім'я користувача, а пароль залишити порожнім - тепер він зберігається в іншому місці! Вуаля вкотре. Плюс невеликий P.S. - у документації для SQL Server 2000 написано, що вказівкаTrusted_connection є обов'язковим, але я перевірив це на своїй системі - попередній метод спрацював. Якщо у вас він не працюватиме, то доведеться використовувати даний метод.

Коли створюватимете нових користувачів, то у них не буде жодних прав на дані в базі 1С. Крім того, що потрібно буде виставити ці права, потрібно буде вказати ролі (для SQL Server 2000, для 7.0 не знаю як): db_datareader, db_datawriter , db_creator. Роль db_creator потрібна, тому що при старті 1С змінює деякі параметри БД (для цього використовується ХП sp_dboption, яка використовує команду ALTER DATABASE). При установці дозволів на доступ до таблиць та інші можна запаритися ;) - для цього краще відразу написати скрипт із застосуванням команди GRANT для кожної таблиці, ХП тощо. Начебто все. Не намагався підключати більше двох користувачів (різних). Два однакові на моєму домашньому комп'ютері - працюють :).

Насамкінець хочу дати вам посилання на ще одну цікаву методику. Тут ви знайдете більш гарне вирішення проблеми безпеки, яке не використовує хак 1С (у прямому сенсі). Крім того, цей метод дозволяє гнучкіше налаштувати обмеження доступу до даних, причому так, що 1С при цьому не буде "падати" (якщо ви користуватиметься звичайною методикою обмеження прав доступу, то 1С при спробі доступу "вивалюватиметься" з повідомленням про помилку доступу до даних).