Подтвердить что ты не робот

Защита кода от его собственных разработчиков

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

Какие другие подходы, помимо этого чисто юридического, существуют для защиты программного кода от людей, которые его разрабатывают? Они вообще существуют? Это имеет смысл на практике?

Может быть, например, Team Edition Visual Studio уже содержит некоторые функции, связанные с этой проблемой (например, уровни доступа к частям кода, в зависимости от роли внутри команды разработчиков или что-то в этом роде)?

Ссылка на тему:

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

4b9b3361

Ответ 1

Попробуйте создать команду, которой вы можете доверять.

Ответ 2

Первый подход заключается в том, чтобы заставить программистов знать только интерфейсы других компонентов, так что каждый может только украсть небольшую часть всего программного обеспечения. Такой подход может быть заимствован из производства обуви. Одна транснациональная корпорация, чтобы предотвратить кражу со стороны сотрудников, организовала свои заводы, чтобы каждый factory производил только левую или только правую обувь. Вы можете сделать то же самое с вашим кодом: некоторые программисты только пишут строки с нечетными числами, а другие - с четными числами; при условии, что они не могут видеть работу друг друга! Это иногда называют " парное программирование.

Некоторые организации заставляют сотрудников подписывать неконкурентное соглашение. Это соглашение, которое мешает программистам работать на конкурентов. Этот метод лучше всего сочетается с публикациями о работе: "Ищу старшего программиста с 5-летним опытом работы в аналогичной области".

Чтобы ваши программисты не воровали, вы можете нанести им вред, как только они закончат программное обеспечение. Метод оказался наиболее эффективным и использовался на протяжении веков. Например, русский царь Иван Грозный сожгли глаза архитектора, который спроектировал красивую церковь на Красной площади, так что одна из них осталась самой красивой. Вы можете сделать что-то подобное своему архитектору. Я слышал, последняя Visual Studio содержит некоторые функции...

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

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

Ответ 3

Как вы защищаете электростанцию ​​от саботажа со стороны сотрудника? Как вы мешаете боксеру бросить бой? Как вы препятствуете распространению публичного дома хлопок?

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

Ответ 4

Очень маловероятно, что ваш код является реальной интеллектуальной собственностью - это знание и процесс вашей компании.

Ответ 5

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

Ответ 6

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

Файл для этого находится в conf\authz Вот пример

[aliases]
# joe = /C=XZ/ST=Dessert/L=Snake City/O=Snake Oil, Ltd./OU=Research Institute/CN=Joe Average

[groups]
# harry_and_sally = harry,sally
# harry_sally_and_joe = harry,sally,&joe

[/
# [/foo/bar]
# harry = rw
# &joe = r
# * =

# [repository:/baz/fuz]
# @harry_and_sally = rw
# * = r

Некоторая документация может быть найдена здесь

В разделе Контроль доступа к каталогам

Ответ 7

Создайте команду разработчиков, которой вы можете доверять, или полностью заблокируйте их систему, чтобы они не могли получить доступ к портам USB, компакт-диску или веб-почтовым клиентам. Единственное, что они могут сделать, это работать над кодом и, возможно, просматривать веб-страницы. Также дайте им доступ только к коду, за который они отвечают.

Но со всеми этими мерами безопасности вероятность того, что ваши разработчики будут ненавидеть работать с вами и выйти из своей работы

Ответ 8

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

Имейте в виду, что декомпиляция фреймворков, работающих против IL, таких как .NET, относительно проста, поэтому предотвращение доступа к файлам кода не обязательно является серебряной маркой для защиты IP.

Ответ 9

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

Ответ 10

Вы можете заставить их разработать модуль, который будет отделен от остальной части приложения. Если бы у вас была система типа плагина/модуля, это бы хорошо подойдет. Вы могли бы выпустить API-интерфейсы для разработчиков, чтобы они развивались против, и интегрировать их с вашими DLL, а не с исходным кодом.

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

Ответ 11

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

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

Ответ 12

Разработайте свое программное обеспечение в модулях.

Есть один общий модуль, который содержит объекты, которые проходят взад и вперед, и классы полезности, которые действуют на эти объекты.

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

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

Также у вас есть большая уверенность в том, кто запустит ваш сервер управления версиями. Хотя он стабильный, ни один разработчик не может нанести столько вреда; они не могут удалить все, например, и вы точно узнаете, что они сделали, и когда это когда-нибудь станет проблемой.