Скуль 1с что это
ниже будет холивар на тему как правильно говорить те или иные термины.
Кстати интересно, ак правильно: роутер или раутер?
Вообще-то ближе всего к оригиналу «рутер». Но устоялось «роутер», и как там на самом деле — уже не имеет значения.
Сложно переучиться, когда используешь термин не первый год. Да и зачем переучиваться, если тебя и так окружение понимает и говорит так же. Да и слэнг никто не отменял.
хммм, а как же вариант «Давно знал, давно употреблял» не только с иностранцами, но и с нашими? Хотя нет, я говорил скорее «сикьюэ́л».
Ну и вариант «НЛО говорит правильно за меня»
Это понятно, что многие термины люди произносят верно. Но неужто в Вашей жизни (с другими словами) ни разу не было ситуации, описанной в вопросе?
Говорю как написано. А что там подразумевают авторы — это их личные проблемы. Сиквел? Ну так назвались бы Sequel и не скипидарили людям мозги.
> «Ну так назвались бы Sequel и не скипидарили людям мозги. „
Сначала был SEQUEL. Позже по юридическим соображениям язык SEQUEL был переименован в SQL. Когда в 1986 году первый стандарт языка SQL был принят ANSI, официальным произношением стало [,es kju:' el] — эс-кью-эл. Несмотря на это, даже англоязычные специалисты зачастую продолжают читать SQL как сиквел.
Я не о «сиквеле» писал — чёрт с ним. Просто иногда бывает слушаешь разговор иностранцев и нифига не врубаешься о чём речь, а потом оказывается, что они знакомые термины иначе произносят. При этом ощущаешь смешанные чувства — то ли стыд, то ли прозрение, то ли неловкость.
Просто для информации: SQL носителями произностится и как «сиквел», и как «эскьюэл». Одни и те же люди могут люди могут использовать оба варианта одновременно в зависимости от контекста.
Ну и опять таки, если поймать кухарку — она скажет ess q ell, а поймаете айтишника — sequel .
Да, я заметил уже когда написал
Ну, зато то — выше. И «уже» относительно времени моего комментария тоже вполне себе «уже».
Так что в принципе в моем комментарии противоречий фактам тоже нет ;)
Это как с «джава» vs «ява» и «аякс» vs «аджакс» (особенно меня забавляют те люди, которые пытаются переучить весь мир на «джава» как якобы самое верное произношение на Земле, но при этом говорят «аякс» (хотя буква та же и правила те же); забавляют потому, что я сам таким был (*^_^*) )
А меня забавляют те люди, которые пытаются переучить весь мир на «Ява» как якобы самое верное произношение на Земле, но при этом (на слово Job) говорят «Джоб» (хотя буква та же и правила те же);
Не знаю — в основном по-английски общался :)) А когда они между собой говорят — вообще ничего не поймешь — половина слов как кашель восрпинимается.
Говорю так, чтобы понимали.
Могу сказать и так, и эдак, и на местном жаргоне, если есть, если надо — еще и на пальцах покажу. Не парит.
Язык и термины — для общения, а не наоборот.
Была история в инете о том, как украинский программист пришел в Киеве устраиваться в филиал российской компании и отказался проходить интервью на русском. Или на украинском, или на английском. И так он называл С++.
А может, это троллинг был…
Может в америке. Или в IT среде. Но несколько знакомых бритишей далёких от IT сказали, что никогда не слышали такого сокращения в своей жизни.
Стараюсь использовать «правильный» вариант. После долгого перерыва иногда забываю, как правильно, но не заморачиваюсь.
То есть, третий пункт опроса, но совсем не так категорично.
Непосвященный читатель вроде вас в школе не учил никакого иностранного языка?
Тогда понятно. А иначе, вы должны были бы видеть Международный фонетический алфавит
Зависит от ситуации. Если я говорю по-русски, я произнесу слова data archive schedule как «дата архив шедул», и считаю это допустимым, несмотря на то, что говоря по английски, произнесу либо «дейта аркайв скеджюл», либо «дейта а: кайв щедьюл», в зависимости от.
Очень раздражает новомодная манера, говоря на одном языке, периодически переключать акцент и набор звуков на другой язык, чтобы сказать одно-два слова. Звучит крайне глупо, примерно как «my name is Вася, I'm from Санкт-Петербург».
Иногда на радио ведущий «включает» акцент, чтобы название песни произнести… Далеко не всегда понимаю, что имелось в виду…
Ээ… Я сам уже засомневался… Правильно — «эко»?
С char ситуация печальная совсем, даже не в иностранцах дело. С одной стороны есть такое слово char, произносится «чар». С другой стороны, если речь о типе данных, то это сокращение от character, вроде должно быть «кэр». С третьей стороны, даже если читать «ch» как «к», то все равно должно быть «кар». Фиг поймешь, в общем.
Кстати, забыл сказать, что вариант от character еще может отличаться, в зависимости от происхождения и акцента говорящего :)
Русскому человеку трудно, видя «Е», говорить «И»… А тем не менее в английском эта буква именно так и называется… Тяжело себя ломать, говоря «Нио», имея в виду «Neo» :)))
Хотя для «echo» я слышал и «И», и «Э»
1С умеет работать в двух режимах – файловом и серверном. При серверном варианте база данных находится не в файле, а в СУБД на сервере.
СУБД (SQL) – это система управления базами данных. Устно часто называют как «эс-ку-эль» или «скуль» или «сиквел». С 1С используются такие СУБД как MS SQL, Postgre SQL, Oracle.
Подробнее про серверный вариант работы Вы можете прочитать в уроке про сервер 1С. А здесь мы обсудим использование 1С с SQL.
Что такое SQL 1С
База данных – это набор таблиц (каждая табличка как одна страничка в Excel), в которых можно хранить данные.
Язык SQL – это способ запроса данных из этих таблиц. Язык SQL стандартизирован и практически одинаков во всех современных СУБД. Язык запросов 1С также является одним из вариантов реализации языка SQL.
СУБД – это комплекс программ и драйверов. Функции СУБД заключаются в том, чтобы самостоятельно организовать базу данных тем способом, который ей нравится (в некоторых СУБД база данных — это файл, в некоторых – раздел на диске с самостоятельной файловой системой) и обеспечить доступ к данным с помощью запросов на языке SQL.
В файловом варианте база данных 1С хранится в файле на диске и для доступа к данным 1С использует свой собственный движок. Однако этот вариант работает только для небольших баз данных и небольшого количества пользователей.
В серверном варианте базу данных 1С необходимо положить в СУБД. Клиент 1С (программа с которой работает пользователь) не соединяется напрямую к СУБД. Для трансляции запросов используется специальная программа сервер 1С (сервер приложений 1С).
Для запроса данных из SQL 1С используются запросы на языке 1С. Они могут быть использованы явно (программист написал в коде программы на языке 1С) или неявно (программист вызывает функцию платформы, которая генерит запрос или такая функция вызывается сама – в форме списка справочника/документа, например).
Сервер 1С транслирует запрос в язык SQL (соответствующую модификацию, поддерживаемую конкретным СУБД) и передает на выполнение в СУБД (SQL 1С).
Кратко о лицензировании различных СУБД
Краткая информация если Вам захочется посмотреть стоимость и в прайс-листах встретятся незнакомые слова:
- Существуют лицензии различных SQL специально для 1С (т.е. «для использования с 1С»)
- Лицензии runtime – купленный SQL можно использовать только с 1С (дешевле)
- Лицензии full-use – купленный SQL можно использовать с разными программами (дороже)
- Существуют лицензии «по количеству процессов сервера» (без ограничения количество работающих пользователей) — PVU
- Существуют комплект лицензий «по сокетам/по клиентам» — LUS
o Одна лицензия на работу SQL на сервере
o Лицензии по количеству сокетов/клиентов (т.е. на 5 соединений, на 10 соединений и т.п.).
Здесь и ниже указана очень только обзорная информация по лицензированию, так как лицензирование у всех СУБД очень сложное, есть разные ситуации, скидки, наличие/отсутствие подписки на ИТС, ограничения и правила «по умолчанию»..
Дополнительно необходимо упомянуть, что СУБД может иметь требования к операционной системе (чтобы она была тоже серверная, например, Windows Server). В варианте MS SQL так и есть, но есть и вариант «обхода» — SQL Developer Edition.
Сервер 1С – это специальная программа, которая позволяет запустить 1С в компании в клиент серверном режиме. Что все это значит?
Вообще 1С может работать в двух режимах. Первый обычно называют файловый. Программа, которую запускает пользователь (клиент 1С) на своем компьютере самостоятельно работает с базой данных.
Второй режим называют клиент серверный (или просто – серверный). Это значит, что на сервере (компьютере) запущена специальная программа – сервер 1С (программа, еще ее называют Сервер приложений 1С). Программа, которую запускает пользователь (клиент 1С) на своем компьютере, работает с программой сервер 1С, а уже та в свою очередь работает с базой данных. В качестве базы данных используется СУБД – MS SQL или подобная.
Сервер 1С обычно используют в следующих случаях:
- База данных большая (4Gb+)
- Количество пользователей большое (20-30+)
- Используется тонкий или веб клиент 1С (вообще любая разновидность связки 1С и веб)
- Хочется работать с 1С на Linux.
Что такое сервер 1С
Для исключения путаницы разберемся что имеют ввиду, когда говорят «Сервер 1С»:
- Это программа Сервер 1С (обычно запускаемая как сервис Windows)
- Это сервер, на котором работает эта программа (т.е. компьютер)
- Это сервер, на котором работает MS SQL, на котором расположена база данных, которой управляет программа Сервер 1С
- Это сервер, на котором работает веб сервер Apache или MS IIS, через который работает веб-клиент 1С.
Если я добавлю еще, что сервер 1С может быть кластером (т.е. группой серверов, на которых работают подчиненные программы сервер 1С), то можно окончательно запутаться.
Реальная схема работы Сервера 1С
Сервер 1С (точнее сервер приложений 1С) – это программа 1С, установленная [чаще всего] как сервис Windows. Также ее можно установить как обычную программу и использовать автозагрузку для ее старта при загрузке Windows. Также сервер 1С можно установить под Unix/Linux, для этого есть отдельный дистрибутив (ссылку как установить под Linux смотри здесь).
Сервер 1С не является одной программой, а состоит из несколько процессов:
- Агент сервера (ragent.exe) – собственно и является сервером 1С. Он ничего не делает кроме хранения и идентификации одного или группы кластеров 1С.
- Кластер 1С (rmngr.exe) – группа рабочих процессов 1С, которые осуществляют собственно обработку данных. Сам по себе кластер ничего не обрабатывает, а осуществляет менеджмент рабочих процессов.
- Рабочий процесс 1С (rphost.exe) – собственно «рабочая лошадка», которая обрабатывает сеанс работы пользователя.
Таким образом один сервер 1С может состоять из нескольких кластеров (которые могут быть расположены на разных компьютерах), а каждый кластер может состоять из нескольких процессов. Что это дает?
С помощью создания нескольких кластеров Вы балансируете общую стабильность системы. При падении одного из кластеров (или серверных компьютеров) – работу продолжит другой кластер.
С помощью создания нескольких процессов Вы балансируете нагрузку на процессор и количество доступной памяти.
Схема работы сервера 1С с другими составляющими 1С системы
В случае, когда используется толстый клиент 1С, то сервер 1С нужен чтобы передавать запросы на SQL сервер 1С. В случае, когда используется тонкий клиент 1С или веб клиент 1С, сервер 1С производит все вычисления. Соответственно нагрузка на компьютер сервер повышается.
СУБД (в разговоре многие называют SQL, хотя это неправильно) – это система управления базами данных. Устно часто называют как «эс-ку-эль» или «скуль» или «сиквел». В большинстве случаев с 1С используют MS SQL, так как это сложилось исторически. В версии 8.2 появилась поддержка Oracle и IBM DB2, а также для тех, кто хотел бы собрать полностью лицензионную и бесплатную систему на Linux – PostgreSQL, распространяемый бесплатно (лицензионный).
СУБД в малонагруженных системах обычно ставят на тот же компьютер сервер, что и сервер 1С. В этом случае необходимо проследить за настройками MS SQL, в том числе по использованию памяти.
В сильнонагруженных системах MS SQL и сервер 1С разносят на разные компьютеры (в сложных случаях даже сам сервер 1С разносят на несколько компьютеров). Они по разному используют ресурсы компьютера, обоим требуется процессор и винчестер. Со стороны сервера 1С нагрузка больше на процессор и память (на винчестере только хранятся временные файлы). Со стороны MS SQL при активной работе пользователей по вводу документов – это множество мелких чтений/мелких записей.
В веб варианте дополнительно используется веб сервер. Он требуется когда:
- нужна работа 1С с веб (веб сервисы, веб расширение)
- использование тонкого клиента 1С через интернет
- использование веб клиента.
Веб сервер не выполняет никаких 1С действий и выполняет функцию прокладки между клиентом и сервером 1С. Т.е. все действия он передает (транслирует) для выполнения на сервер 1С. Работа веб сервера IIS с сервером 1С построена на базе ISAPI расширения, из дистрибутива 1С.
Управление сервером 1С
Управление сервером 1С производится с помощью специальной утилиты Администрирование серверов 1С. Утилита находится в меню 1С:Предприятие по кнопке Пуск.
Если у Вас на компьютере установлено несколько версий 1С, то консоль обычно запускается – последней версии (при установке регистрируется версия консоли). Обратите внимание, что версия консоли и версия программы сервер 1С должны совпадать.
Если Вам нужно запустить консоль предыдущей версии – в меню Пуск конкретной версии 1С можно выбрать команду Регистрировать утилиту администрирования. После чего попробуйте запустить консоль снова.
Окно консоли управления делится на две части – левую (со списком параметров) и правую (информационная панель). При первом запуске панель слева будет пустая.
Чтобы добавить сервер 1С, которым мы будем управлять, и который уже установлен и запущен – необходимо нажать правой кнопкой на строку Центральные серверы 1С и выбрать Новый сервер 1С. В качестве Имени нужно ввести IP адрес или имя компьютера, на котором установлен и запущен сервер 1С.
Чтобы войти в добавленный/выбранный сервер – раскройте ветку нажав на крестик слева от имени/IP адреса:
Пообщавшись со многими людьми из сферы IT как-то напросилась мысль, что многие хотели бы знать SQL, но либо учебники скучные, то ли нет понимания, с чего начинать.
Оставлю это здесь, может кому-то пригодится.
Для начала, надо разобрать, что же такое SQL, а так же, где, как и зачем применяется.
Тут надо понимать, что SQL - это язык запросов, который дает возможность работать в реляционных базах данных.
Считаю справедливым, что нужно дать определение РБД:
Реляционная база данных - это тело связанной информации, сохраняемой в двухмерных таблицах.
Напоминает адресную или телефонную книгу, в которой есть зависимости.
Такая адресная книга называется двухмерной (строка и столбец) таблицей информации.
Еще проще говоря - у нас есть Петров Иван, и ему будет соответствовать номер телефона и адрес - они "привязаны" к нему. Это позволяет хранить информацию систематизировано, в порядке.
В этом весь смысл РБД - хранить информацию так, чтобы ее можно было легко и правильно получить. Много таблиц с зависимостями.
БД обычно не состоят из одной таблицы, поэтому, мы добавим еще одну:
Ничего не изменилось: так же, набор атрибутов у определенных "лиц".
Если мы захотим найти всю информацию по этим трем людям, мы получим следующее:
Вся информация в строке привязана к какому-то одному атрибуту - он и будет называться Первичным Ключом. Он - основа вашей системы записи в файл; и когда вы хотите найти определенную строку в таблице, вы ссылаетесь к этому первичному ключу.
Кроме того, первичные ключи гарантируют, что ваши данные имеют определенную целостность.
В SQL типы данных разделяются на три группы: строковые, с плавающей точкой (дробные числа) и целые числа, дата и время.
Строковые типы:
Типы с плавающей точкой (дробные числа) и целые числа:
Целые числа, дата и время:
Тут стоит заметить, что в разных БД могут быть разные типы данных, но базовые типы - остаются.
Вернемся к определению SQL.
SQL - это язык запросов, который дает возможность работать в реляционных базах данных - то есть, "вытаскивать" всю необходимую нам информацию по атрибуту (первичному ключу), которая имеет определенный тип данных.
P.S.: если все же полезная инфа, могу написать еще парочку статей о простых запросах Select с условиями Where. Напишите в комментарии.
Лига программистов
548 постов 7.5K подписчиков
Правила сообщества
Правило 0. begin
Правило 1. Пост не относящийся к программированию или, хотя бы, к IT-индустрии - исключается из сообщества.
Правило 2. При публиковании поста ставим корректные теги, передающие смысл публикации.
Правило 3. Данное сообщество не место для полит-срачей.
Правило 4. end.
Люди, которые делают первичные ключи текстовыми и через них строят взамосвязи - на том свете будут парсить SQL запросы вручную из таблиц с фамилиями умерших.
> Вся информация в строке привязана к какому-то одному атрибуту - он и будет называться Первичным Ключом.
Если б я не знал что такое первичный ключ, то ничего бы не понял.
Если кто-то действительно хочет изучить SQL, рекомендую начать не с постов на пикабу, а с вебинара MS 10774 Гурьянова и Самородова. Курс примерно 2012 года, но всё актуально и на сегодняшний день.
Вспоминаю золотые студенческие годы. Сдавали мы свежепридуманный ГосЭкзамен (не помню, как точно он назывался в 2002-м), специальность - Прикладная Математика (математика+программирование). Выпало мне сдавать вопрос "SQL" преподу от компьютеров сильно далекому, но в математике мощному. Никогда не забуду его слова и детям буду перессказывать. Он сказал, "я в этих ваших технологиях не умею, но ты, vaduha, если мне расскажешь так, чтобы я понял - поставлю зачет, не расскажешь - значит сам не знаешь нихера". Получил в тот день и зачет и мудрость.
Теория без постоянной практики- ерунда. Почитал, поделал, вроде понятно. Через пол года-год смотришь на свой код и охриневаешь «это я написал?!»
Если бы я не знал материал, я бы ничего не понял.
Если бы мне нужно было бы изучить этот материал, я бы полез в книги, ютуб, стаковерфлоу, но не сюда.
Это два моих скромных совета
"Реляционная база данных - это тело связанной информации, сохраняемой в двухмерных таблицах" - Это неправильно
Про первичный ключик чета напиздели - у вас легко может его не быть.
Упоминаешь "атрибут", а что это такое? Потом напишешь "кортеж" и догадывайтесь сами, что это?
> Реляционная база данных - это тело
Што? Какой-то непонятный изъёб, дабы придать тексту флёр академичности. Проще будь, ТС, тут тебе не хабр с яйцеголовыми. И да, хватит уже путать понятия данных и информации. Хранилища информации называются базами знаний. А БД в самом своём названии содержит подсказку.
Чет прям не знал бы что такое скуль, даже с ходу не заинтересовало бы-тут вообще хорошо бы начать с того, что скуль немного отличается по синтаксису в разных бд, если ты конечно не просто звезду фигачить собираешься, чуть про архитектуру того, куда ты хочешь(без этого никак, простите)-ну и дальше уже в селектики разные.
Надо хотя бы примеры писать, а то так не наглядно.
Типа select * from table t where t.name like '%федо%' ;
Ты б ещё сопромат сюда притащил!
Из курса mysql для чайников
Базы данных - почему бизнес их боится / избегает
Раньше странно было наблюдать, почему при автоматизации бизнес процессов заказчики боятся баз данных
Цепляние за эксель у многих происходит до последнего
Вроде бы уже все, можно отпустить и двигаться дальше. Но нет. Давайте лучше эксель
Переход к базе данных это следующий уровень сложности, знаний для контроля над которым просто нет
Тут они уже нутром понимают, что обратной дороги не будет. Придётся зависеть от этих мутных ИТ-шников, с их sql запросами и прочей магией
В экселе - все понятно, вот файл, в нем закладки с табличками
А база данных это где?
Еще хорошо если на локальном сервере. По крайне мере может покажут стационарный комп с мигающими лампочками. В мозгах может появится успокаивающая ассоциация, что этот ящик и есть база данных. Тогда его можно в охраняемую комнату запереть и спать спокойно.
А если база данных в "облаке"?
В газетах вон постоянно пишут про хакеров и как из облаков данные утекают
Тут все надежно, проверено мудростью предков, и есть панацея от всех проблем: ctrl+alt+delete
Когда для тебя SQL это не просто буквы
О печальной защите информации в 2017 году
В данном посте я хочу поговорить не про гигантов типа Google, Яндекс или ВК, а про обычные компании с которыми мы работаем или которые не так известны.
Несмотря на кучу законов типа ФЗ-152 уровень защищенности персональных (и не только) данных к сожалению переживает по моим наблюдениям не лучшие свои времена.
К сожалению утечки встречаются почти на каждом шагу, большинство по работе. Я хочу рассказать о найденных мной уязвимостях в 2017 году.
В начале этого года попросили проверить одну Windows программу с целью узнать, что она вообще делает. Программа позиционировала себя как обратная связь клиента с фирмой, своеобразный такой чат.
На следующую уязвимость в конце зимы или весной в 2017 году я наткнулся совершенно случайно с помощью рекламы в Яндекс-Директе.
Попалась на глаза мне контекстная реклама одной фирмы, которая говорила, что есть филиалы во многих городах РФ. Что-то тогда меня заинтересовало и я открыл их сайт.
Там открыл форму обратной связи.
С удивлением замечаю попадаю на сайт без домена, а только IP-адрес сервера.
Стало любопытно, а что работает на этой машинке? Проверяю порт FTP и… захожу под гостем. Куча всяких файлов, рабочая WEB-папка со страницами сайта. Есть немножко бэкапов. С виду сервер использовался как или помойка или как тестовый сервер.
Открываем файл конфигурации из Web-папки … Видим логин и пароль от FTP-другого сервера.
Проверяем… И попадаем уже во второй сервер…
Там тоже поднят WEB-сервер и вообще файлов намного больше… на 200 гигабайт с лишним. В основном это конечно бэкапы баз, но и очень много рабочих и свежих документов.
Внутри конфига WEB-сервера уже засвечивается и SQL-сервер с логином и паролем, который крутится на этом сервере. И да. На него тоже можно попасть.
Итог: получаем утечку в из крупной фирмы с возможностью исказить/уничтожить информацию и бэкапы баз данных.
Также в этом году для работы потребовалось создать парсер сайта довольно большой бюджетной организации для формирования БД (около миллиона строк в 3 таблицах), что бы уменьшить ручной труд и постоянные запросы к сайту. Сам сайт тоже тот еще тормоз, поэтому создание парсера было логичным решением, что бы получить сразу готовые таблицы и всегда иметь их под рукой.
В голове вместе с алгоритмом парсера и количество срок кода росла также лень всё это делать. Тогда я решил проверить теорию с предыдущим сервером. И.. Вы не поверите! Ситуация практически повторилась! Мы опять попали на FTP сервер, но на этот раз там лежал файл VPNRouter_64.vmdk. Виртуальная машинка.
Немного колдуем над файлом и получаем доступ к разделу виртуального диска внутри машинки.
Самое интересное, это папка OpenVPN с настроенной конфигурацией и сертификатами.
Копируем на свой комп, подключаемся, и… Бинго! Мы внутри защищенной сети.
Смотрим какой нам присвоил сервер виртуальный IP.
Открываем терминал, запускаем nmap сканируем всю подсеть на 80,21,1433 порты.
Есть несколько компьютеров с такими открытыми портами!
И опять нас радостно встречает FTP без пароля на одном из серверов!
А дальше классика. Открываем Web.config, получаем строку подключения к серверу и с помощью dBeaver мы получаем доступ к базе данных внутри сети. Что еще интереснее, данная комбинация подошла и на другие SQL-сервера внутри этой сети. Один пароль на все сервера (всего их было 3-5 серверов, уже не помню). И это довольно крупная бюджетная организация для нашего региона!
Опять же возможность положить сайты, совершить утечку персональных данных (я там себя нашёл), исказить/удалить.
Сами персональные данные мне уже не интересны. Я с ними работаю каждый день, допуск к базе своего региона (ну или большей её части) у меня есть и так.
Еще один случай опять же на работе, опять же в этом году.
Другая бюджетная организация дала VPN (L2TP) доступ и программку которая работает с их сервером, обмен с базой данных.
В таком режиме мы уже работаем давно, но программист написавший программу уже уволился, а неудобства с программой проявляются все сильнее и мысли написать свою программу типа плагина или хотя бы нужные скрипты. И тогда я решил провести один эксперимент, а именно попробовать подключиться не через их прогу, а через редактор БД. Выдергиваю, по какому адресу их программа стучится, вбиваю в редактор БД, и… сервер нас впустил! Ему хватило подключения по VPN и доверительное соединение! Мы опять получаем доступ к серверу ко всем базам, которые там находятся со всеми вытекающими, куда по идее мы не должны были попасть.
Похожая ситуация и в самой корпоративной сети, опять же в этом году.
Дали программу, файл реестра, внутри которого… Логин sa, пароль 111111As…. Доступ из внешки… Ну хоть не на стандартном порту. А на нем так же крутиться персональная информация! Любой админ из корпоративной сети сути может увидеть инфу другого филиала через SQL-редактор, к которой он не должен иметь доступа, а так же изменить/удалить всю БД! А то что изначально дали доступ без защищенного канала еще хуже! Благо щас перевели программу на Vipnet, но пару месяцев назад доступ по внешнему IP еще был, может и до сих пор есть.
Недавно проводил исследование одного Android-приложения (мой предыдущий пост), там такая же плачевная ситуация. Любой школьник может получить доступ к информации без авторизации, слить бюджет на СМС, зафлудить СМС чей нибудь телефон, исказить рейтинг, слить базу данных. Так же существует возможность получить права баристы простым брутом пароля!
Это всё печально дамы и господа. Давайте, мы будем относиться к защите наших серверов/ПК/телефонов более серьезно. Для проникновения внутрь не понадобились никакие эксплоиты, хакерские навыки. Только штатные программы и любознательность.
А сколько подобных серверов с открытым доступом в интернете? А сколько еще таких дырявых приложений в Маркете? Наверно тысячи, десятки тысяч.
Вполне возможно, Вы так же сталкивались с похожими ситуациями, надеюсь без злых намерений.
Многие этим профессионально занимаются, пишут ботов которые ползают по интернету, пробивают стандартные порты, брутят по словарю, ломают роутеры, IP-камеры, увеличивая армию ботов. С такими ботами встречался и я, точнее мой Firewall и было занятно наблюдать как пытались подобрать пароль от моей базы по примерно по 5-10 запросов в секунду.
Так же попадались боты которые пытались ломануть мой FTP и VNC сервер из разных стран.
Обнаружив эти попытки в логах, я убрал компы за NAT и с тех пор я держу все порты закрытыми, оставив только порт для VPN-соединения, а при, необходимости временно доступа другим людям, открываю временно их на нестандартных портах. Для постоянно доступа использую OpenVPN и генерирую сертификаты на каждое устройство.
Итак. Для минимальной безопасности:
1. Не держите FTP сервер с возможностью подключаться анонимусом. Не держите на FTP какую либо инфу, позволяющая скомпрометировать другие сервера. Конечно, если это Web-сервер и через FTP обновляется его содержимое, то дайте ему минимальные права, если его вдруг вскроют.
2. Не используйте простые пароли, которые можно легко сбрутить. Поверьте, боты не спят и рано или поздно могут приняться за ваш сервер, если он виден извне.
3. Используйте защищенное соединение. Если это не предоставляется возможным, вешайте службы на нестандартные порты. Такие порты найти сложнее и сканировать один комп относительно долго. Если есть настроенный Firewall, то вполне может сработать тревога сканирования портов и при их прозвоне ботом, фаервол начнет посылать все попытки подключения бота в лес, а порты ботом так и не будут найдены.
5. Не оставляйте в приложениях права админа, например в веб-приложениях, десктопных. Старайтесь давать минимальные права приложениям. Фукнции авторизации желательно вешать на сервер, а дальше посылать только ID-сессии, а не UserID. При обмене данными всегда проверять авторизована ли машина или нет. Особенно это касается Web- и Android-приложении.
6. Периодически проверяйте логи приложений, а так же лог фаервола.
7. Сервера желательно прятать за NAT, а в некоторых случаях (например, если это сервер с персональными данными или где проводятся финансовые операции) за двойной NAT.
8. Ну про своевременную установку патчей и обновлений, я думаю не стоит объяснять.
9. Ну и конечно следите за новостями о вирусных угрозах, эпидемиях, новых шифровальщиках
Желаю всем в следующем году стабильных линков, отсутствие зловредов и хороших клиентов. Сделаем наши сервера, базы данных и приложения более защищенными.
В этой статье выражено личное мнение автора, его видение мира, его путь, и это все не претендует на абсолютную верность и объективность. Автор не несет никакой ответственности за последствия использования данной информации, он только надеется что эта информация поможет сделать кому-то жизнь проще.
Предисловие
Сначала я просто хотел написать небольшую статью о том, как мы разносили базы по службам, но в ходе углубления в этот процесс мы добавляли всякие разные штуки (мониторинг служб, потом мониторинг пользователей внутри 1С, потом прикрутили заббикс, и, наконец, пришли к CI/CD на базе 1С). В итоге я понимаю что пихать это в одну статью будет слишком — решил разделить на несколько. Ну а название навеяно циклом статей "сети для самых маленьких", которые принесли мне много приятных минут и к которым я отсылаю всех, кто "хочет изучить сети". Итак, мы приступаем!
Когда ты признаешь проблему, значит ты на половину уже вылечился (с) один знакомый психиатр
В этой статье я хочу поделиться своим опытом администрирования большого числа 1С в корпоративном секторе. Базы все разные, есть разработка, есть тестовые, все как у всех. Но их просто достаточно много. И все было хорошо, но в определенный момент проводить какие-то админские работы стало крайне тяжело и рискованно.
Какие у нас были сложности:
- Подвисшая база тянула за собой перезапуск службы, а значит страдали невинные (пользователи других баз)
- Было тяжело понять кто сегодня "герой дня" — какая база заняла все ресурсы
- Обновление релизов — обновление одной тянуло за собой автоматическое обновление всех баз на этой службе
- Ручное подключение баз пользователям, ручное изменение в случае переездов
- Мониторинг
И только сейчас я понимаю что это была только вершина айсберга.
Акт первый, действие нулевое
Небольшое отвлечение на основные постулаты, осознание которых далось большой кровью и болью.
- Старые версии 1С (до 8.3.11+) имеют просадку по производительности при работе в виртуализированной среде. (Источник — Гилев и собственные тесты)
- Кластер есть, но с ним все крайне не просто. Возможно его доработают потом, но пока он в основном для галочки. (источник — собственный опыт)
- При выборе процессора смотрите только на частоту. Процессор в 6 ядер по 3,4Ггц порвет в куски процессор на 20 ядер по 2Ггц. Проблема в том, что 1С вообще ничего не знает про параллельные вычисления. По сути это работает так — у нас есть определенное число воркеров для каждой службы, их раскидывают по процессорам, и если в каком то воркере пользователь запустил какой-то тяжелый отчет то в системе будет загружено только одно ядро процессора. Именно то, на котором работает воркер с запущенным заданием… Для БД ситуация кстати ровно обратная. (источник — Гилев, собственный опыт, опыт коллег)
- Не используйте логи в "новом" формате (запись в SQLLite) — вы очень быстро столкнетесь с тем, что производительность этого решения еще хуже чем файлового варианта. (Источник — собственный опыт, опыт коллег).
По подсказкам из комментариев есть вариант вынести логи на отдельный инстанс.
В 8.3.12 обещали логи в нормальный скуль. - 1С оооочень не любит IPv6. На всех серверах с 1С лучше сразу понижать приоритет IPv6 до минимума. (Источник — Гилев, собственный опыт)
- Используйте для виртуальных серверов виртуальные сетевые карточки E1000. С остальными проблема по производительности (Источник — Гилев, но на собственном опыте не подтвердилось, хотя особо и не тестили)
- Обслуживание баз дает хороший прирост производительности, особенно периодический пересчет итогов, а так же обслуживание индексов SQL (Источник — собственный опыт, Гилев)
- Поиск причин падения 1С сродни поеданию неочищенного кактуса. Выяснить что-то толком можно только через боль, унижения и страдания. (Источник — собственный опыт)
- Нет ни одного официального образа ни под один гипервизор. Про докер я вообще молчу. (Источник — сайт 1С)
- Программная лицензия для сервера привязывается к — сюрприз, сюрприз — серийному номеру процессора (и еще огромному количеству параметров сервера). В эпоху повсеместной виртуализации ход потрясающий. Поясняю — активировали сервер, переехали на другую ноду, перезагрузили машину — 1С не запуститься. Расчехляйте новый активационный код. (Источник — собственный опыт, болтливая техническая поддержка 1С =))
- 1С — это учетная система, а не отчетная. Хотите много нормальных жирных отчетов и быстро — выводите это за рамки 1С. (Источник — собственный опыт)
- У 1С есть два неоспоримых достоинства, за счет которых она будет процветать еще долго:
- стоимость самого продукта/разработчиков
- скорость разработки
и к сожалению для российского бизнеса они являются первоочередными. А зачастую и единственными, на что вообще смотрят. (Источник — печальная реальность)
- Никогда не используйте файловую шару как место под хранилище конфигураций 1С. Только службу. Иначе маты со стороны разработки о упавшем черт знает когда хранилище станут вашим неизменным спутником по жизни. (Источник — собственный опыт, опыт коллег)
Акт первый, действие первое
Первая короткая сценка из корпоративной жизни
На сцене — Админ (А), программист 1С (П1С) и представитель бизнеса (ПБ)
ПБ — У нас медленно работает программа!
А — у меня в системе все хорошо!
П1С — я все написал правильно, у меня на компьютере все работает быстро!
ПБ (робко и растерянно) — но она же долго…
А и П1С хором — у нас все хорошо, проблема на вашей стороне!
Проблемы всегда случаются не вовремя (с) (5-летний философ)
И вот в одно прекрасное солнечное утро (на самом деле это была глубокая зимняя ночь) мы поняли что завтра надо запустить новую базу. Завтра наступал тот прекрасный день, который уже много раз описывался тысячами авторов и имя ему — легион! Тьфу, простите, занесло. Имя этому дню был дедлайн. Час ночи, завтра на 200 компах должна запуститься новая база." Да не проблема, у нас же все компы в домене! Сейчас быстренько сделаем логин-скрипт и дело в шляпе!" подумаете вы. И будуте правы — так же подумали и мы. И сделали. Только, как обычно это бывает, погорели на мелочи — я в логон-скрипте я прописал %filename%.bat а коллега выложил %filename%.cmd.
Ну и понятное дело с утра хелпдеск побежал делать все руками, а мне было очень стыдно за такой тупой фейл. Извинялся перед парнями тортиком.
Но мысль автоматизации этого процесса у меня в голове засела очень крепко и стал даже вырисовываться план внедрения.
В итоге мы пришли к следующей идеологии:
- Все раздается через AD — создаются группы вида 1cbases-%версия платформы%-%имя базы% и туда силами хелпдеста добавляются пользователи, которым нужна база.
- одна группа — одна база
- 1cbases — это префикс по которому удобно искать группы
- версия платформы 81, 82 и 83 (релиз не принципиален)
- название базы соответствует имени файла с настройками
Как мы это делали:
- Через групповые политики добавляется новое задание в планировщик (задача планировщика прописать пользователю путь к файлу подключения базы):
- запускать от имени пользователя
- событие — разблокировка компьютера
- действие — запуск нашего скрипта
- Создаем нужные группы в АД и заполняем их пользователями
- Создаем нужные файлы для запуска самих 1С. Тут остановлюсь чуть поподробнее. Изначально мы долго мучили интернет своими запросами и нашли полное описание структуры файлов *.v8i. Но потом нашелся способ проще и гениальнее.
- запускаем 1С
- настраиваем подключение к базе
- проверяем что все работает
- кликаем правой клавишей по названию базы и выбираем пункт — "Сохранить ссылку в файл"
- Добавление баз теперь не было морокой — просто делали группу, добавляли файл с настройками — дальше все происходило автоматом
- Могли спокойно переносить базы куда угодно, просто меняя конфигурацию в файле с настройками подключения к базе (как показала практика — очень удобно)
- Сберегли обувь хелпдеску
Акт первый, действие второе
Вторая короткая сценка из корпоративной жизни
И с этой стороны ни чуть не лучше… (с) печальный ослик Иа-Иа в свой собственный день рождения
Вот представьте себе — сидите вы в удобном кресле, в одной руке чашка вкусного чая, в другой пышущая жаром и свежестью булочка из кулинарии ближайшего магазина, за окном приятно пахнет весной… И это, конечно же, самое подходящие время для звонка с проблемой! Коллега — Байконур, у нас %@па!
Я — я так понимаю что стадию Хьюстона с проблемами мы уже успешно пролетели?
Коллега — да. База %имя базы% подвисла, вообще не отвечает, ТОПы уже рвут и мечут. 3 раза мне уже звонили. Надо перезагружать службу.
Я — так там же еще пачка баз на этой службе.
Коллега — да, поэтому вторая половина ТОПов тоже рвет и мечет что их отключат.В итоге конечно все согласовали, перезапустили, но осадочек остался.
- В продуктовой среде мы должны следовать правилу — одна база — одна служба с разнесением по портам
- Запускаться службы должны исключительно из-под доменных учеток. Одна служба — одна учетка. Это удобно для раздачи прав на шары, доступ в скуль и прочее. Так же, если у вас внедрена RBAC то вы можете очень оперативно посмотреть куда имеет доступ конкретный экземпляр 1С
- Логи нужно вынести на отдельный диск и включить на эти папки сжатие (при разбитии по дням это очень сильно экономит место и ускоряет (незначительно) поиск по логам)
- Каждой службе выдается alias в DNS для того, чтобы отвязать разработку от ip и/или dns сервера (в этом случае разработка вообще не волнуется на предмет того, где фактически находится сервер — физика, виртуальная машина в приватном облаке или вообще в публичном облаке)
- На каждую службу мы выделяем 500 портов для пользовательских соединений (наше внутреннее решение)
Как мы это делали (для нового сервера. для уже существующего часть шагов не актуальны):
- Создаются учетки под каждую службу
- На машине, где они будут работать им выдаются права на "запуск как службе"
- Ставиться MS офис, обязательно с активацией по MAK-ключу
- Ставится sqlncli — утилита из набора MS SQL Native Client. На данный момент выше 2012 не появлялось
- Создается папка C:\Windows\SysWOW64\config\systemprofile\Desktop — в противном случае есть проблемы с выгрузками в Word/Excel
- Для Windows 2016 и 1С 8.1 нужно скопировать старую версию dll (В папке C:\Program Files\Common Files\System\Ole DB надо заменить два файла sqloledb.dll и sqloledb.rll взятых со старых серверов)
- Ставятся дополнительное ODBC драйверы, если нужно подключатся к MySQL/PostgreSQL
Настройка папки для службы и логов:
- Создается папка на отдельном диске называется в формате 1CServer%basename% (в стандартном случае это делает сама служба, ибо у нее есть в настройках запуска путь к логам)
- Если внутрь каталога только что созданной службы переносятся данные из другого каталога (другой службы, другого сервера), то необходимо заменить владельцев (иначе служба не получит к ним доступа) с заменой владельца подконтейнеров
- Владельцем папки делается учетная запись службы
- Для того, чтобы в службах не было кроказябр
- в cmd ввести команду chcp 1251
- файл надо сохранить в ANSI кодировке
- Обязательно надо проверить на отсутствие дублирующих ключей в строке запуска — служба с ними не стартует.
- Для того, чтобы удалить службу, можно воспользоваться командой — sc delete «Имя заданное в переменной name»
- Добавить порты используемые 1С в разрешения в firewall
- Нужен всего один физический ключ на сервер — все службы будут активироваться им
После проведения всех мероприятий в итоге мы пришли к:
- Базы можно спокойно перезагружать, не трогая другие базы
- Всегда можно найти "героя" — базу, которая съедает все ресурсы
- Любые работы с базой касаются только одной конкретной базы
В следующих статьях я планирую рассказать (если эта статья народу зайдет):
Читайте также: