1C, SQL Server, режимы аутентификации

Данная статья является дополнением к статье "Первые шаги", в которой было рассказано как по шагам произвести установку 1С, SQL Server, а также как произвести конвертацию вашей DBF базы. В этой статье будут подробно рассмотрены варианты подключения к SQL Server, вопросы безопасности, а также способ, позволяющий подключаться 1С в режиме авторизации Windows.
13 тыс. 4,6 тыс.

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

Данная статья является дополнением к статье "Первые шаги", в которой было рассказано как по шагам произвести установку 1С, SQL Server, а также как произвести конвертацию вашей DBF базы. В этой статье будут подробно рассмотрены варианты подключения к SQL Server, вопросы безопасности, а также способ, позволяющий подключаться 1С в режиме авторизации Windows.

При установке SQL Server (либо после его установке) необходимо выбрать режим подключения (аутентификации, авторизация) пользователей к SQL Server. Для этого как в SQL Server 7.0 так и SQL Server 2000 существует два режима: смешанный и авторизация Windows. Вообще-то 1С поддерживает только смешанный способ подключения*. Причиной этого является довольно частое появление следующей ошибки: Login failed for user '%ls'. Reason: Not associated with a trusted SQL Server connection. Для 1С это сообщение означает, что вы выбрали способ авторизации Windows - в своих методических материалах в этом случае 1С рекомендует указывать смешанный режим подключения. Рассмотрим подробно оба режима. Данная информация взята мной из книгиљ издательства "БХВ-Петербург" 'MS SQL Server 2000. Наиболее полное руководство" автор Е. Мамаев, которую я вам рекомендую в качестве настольной по SQL Server 2000.

* - на самом деле режим авторизации "Windows only" также возможен (см. ниже по тексту раздел "1С и режимы авторизации")

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

В этом режиме возможна авторизация как средствами SQL Server, так и средствами Windows NT / 2000. Рассмотрим вариант авторизации SQL Server (режим авторизации Windows будет рассмотрен далее).

В этом режиме авторизация пользователей производится самим SQL Server. Вся информация о пользователях хранится в системной базе Master. Для каждого пользователя указывается имя учетной записи, уникальный идентификатор SQL Server, пароль и другая информация.

Авторизация SQL Server применяется в основном клиентами, для которых недоступна регистрация в домене Windows NT. Например, пользователям Novell NetWare, Unix и т.д. При подключении к SQL Server через Internet регистрация в домене не выполняется, поэтому в данном случае также необходимо использовать авторизацию SQL Server.

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

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

При авторизации Windows подлинность пользователя проверяется операционной системой. Пользователь автоматически получает права доступа к данным SQL Server сразу же после регистрации в домене. Такой метод предоставления доступа называется установлением доверительного соединения.

Важно! Доверительное соединение в 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.

При авторизации Windows NT следует следить за доверительными отношениями. Если пользователь одного домена подключается к SQL Server в другом домене, то между этими доменами должны быть настроены доверительные отношения.

Если в вашей сети большое количество пользователей, то удобнее будет предоставлять доступ к SQL Server не каждому пользователю, а группе пользователей выбранного домена.

На этом завершим рассмотрение режимов авторизации.

Ссылки по теме.

Enterprise Manager

Server - Properties - Security (выбор режима авторизации)

Server - Security - Loginsљ (управление учетными записями сервера)

Server - Databases - Database - Users (управление пользователями базы данных)

Books Online

Installing SQL Server - Authentication Mode (выбор режима авторизации: коротко)

Administering SQL Server - Managing Security (управление безопасностью)

Administering SQL Server - Managing Security - Authentication Modes (режимы авторизации: подробно)

1С и режимы авторизации

Как я уже говорил, 1С может подключаться к SQL Server только в случае смешанного режима авторизации. Вернее только этот режим поддерживается при подключении к SQL Server по протоколу TCP/IP. Рассмотрим чем это обусловлено. Прежде всего, подключение возможно только через одну учетную запись, которая указываетсяљ в режиме "Конфигуратор" через меню "Администрирование - Параметры базы данных SQL:". Причем данные поля должны быть обязательно заполнены - иначе выдается сообщение об ошибке (по крайней мере, в 18 релизе это так). В то же время 1С, используя ODBC, создает подключение с помощью функции SQLDriverConnect и для этого передает строку подключения следующего вида:

DRIVER=SQL Server;SERVER=%s;UID=%s;PWD=%s;DATABASE=master;APP=1CV7;UseProcForPrepare=0

Вместо символов %s подставляются имя сервера, пользователь и пароль. Но для подключения в режиме авторизации Windows необходима строка подключения:

DRIVER=SQL Server;SERVER=%s;Trusted_connection=yes;DATABASE=master;APP=1CV7;UseProcForPrepare=0

Поэтому любое имя пользователя, указанное в конфигураторе приведет к ошибке с кодом 18452, которая была приведена выше. Может быть и можно сделать так, чтобы введенное имя пользователя было связано с доверительным соединением. Например, я пробовал записать имя пользователя вместе с доменом - не получилось - выдавалась та же ошибка. Но все равно эти действия не имеют смысла - основная цель авторизации Windows подключение РАЗНЫХ пользователей, но никак не всех под одним логином. Это ограничение можно было бы обойти, если бы в параметрах базы можно было бы указывать пустые параметры. Но как я уже писал выше это не возможно. Здесь мы подходим вплотную к решению проблемы. Мы знаем какую функцию 1С используется для подключения к SQL Server, какая при этом формируется строка и какая строка нам нужна. Эврика! - мы просто меняем эту строку, а находится она в файле bkend.dll. Заменяем ее на строку:

DRIVER=SQL Server;SERVER=%s;UID=;PWD=; DATABASE=master;APP=1CV7;UseProcForPrepare=0

Важно чтобы длина строки оставалась прежней и чтобы она начиналась в файле с того же смещения. Для этого перед словом DATABASE добавляем 4 пробела. Вуаля!

Теперь вы можете поставить авторизацию Windows и наслаждаться. Можно делать такие вещи!љ - аж дух захватывает! Самый простой пример, ограничение определенным пользователям доступа к некоторым таблицам. Дальше дело за вашей фантазией!

Но это еще не все. Данную строку можно переписать по-другому:

DSN=DNS1C; DATABASE=master;APP=1CV7;UseProcForPrepare=0

Опять же нужно соблюсти смещения начала и конца строки. Данная строка позволяет подключаться к 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С может подключаться в режиме аворизации Windwos только (а может и не только) по протоколу Named Pipes. В этом случае система просто игнорирует имя пользователя и пароль, передаваемые при соединении. Почему это не делается в случае протокола TCP/IP для меня является загадкой. Чтобы такое подключение было возможно желательно, чтобы на сервере был установлен только протокол Named Pipes, либо чтобы он стоял первым в списке в утилитах SQL Server по настройке сетевых протоколов на клиенете и сервере. Если вам это не поможет (так, например, случилось со мной), то нужно просто создать алиас (в SQL Server 2000) с помощью утилиты Client Network Utility, указав что соединение будет производится по протоколу Named Pipes. После этого имя алиаса можно использовать в качестве имени SQL Server и без проблем работать по протоколу Named Pipes. Но. Есть большое "Но" в этом варианте. Использование протокола Named Pipes не рекомендуется по причине его низкой производительности. За мой срок работы с SQL Server я слышал разные комментарии по этому поводу большая часть из них подтверждала это, хотя были и противоположные замечания, в которых указывалось, что использование Named Pipes не снижает производительность работы с SQL Server. Хорошо бы найти четкие экспериментальные подтверждения этому и желательно авторитетные, для меня пока это лишь теоретические предположения.

Под конец хочу дать вам ссылку на еще одну интересную методику. Здесь вы найдете более красивое решение проблемы безопасности, которое не использует хак 1С (в прямом его смысле). Кроме того, этот метод позволяет более гибко настроить ограничения доступа к данным, причем так, что 1С при этом не будет "падать" (если вы будет пользоваться обычной методикой ограничения прав доступа, то 1С при попытке доступа будет "вываливаться" с сообщением об ошибке доступа к данным).

За сим прощаюсь. Безопасных Вам связей!

Шемякин Павел, июль 2002 оригинал на http://1csql.virtualave.net/1csql/

13 тыс. 4,6 тыс.

Начать дискуссию

⚡️ Итоги дня: «Яндекс» будет продавать товары для взрослых, Китай урезал поставки, а россияне стали чаще пить растворимый кофе и есть лапшу быстрого приготовления

Подготовили обзор главных событий дня. Все самое интересное, что писали и обсуждали в сети, в одной подборке.

26

Курсы повышения
квалификации

20
Официальное удостоверение с занесением в госреестр Рособрнадзора

Авито ищет бухгалтеров и специалистов по финансам

Разбирайте горячие вакансии от крупной компании. Авито нужен специалист казначейства, бухгалтер и старший бухгалтер!

Госдума защитит трудовые права работников маркетплейсов

Работодатели скрывают трудовые отношения с сотрудниками маркетплейсов под договорами с самозанятыми. Из-за этого работники не получают отпускных и больничных.

23
Лучшие спикеры, новый каждый день

🔥 Безлимитных консультаций больше не будет! Успейте купить подписку «Клерк.Премиум» с безлимитными консультациями

