Комментарии 162
Не утруждайте себя проверкой 3rd-party кода
Этот пункт встречал в довольно адекватных известных компаниях: свой код проверяется со всем усердием, а код сторонних разработчиков иногда даже не смотрят, хотя он работает с теми же данными и (иногда) на тех же серверах. Объяснений этого, кроме дикого разгильдяйства или того, что ответственность за уязвимости переложена на другую компанию, я пока ее нашёл.
Кроме того, знаю пару компаний, где мнемонические логины создаются по настолько дурацким правилам, что просто капец.
Также напомню достаточно известный опус про Дарью Пескову, который говорит, что строгое следование правилам не всегда есть гуд (у кого не открывается оригинал с pynet, попробуйте тут.
Тут одно из трех. Или неограниченные права. Или виртуалка с неограниченными правами. Или готовность предоставить первые два варианта в тот момент, когда возникнет такая потребность.
Что же до установки службы, то написание инсталятора — вполне себе ответственность разработчика.
Но локальная машина тут совсем не причем.
Кстати, инсталлятор — можно не писать, а взять готовое решение.
Значит, вариант два — нужна виртуалка с неограниченными правами.
, слава богу, я не разработчик под виндой. Я вообще не разработчик, но не могу представить рабочий процесс без sudo. И даже в винде на виртуалке, где из кода только редкие скрипты на vba, представить работу бе полных прав очень сложно. Или рабочий процесс должен быть жутко формализован и составлять одну рутину или это мазохизм.
У вас java или tomcat от имени пользователя не запускается?
Или вот например, я вчера узнал про meld, тут-же его поставил себе и перестал мерджить гиткракеном, и жизнь моя улучшилась. Разве ж мог я себе такое позволить без sudo
На windows очень часто для этого требуются права администратора, в очень редких случаях можно это обойти, но усилий будет затрачено на порядок больше.
А вот как разрабатывать системное ПО без прав рута на линуксе я даже не представляю, там же все библиотеки принято ставить в /usr/lib и /usr/include…
Например очень много игр написано на С++.
Но если какая-то игрушка начнет требовать права администратора при установке — я очень огорчусь.
Может быть браузер без админских прав не запустится (чтобы было проще майнерам попадать в комп)? Или архиватор?
IMHO админ права нужны исключительно системному ПО, за крайне редким (и аргументативным) исключением.
Новый инструмент для разработки?
Я достаточно давно в IT, и не помню, чтобы в проектах регулярно каждый разработчик себе что-то доустанавливал.
Даже для разработки операционной системы — один раз поставили себе студию, apache-ant, gcc, фар, git, путти и ВСЕ — последующие несколько лет ничего дополнительного ставить не приходилось. jenkins/gerrit/etc крутится не на рабочей машине.
Пользовательские переменные окружения У НАС не настраиваются только с правами пользователя.
Видимо вы что-то делаете не так. У вас политиками запрещен запуск любой программы кроме разрешенного списка?
Если ВЫ разрабатываете ПО, вы его где собираете? Как ваша IDE может писать в каталог, а вы нет?
Вот это вручную и бесит.
Используйте переменные, чтобы решать начинать путь от пользовательского кастомного каталога, или от program files/program data в зависимости от окружения.
Не путайте «вручную» и локальное девелоперское окружение для разработки.
Все это легко автоматизируется.
И да, каталог с ПО по сути ничем не отличается от каталога с ПО + исходники.
В любом случае нормальное тестирование на локальной машине будет ограничено возможностями — тестировать ведь лучше с заранее подготовленных образов, чтобы тестировать чистую установку и апгрейд на разных версиях ОС с разными патчсетами.
Как вы автоматизируете поиск зависимостей для библиотеки в интернете когда пакетные менеджеры под запретом?
Зачем вообще придумывали пакетные менеджеры когда все так легко автоматизируется?
Указываете APP_HOME и все, дальше все сделает скрипт — разложит приложение и его ресурсы по папкам, и будет знать откуда запускаться.
2. Усли пакетные менеджеры под запретом для разработчиков, которым необходимо им пользоваться — меняйте работу. Если же вам так только кажется, и доступен например maven, можно подняьт свой локальный репозиторий пакетов и пользоваться им. Причем это можно сделать в любой папке, включая $HOME.
3. Пакетный менеджер это всего лишь инструмент. Пользуетесь ли вы им вручную или пытаетесь автоматизировать регулярную рутину — ваш выбор.
Все равно получается, что вместо простейшего apt-get libuv-dev нужно искать libuv в интернете, делать из нее пакет для maven и самостоятельно класть в свой репозиторий. И так для любой библиотеки которую захотелось попробовать.
Тогда в целях безопасности поднимается локальный репозиторий с проверенными и разрешенными продуктами, которые добавляются туда по запросу/после проверки.
Ну и опять таки, что значит «захотелось попробовать»?
Заказчик платит за то, что в следующей версии появится функционал x. Нужно не пробовать разные библиотеки, а пилить этот функционал, уже зная какая библиотека его точно обеспечит, либо писать свой функционал.
Если же вы работаете в компании, которая выпускает собственный продукт, в проекте, где на рефакторинг и оптимизацию выделяют отдельные средства/время — то у вас врядли вообще стоит вопрос о закрытости.
В любой ентерпрайз продукт, добавление какой-либо библиотеки по решению левой пятки одного разработчика — это абсурд. Как минимум согласование с архитектором, а то и утверждение с локальным менеджером, если это платная библиотека.
Поиграться — играйтесь дома, на работе нужно работать по тикетам, и решение о том, что можно использовать и как мы это пилим — описывается в design solution архитектором проекта.
Ну да, я видел проекты где именно так и происходило. Но зачем равняться на худших?
Если вы на должность архитектора возьмете джуниор программиста, конечно он будет тыкать пальцем в небо.
Если адекватного опытного разработчика — то таких проблем не будет. И я не понимаю в чем проблема показать архитектору библиотеку, и предложить добавить ее в репозиторий.
Это же все входит в список пункта 3, описанного в статье — «давайте протестируем наш код, а затем добавим сотню-другую неизвестных 3rd пати рандомных плагинов и библиотек и сразу в продакшн.»
На своей практике очень много раз убеждался, огромная часть разработчиков не знает основ информационной безопасности, не знает бест практикс и очень равнодушно к этому относиться. От сюда и плодятся франкенштейны типа софта работающего только под административной учетной записью.
Вопрос прав разработчиков, это не вопрос админов, это общий вопрос эксплуатации. И не следует выделять разработчиков в какой-то мифический класс сотрудников которым без административной учетки ну просто вообще никак. В идеале, в организации вообще не должно быть сотрудников которые работают под административными учетками, в том чисел админов.
Если говорить конкретно про разработчиков, то при наличии у них админских прав системы превращается в не обслуживаемый зоопарк. Так, что тут два выхода, или им таких прав не давать или систему обслуживать за пределами досягаемости их прав. Например выдать им всем личные ноутбуки и по умолчанию считать их не доверенной средой. А ноуты свои они пусть обслуживают самим( единственная роль админов, если надо снести и залить нулевую готовую среду ). Во многих компаниях именно к такой схеме и приходят.
Службы не рекомендуется запускать из под пользовательской учкюётки, со стороны пользователя может запускаться обёртка для интерактивного общения с пользователем. Служба же должна работать в т.ч. и на серверной машине, если есть необходи
необходимость. При этом в win службы запускаются с разными наборами прав в зависимости от того куда им нужен доступ.
p.s. редактирования в мобильной версии нет :(
1. нужен .net
2. служба должна быть специально спроектирована для работы под этой учёткой
3. может я не правильно понял, но вроде как 1 компьютер — 1 учётка? т.е. нельзя завести сервис под 1-й учёткой на группу? ( я не силён в настройке сети через AD но как-то не очень хорошо выходит?).
p.s.
и ещё вопрос(чисто теоретический), если я, к примеру, смогу вынести .net в системе(сломать) то службу под MSA уже не запустить?
2) Служба не проектируется под учетку, учетка конфигурируется под службу.
Отдельные сложные службы( сложные- многокомпонентные ) могут иметь проблемы при работе по учетками msa. Проблема проблема в том, что службы используют различные не слишком документированные или красивые механизмы в своей работе( читай костыли ) и скорее всего нарушают изоляцию.
3) Да 1 компьютер — 1 учетка. Если вам нужна служба на множестве компьютеров, что уже само по себе вызывает вопросы архитектурного характера( если только это не сильно распределенная система ). То можно создать обычный доменный аккаунт, или запускать службу от networkservice, но следует понимать, что таким образом появляются дополнительные риски. Но например для службы мониторинга ибп это вполне приемлемо.
Насколько я понимаю .net нужен только на DC для PS. На клиентских машинах он не обязателен. Вопрос со сломать .net не проверял, но думаю к проблемам это не приведет.
Кол-во пользователей имеющих админские права должно быть минимизировано. Если у определенных пользователей есть админские права это может означать две вещи, в организации бардак с безопасностью или это осознанное необходимое решение, можете самостоятельно выбрать подходящее по вкусу.
Большинству разработчиков или никогда или очень редко необходимо менять переменные окружения. Учитывая, что эти переменные должны отражать продакшен среды их вполне можно установить общей политикой.
А время то вам менять зачем понадобилось? За такое в доменной среде по рукам бьют и больно.
Особенно радует, если фоновая картинка (уменьшенная до текущего разрешения) в оригинале является high-резолюшен фото для полиграфии, которая ставится на слабые рабочие станции.
Особый вид — заставка 7 минут (без прпва сменить ни заставку ни время, интересно почему не 3 минуты? может пару костей бросали), когда у тебя не один комп. и монитор на столе это немного достаёт.
Но все равно большинство людей с этим живут, тратят время чтобы перейти на нужную страницу — это ужаснее чем рабочий стол, с нескучным логотипом).
Борюсь с этим в нашей компании.
Правда лет 7 назад она была куплена другой компанией, и возможно там все изменилось.
Перегородок, кстати, не было, они полагались только молодым незамужним девушкам.
То есть, сотрудница вышла замуж, а на следующий день у неё на работе торжественная церемония по сносу перегородок?
Создайте длинный, скрупулезный и сложный процесс QA, который занимает примерно 5 часов рабочего времени, чтобы пройти все тесты, даже если ошибки не обнаруживаются. Требуйте проверку кода как минимум в трех различных энвайрнментах, прежде чем он будет отправлен на мерж в продакшн ветку.
Небольшой перегиб, но в целом правильно. Пять часов работы роботов — это не так уж и много. А некоторые продукты могут требовать многомесячного тестирования человеком — и в этом нет ничего странного.
Если вы предложите NASA запускать спутники после «длинный, скрупулезный и сложный процесс QA, который занимает примерно 5 часов рабочего времени», то на вас посмотрят как на идиота.
Ещё скоростной напор в неск. М тоже очень непросто.
Ну и — в вакуумных камерах работу однокомпонентных гидразиновых движков вряд ли дадут проверить (а с ними куча проблем вообще-то — то примёрзнет что, то отравится), пироболтов всяких
a) пройдут все тесты (юнит и интеграционные)
б) того как его отревьюют.
в) один из PTL (team leader) одобрит
г) после этого коммит становится в очередь, его ещё раз гоняют по интеграционным тестам (часы!), и только после этого робот мержит в мастер.
Среднее минимальное время на принятие merge request'а — около 48 часов. Это если никаких претензий к коммиту не было.
И это — одна из самых офигенных схем, которую я видел.
Альтернативно — посмотрите, сколько времени уйдёт у вас до принятия merge'а в master у вот этого репозитория: git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git.
Если за пару месяцев управитесь — можете считать себя героем и просить большие деньги.
В любом случае, вероятность заслать что-то вне merge window, если это не багфикс, нулевая.
Тут вопрос же не в том, через какое время в продакшен выкачены изменения, а как быстро их может увидеть программист. А для этого есть ответ — staging.
Тут вопрос же не в том, через какое время в продакшен выкачены изменения, а как быстро их может увидеть программист. А для этого есть ответ — staging.
В том-то и проблема, что в подходе "слияние только после тестирования!" изменения по два месяца не могут попасть даже на staging.
Если эта ветка — продакшен, то может требоваться. Ближайший опенсорс аналог — gerrit/zuul у openstack'а. Коммит в master принимается после:
Простите, но это практически в любой современной CI тулзе (bitbucket/stash, gerrit/zuul) работает — то есть возможность интегрироваться с билд сервером, чтобы разрешаьт мерж только после успешного билда (который может содержать как сборку продукта, так и тестирование, включая различные анализаторы (pvpstudio). Ну и плюс ревью от указанных ревьюверов/групп.
Настроить «в очередь» — можно банально сделать две ветки — pre-master и master, которые ничем не отличаются. Соответственно все делают пулл реквесты в pre-master, на что срабатывает триггер, который запускает дополнительное тестирование, и затем уже автоматом мержит в мастер от имени технического пользователя.
Но мы слишком серьезно увлеклись… Это перевод все-таки юморной заметки.
Ну а в каждой шутке всего лишь доля шутки…
Лучше обсудим залоченный фон в корпоративных рабочих машинах?
Лучше обсудим залоченный фон в корпоративных рабочих машинах?
И жестко прибитый таймаут на lock screen в 60 секунд.
Что же касается залоченного фона — а у кого это проблема? Я вот бэкграунд рабочего стола вижу только после ребутов после апдейтов. Дальше у меня на экране есть что-то кроме, картинки. Окна там всякие, приложения. suspend/resume и у машины аптайм с апдейта до апдейта.
При этом неотключаемая фоновая картинка доставляет много удовольствия в процессе логина, где в 2018 году в локалке ты видишь картинку, подгружающуюся как гифка файлэхе ru.pretty.girls по модему.
HR не только занимается наймом, но различной активностью связанной внутренней корпоративной политикой.
Проактивная позиция в плане психологической поддержки сотрудников часто выливается в странные ивенты, которые могут быть интересны школьникам/студентам…
Решили сделать красивые картинки, отдали задачу админам, внедрили. Админы люди подневольные менеджменту…
Но на самом деле тут же речь о другом: автоматизация workflow. Тот же опенстек пишется людьми с разными компетенциями и разной квалификацией. Многие из них друг друга в глаза не видели, но им надо работать вместе над очень сложным проектом с большим количеством строк кода и сценариев применения. Один разработчик поправил cloud-init, а другому разработчику в ironic это сломало провиженинг в с metadata-server для бареметалл серверов. Чтобы этого не происходило нужны тесты. Автоматические. И система защиты от дурака, который не позволит случайно сломать workflow.
Нормальные требования, если утечка информации критична.
только звонок в ИТ отделТолько поход! С объяснением, как так умудрился забыть пароль!
Это, если что, не шутка — тоже реально попадалось на одном заводе.
Вот это уже шутка, если что.
И что б если раз ошибся при вводе — все залочить
Еще (славабогу) не встречал, чтобы лочили с первого раза.
Я пытался изобрести алгоритм, как правильно все сделать, казалось бы, вот надежный:
1. Выключить телефон и закрыть почтовый клиент на десктопе
2. Поменять пароль на новый
3. Включить телефон (вот тут сразу облом, иногда клиент начинает лезть сразу со старым паролем, на ios там все очень нетривиально, особенно когда корпоративные настройки всякие вручную прописаны)
4. При запуске почтового клиента на десктопе — аналогично, он сразу лезет проверять почту и акк лочится
Поэтому этот алгоритм не подходит. Единственное, что в итоге подошло:
1. Удалить почтовый клиент с телефона и никогда им не пользоваться больше (реально из-за этого снес почту с корп. телефона навсегда, я не смог синхронизировать сброс пароля почты на телефон и в учетной записи, он всегда сам как-то лез проверять со старым паролем, после 5-го звонка в тех. поддержку удалил).
2. Запустить почтовый клиент на дескптое, пойти в настройки сервера, выбрать «смена пароля» и оставить висеть это окно открытым
3. Сбросить пароль учетной записи
4. Вернутся в открытое окно на шаге 2 и ввести туда новый пароль.
5. Если повезло и нигде не ошибся — слава богу! Мы победили. Почта получается по новому протоколу.
6.… до тех пор пока не потребуется ОТПРАВКА письма, забыли на SMTP еще поменять нужно!!! бл*:??*%"№
7. Все лочится — звоните в тех поддержку (почта не работает, залогиниться в комп нельзя)
Я так подозреваю, что всего этого не существовало для обычных пользователей на винде, у них смена пароля в одном месте меняет его и в аутлуке и везде, но для пользователй других ОС, с thunderbird-ом и ios -мартфоном это был адский ад…
В частности этого и пытаются избежать создавая стандартизированную среду и не допуская пользователя до админских прав.
Т.е. есть домен, есть одни апрувленый почтовый клиент( в вашем случае скорее всего оутлук ), есть эксчендж( судя по описанию ). И все должно приемлемо работать. Но тут приходят он, зоопарк. Десяток почтовых клиентов, потому как Петя любит bat, а Вася громоптичку, а у Элины iOS и она признает только яблочный мэйл. И это только электронная почта. И поддерживать это в удобоваримом состоянии плюс оказывать поддержку пользователям( как бы они не говорили, что справятся сами, они все равно идут к админу, и «пожалуйста настрой, тебе сложно что-ли») это огромная, титаническая работа, только вот людей на нее не выделяют.
Да это не гибко, и каждый пользователь может назвать как минимум одну причину почему именно bat, thunderbird, mail, chrome, opera и т.д., но надо понимать, что к плюсам всегда идут минусы.
Как в таком случае контролировать лицензии?
Некоторые лицензии, которые можно использовать для себя, нельзя использовать в компании.
Ну и не путайте почту и Exchange, который гораздо больше, чем просто почта. Клиенты для Exchange есть для всех платформ. Кроме того есть web outlook.
Т.е. или у всех один утвержденный почтовый клиент. Или каждый ставит, что хочет, но и проблемы решает сам.
«Установку ПО проводить только с помощью заказа ПО в специально написаной программке которая не обновлялась со времени Win95. (Которую как-раз поддерживает отдел со стоячими раб. местами и бильшими окнами). После этого как минимум 3 менеджера должны согласиться с тем, что вам это ПО нужно для работы (Обсуждение ведется по всем правилам оформления в трекере из п.5)»
Не утруждайте себя проверкой 3rd-party кода
Допустим, основная система — 1М строк кода, одна из сторонних библиотек — 4М строк.
Автор предлагает проверять эту библиотеку отдельно?
Да, production server по-русски называется рабочий сервер или сервер эксплуатации.
И вот пришел к нам как то молодой человек, по имени Дима, с простой фамилией Ермаков… К сожалению, он над этим не задумывался, а до админов дошло не сразу — в итоге многие клиенты получали почту от его учетки, пока кто то не предложил переименовать…
К нам однажды получив логин из имени+инициалы, дама по имени Алсу пришла жаловаться — «почему вы меня сукой назвали»? Инициалы были К.А.…
Ну и с Анной, которой не повезло иметь инициалы А.Л. тоже несколько неловко получилось…
del
Еще для деморализации сотрудников можно
1--поставить какой-н галимый мессенджер, например, bitrix24.
2--В добавок к этому можно устроить культ тайных доносов коллег друг на друга.
3--Лишить разработчиков прав админа на своих PC. Устанавливать программы по паролю менеджера.
4--Поставить перед каждым сотрудником Web камеру слежения
5--для деморализации программистов их обычно заставляют писать и собирать код на удаленном сервере с подключением через SSH и редактируя код в vim ! Из-за этого цикл разработки в 4 раза продолжительнее, чем если бы исходники были бы локально. Система иногда лагает, зависает и обрывает SSH соединение.
Текст очень похож на классический Out Source
https://habr.com/ru/articles/720464/
--Еще для демотивации сотрудников можно заставить сотрудников ходить в уборную по расписанию.
Каждый сотрудник при устройстве заполняет табличку в какое время он будет ходить в уборную.
Читал, что так в Tasla Motors было.
--Также можно сотрудникам наколоть на руке наколки с ID сотрудника.
Как деморализовать сотрудников: Гайд для плохих компаний