Воспользуйтесь шансом купить подписку с безлимитными консультациями экспертов «Клерка» до 22 апреля, чтобы задавать вопросы без ограничений.

В начале 2025 года РЖД запустят новое мобильное суперприложение

Замгендиректора РЖД Евгений Чаркин на конференции Data Fusion заявил, что «Российские железные дороги» (РЖД) планируют запустить новое мобильное суперприложение (SuperApp) в начале 2025 года.

☝️Готовы к сдачи отчетности за I квартал? Напоминаем, как правильно заполнить форму 6-НДФЛ

До 25 апреля нужно сдать 6-НДФЛ за I квартал 2024 года. Бланк расчета и правила его заполнения изменились, рассказываем, как заполнить отчет, чтобы сдать все с первого раза — без проблем и штрафов.

Иллюстрация: Вера Ревина / Клерк.ру
Опытом делятся эксперты-практики, без воды

Как организовать работу с локально-нормативными актами

Локально-нормативные акты (ЛНА) — это законодательство на уровне компании. ЛНА устанавливают права и обязанности работодателя и работника по отношению друг к другу и позволяют сторонам защитить свои права в случае трудовых споров. Но сначала всех работников необходимо надлежащим образом с ЛНА ознакомить.

Иллюстрация: Вера Ревина/Клерк.ру

📧 ФНС разослала компаниям сообщения по имущественным налогам за 2023 год. Эксперт: возможна некорректная выгрузка данных из федресурсов

Рассылка организациям сообщений об исчисленных суммах налога на имущество, транспортного и земельного налогов за 2023 год завершена.

Кадры

Персона дня. Чилл-директор с лапками

В Калининград требуется умилительный питомец на должность чилл-директора.

Персона дня. Чилл-директор с лапками
Банки

Центробанк может разрешить банкам проводить идентификацию клиентов по видео

Через камеры в банкоматах будут отслеживать, что именно владелец снимает средства с карты. Такая видеоидентификация снизит число мошеннических операций.

О каких ваших расходах точно знает ФНС. И в чем здесь подвох?

Приветствую вас дорогие читатели. На связи Ольга Ульянова аудитор. Сегодня решила обсудить с вами такую скользкую тему как цифровизация и контроль со стороны государства. В частности, контроль ваших расходов.

О каких ваших расходах точно знает ФНС. И в чем здесь подвох?
4
77

Россияне потратили на косметологические услуги рекордные 269 млрд рублей

За 2023 год оборот рынка косметологии вырос на 8,6%. Чаще всего клиенты приходят в клиники и салоны красоты за аппаратной косметологией.

Миникурсы, текстовые и видеоинструкции для бухгалтеров

Как срочно передать важный документ в другой город и 3 исключения

Быстро отправить юридически важный документ в другой город можно через нотариальную телепортацию.

✅ Вышел новый стандарт МСФО по финотчетам. Эксперт: он поможет принимать стратегически значимые решения

Новый стандарт МСФО (IFRS) 18 заменил собой принятый в 1997 году IAS 1 «Представление финансовой отчетности».

Реклама

Компании вложили в рекламу через Telegram 3,7 млрд рублей

Чаще всего для рекламных интеграций бизнес выбирает авторские каналы.

🍇 Экс-руководителей и главбуха винодельческого завода осудили за мифические виноградники

В Краснодаре бывшие руководители винодельческого предприятия, в том числе главный бухгалтер, признаны виновными в мошенничестве при получении субсидий и неправомерном обороте средств платежей.

69

Российские сервисы предупредили о запрете авторизации через Apple и Google

С 22 апреля «Литрес» закроет доступ к сервису тем пользователям, которые проходят авторизацию через иностранные системы.

Проблемы в расчете и уплате отдельных видов налогов

Современная налоговая система — сложная конструкция, объединяющая различные налоги и обязательства для бизнеса. Рассмотрим основные виды действующих в России предпринимательских налогов и приведем примеры налоговых проблем и задач, с которыми может столкнуться бизнес, а также кратко обозначим системы налогообложения для бизнеса.

Проблемы в расчете и уплате отдельных видов налогов
УК РФ

Финэксперт банка продлевала пустые вклады, а реальные деньги выводила на локальную карту

В Пермском крае финансовый эксперт банка осуждена за хищение у пенсионеров более 3 млн рублей.

Интересные материалы

Эффективное управление бизнесом общепита: основные KPI для успешного ведения учета

В условиях экономических трудностей и происходящих реформ в российском бизнесе, сектор общепита демонстрирует рост по продажам и числу точек. Однако из-за жесткого соперничества, изменений в потребительских предпочтениях и роста затрат, владельцы ресторанов стремятся к оптимизации работы через анализ данных.

Эффективное управление бизнесом общепита: основные KPI для успешного ведения учета