문제

이 질문에는 이미 답변이 있습니다.

프로젝트와 법률을 오픈소스화하는 것 외에도 회사/그룹 외부로 코드 유출로 인한 피해를 방지하거나 최소한 최소화할 수 있는 방법이 있습니까?

프로그래머는 참조가 필요하기 때문에 (코드를 이메일로 보내는 것을 방지하기 위해) 인터넷 액세스를 차단할 수는 없습니다.또한 주변 장치(USB, Firewire 등)도 차단할 수 없습니다.

코드는 일부 독점 알고리즘과 내부 개발 지식(GUI 그리기, 데이터베이스 연결 등을 위한 일반적인 루틴 코드와 반대)이 있을 때 가장 중요하지만 일부 응용 프로그램(예: 회계 소프트웨어 및 CRM)은 다음과 같습니다.원칙적으로는 개발하기 쉽지만 처음부터 작성하려면 수년이 걸리는 복잡한 루틴 코드 모음입니다.유출된 코드가 경쟁업체에 도움이 되는 곳이 바로 여기입니다.

내가 보기에 누출을 방지하는 것은 거의 전적으로 인간의 프로세스에 달려 있습니다.어떻게 생각하나요?어떤 예방 조치와 조치를 취하고 있나요?코드 유출이 이전에도 영향을 미쳤나요?

도움이 되었습니까?

해결책

당신은 그것을 멈출 수 없습니다. 그래서 두 가지 해결책 - 당신을 해치고 싶어하는 사람들을 멈추고 법적 예방 조치를 취하십시오. 사람들이 당신을 미워하는 것을 막기 위해서는 그들을 올바르게 대우합니다 (더 많은 것은 아마도 스택 오버플로에 대한 주제가 될 것입니다).

저는 변호사가 아니지만 법적 보호를 제공하기 위해, 당신이 그것을 믿는다면, 아이디어를 특허하고, 코드에 저작권 통지를하고, 프로그래머에 대한 계약이 신중하게 지적 재산권을 지정하는지 확인하십시오.

그러나 하루가 끝나면 대답은 경쟁보다 빠르게 진행됩니다.

다른 팁

고도로 분류 된 것으로 작업하고 이메일과 USB 장치를 차단할 수 없다는 점을 감안하지 않는 한 소스 코드가 유출되는 경우에도 실제로 손상이 없다고 생각합니다. 문제는 코드가 무엇인지 또는 그 부분이 작동하는 방식과 주변의 조직에 대한 지식없이 가치가있는 부분입니다.

일반적으로 "소스"의 가치는 일반적으로 선전되는 것보다 훨씬 적습니다.

또한, 당신은 가장 가능성이 높은 공격 벡터를 놓치고 있으며, 그것이 무엇이든 멈출 수없는 것이기도합니다. 누군가가 정말로 당신이 당신의 마술을 어떻게 만들 었는지 알고 싶어한다면 그들은 개발자를 멀리 고용하려고 시도 할 것입니다. 전문 지식은 그들과 함께 떠나고 있습니다. 기본적으로 직원 유지 및 신뢰만이 유일한 방법입니다. 죄송합니다.

실제로 얼마나 도움이 될지는 모르겠지만,

  1. 프로그래머를 화나게 하지 마세요.그들이 있는 위치에 놓지 마십시오. 원하다 경쟁사에 소스를 제공합니다.대부분의 장소에서는 개발자를 과소평가합니다.당신이 어디에 있는지 (SO) 보면 그럴 가능성이 적다고 생각합니다.우리가 한 달에 한 번 피자를 사려고 싸워야 하는 동안 판매원들이 회사에서 지불하고 비용을 지불하여 골프 게임을 하는 것을 보는 것보다 더 마음에 드는 것은 없었습니다.

  2. 실제로, 직접적인 경쟁자가 귀하의 코드를 받았다면 오늘, 그것은 무엇을 할 것인가?귀하의 제품 또는 수직 시장이 정체되어 있어 더 새롭고 더 나은 버전이 반응하기 전에 출시하지 않을 것입니까?혁신의 여지는 없는가?대부분의 회사는 "독점 알고리즘 및 자체 개발 지식"을 과대평가합니다.물론 시간이 좀 단축될 수도 있지만 문제의 10% 정도에 불과합니다.

  3. 모든 경쟁사 제품의 소스를 모두 확보했다면 실제 활용도는 얼마나 될까요?나는 그것이 당신을 몇 달 뒤로 보내게 할 것이라고 생각합니다.전달하지 마십시오.뒤쪽에.

시스템이 깨끗하고 외부/내부 지식이 거의 없다면 자신의 제품을 구축 가능한 상태로 만드는 데 얼마나 걸리나요?코드를 자세히 살펴보고 무슨 일이 일어나고 있는지 확인하는 데 시간이 얼마나 걸리나요? 만드는 방법에 시간과 돈을 낭비하는 것보다 무언가를 해결하는 데 얼마나 많은 시간과 돈을 낭비하겠습니까? 당신의 제품이 더 잘 작동하나요?

나는 실제로 경쟁사의 제품에 대한 모든 소스(100만 라인 이상의 코드)를 보유하고 있는 위치에 있었습니다.우리는 그것에 대해 아무것도 하지 않았습니다. 약간 샅샅이 뒤진 다음 삭제하는 것 외에는 제가 편안했던 것 이상이었습니다. 그러나 그들이 있는 곳으로 이동하는 데 몇 달의 시간이 걸렸을 것으로 예상합니다. 그 다음에.

그래서 우리는 그것을 핵무기로 공격하고 그것을 얻은 id10t(예, 다른 회사에서 온 개발자/PM)를 때리고 어떻게 만들 것인지 생각했습니다. 우리의 제품이 너무 많아서 그들이 무엇을 했는지는 중요하지 않았습니다.시간 활용이 훨씬 좋습니다.잘 작동했습니다.동일한 기능을 동일한 방식으로 다시 해싱하는 것뿐만 아니라 차별화 요소도 있었습니다.

죄송하지만 있습니다. 아니요 사람들이 물건을 꺼내는 것을 막으면서도 실제로 일할 수 있는 방법입니다.당신은 그들을 막을 수 있습니다 이 없이 그렇게 하거나, 그것을 갖는 것이 가치가 없도록 만드는 것입니다.

우리는 사람들이 우리 코드를 디컴파일하는 것에 대해서도 걱정했습니다.MAPI/Exchange와 통신하는 500,000개 이상의 C#, C++ 및 HTML 코드 내부에서 무슨 일이 일어나고 있는지 알아내는 데 충분한 어려움이 있다는 것을 깨달았을 때 우리는 걱정을 멈췄습니다.누군가 그것을 디컴파일해서 해결해 줄 수 있다면, 우리는 그들을 고용하고 싶습니다......

그나저나, 명확성을 위해, 그리고 제가 현재 누구 밑에서 일하고 있는지를 고려하면 이것이 ~ 아니다 나의 현재 고용주.이것은 꽤 오래 전 일이었습니다.

코드는 그 자체로 누출되지 않습니다. 사람들이 가져 가려면 필요합니다. 트래픽 분석 및 리포지토리의 잠금과 같은 보안 조치가 분명히있어 승인 된 개발자 만 연결할 수 있습니다.

그러나 하루가 끝날 무렵 가장 좋은 선택은 아무도 당신에게서 훔치기를 원하지 않도록하는 것입니다. 당신의 팀은 행복해야합니다. 그들은 당신이 회사와 서로에게 충성해야한다는 것을 자랑스럽게 생각해야합니다. 그러한 팀이 있다면 모든 사람에게 코드를 외부인으로부터 보호해야한다고 설명하는 간단한 질문입니다. 전용 두더지를 멈추지는 않지만 사고를 방지합니다.

PS와 그렇습니다. 계약의 적절한 조항도 해를 끼치 지 않을 것입니다. 적어도 개발자는 외부 코드를 가져 오는 것이 도덕적으로 잘못되었다는 것을 알게 될 것입니다.

다음 지침을 따르십시오. 전체 소스 코드 저장소의 내용이 stackoverflow에 게시되어 있는지는 중요하지 않습니다.

http://geocities.com/mdetting/unmaintainable.html

아, 그리고 소스 코드의 일부에 대한 액세스를 차단하고, 나가는 전자 메일을 스캔하여 신뢰할 수 없음을 개발자에게 보여줍니다. 직장에서 약간의 불신처럼 사기.

또 다른 멋진 방법은 절반에게 그들이 "팀 A"라고 말하고 나머지 절반을 신뢰할 수없는 "팀 B"라고 말하는 것입니다. 그런 다음 그것을 뒤집고 "Team B"회원들에게 같은 것을 말하십시오. 다른 팀의 "나쁜 놈들"을 주시하고 당신에게 환경의 징후를보고하도록 격려하십시오. 몇 가지 "충돌 유도 자"를 뿌립니다 (예 : "Joe": '에드가 당신의 등 뒤에서 당신에 대해 말하는 것을 알고 있습니까?').

(예, 아니, 나는 실제로 위의 어느 것도 권장하지 않습니다. 농담입니다. 그러나 사람들이 위의 모든 전술을 사용하는 것을 보았습니다. 그리고 그것은 효과가 없었습니다.)

좋아, 나는 여기서 조금 실용적 일 것이다.

  • 모든 사람에게 친절하고 그들이 당신을 다치게하지 않기를 바라고 있습니다.

모든 프로그래머는 회사에 합류 한 날부터 영원히 거기에 머물지 않을 것이라는 것을 알고 있습니다. 그는 더 나은 기회를 얻을만큼 충분히 배웠을 때 변화 할 것입니다.

코드를 작성하는 프로그래머는 코드가 다른 사람에게 임대 할 때에도 글을 썼더라도 소유권이 있다고 생각합니다. 그들 중 많은 사람들이 보통 누군가를 다치게하지 않더라도 소스 코드에 손을 대려고 노력할 것입니다.

일단 그들이 회사를 떠나서 소스 코드를 가지고 다니고 동료들과의 접촉을 잃어버린 후, 양심은 정착하고 휴가를 떠나고 잠시 후에 코드의 비트와 조각이 어디에나 나타납니다.

그것이 제가 회사에서 일어나는 것을 목격 한 원인이라는 사실입니다.

그래서 하나는 무엇을합니까?

  • 프로그래머가 사본을 가져 가지 않을 것이라고 구체적으로 언급 한 NDA에 서명하십시오.
  • 프로그래머간에 제품을 배포하고 가능하면 모든 프로그래머가 모든 코드를 얻는 책임이있는 책임자에 의해 개별적으로 코딩되고 수석으로 통합 된 모듈을 가져옵니다.
  • 종료시 코더로부터 회사의 IP를 소유하지 않고 위반의 처벌을 이해한다는 서면 사업을받습니다.
  • 누군가가 당신의 IP를 위반하면 남자를 고소하십시오! 예외 없음. 그것은 현재 팀의 예로 작동합니다.

극도로 들리나요?

나는 그들이 HL-2를 개발할 때 밸브에 일어난 일을 기억합니다. 흥미로운 링크 : http://www.shacknews.com/onearticle.x/28619

나는 이런 종류의 일에 대한 실제 비밀 문화가 있었던 곳에서 일했습니다 (역사적으로 회사가 작았을 때 여러 번 있었을 때 "고객"이 있었을 때 우리는 제품에 대한 액세스를 남용했을 것입니다).

맨 위에 경영진은 매우 보호 적 이었지만 약간 다르게 보입니다. 우리 코드는 전적으로 관련이 없지만 소프트웨어 회사에있을 것으로 예상되는 것만 큼 중요하지 않다고 생각합니다.

우리가 성공한 이유는 다음과 같습니다.

1) 코드는 본질적으로 많은 문제에 대한 해결책입니다. 코드를 받으면 해당 솔루션을 얻지 만 그 문제를 해결 한 똑똑한 사람들이 여전히 있습니다. 그들은 당신보다 이러한 문제를 더 잘 이해하고 다음 문제를 더 잘 해결할 수 있습니다.

2) 그들은 실제로 문제 (및 솔루션)를 이해하기 때문에 우리는 경쟁 업체보다 더 빨리 일을 할 수 있으며, 이는 더 저렴하거나 수익성이 높습니다.

3) 또한 회사 내에서 그러한 사람들과 태도 때문에 우리는 고객에게 잘 전달하고 좋은 지원을 제공했습니다.

4) 그로 인해 우리는 좋은 평판과 참조 가능한 고객이 있습니다.

소수의 회사에는 비밀 - 독점 알고리즘과 그런 종류의 물건을 유지할 가치가있는 코드가 있지만 대다수의 제품은 스마트 사람들이 매우 쉽게 복제 할 수 있습니다.

내가 말하는 것은 기본 사항입니다 - 사람들의 계약에 그것을 가져갈 수없는 계약에 쓰십시오. 당신이 매우 구체적인 시장에 있지 않으면 실제로 당신의 비즈니스를 성공 시키거나 실패하게 만들지 않을 것입니다.

가장 좋은 단계는 강한 윤리적 행동으로 녀석을 다시 부르는 것으로부터 시작합니다. 모든 커뮤니케이션이 스캔되는 것처럼 다양한 단계를 수행 할 수 있습니다. 이메일과 모든 정보가 스캔되는 곳이 있습니다. 데스크탑/노트북에는 하드 디스크가 없거나 액세스가 제한되어 있으며 모든 작업에는 네트워크 폴더가 있습니다. 집에서 작업하더라도 인터넷에 연결해야합니다. 오프라인 작업이 동기화됩니다. USB와 드라이브는 연결이 끊어집니다.

다른 정책은 필요에 따라 만 액세스를 제공하는 것입니다. 이것들은 어느 정도 속도가 느려지고 방해 할 것이지만, 하나는 매우 결심 한 다음 그는 이것을 돌아 다닐 수있는 방법을 찾을 것입니다. 다른 방법은 코드가 정말로 매우 중요하다면, 아이디어 카피 라이트를 보호한다는 것입니다.

솔직히 말해서 거의 불가능합니다. Daily WTF에 곧 나타날 회사가 무엇을 할 것인지 제안하고 싶다면 다음과 같습니다.

  1. 인터넷에서 "작업용 컴퓨터"를 분리하십시오. BT는 참조를 위해 인터넷 액세스가 필요하기 때문에 모든 사람에게 WBBOOK을 구입하십시오.

  2. 개발자 USB 슬롯에 에폭시가있는 USB 슬롯을 사용하고 중앙 집중식 서버에서 모든 것을로드/언로드해야합니다.이 모든 데이터는 구문과 같은 코드를 통해 사용되는 모든 데이터를 스캔합니다.

또는 직원을 신뢰하고 NDA에 서명하게 할 수 있습니다 ...

나는 개인적으로 실제 사례에 대해 테스트 한 적이 없지만 코드 조각화를 사용하는 것이 좋습니다.

기본적으로 여러 라이브러리에서 프로젝트를 분할하고 각 라이브러리에 대한 인터페이스 및 단위 테스트를 정의 한 다음 각 그룹이 소중한 소스 코드의 제한된 부분에 액세스 할 수 있도록 SVN 저장소를 분리합니다.

이것은 또한 해외 아웃소싱을 할 때 도움이 되더라도 좋은 관행입니다.

이전 답변은 모두 신뢰를 구축하고 윤리적 인 사람들을 고용하는 데 중점을 두는 것 같습니다.

또 다른 가능성은 자신만의 도메인 특정 언어 및 도구를 만드는 것일 수 있습니다. 유출 된 코드를 사용하기가 더 어려워집니다. 유용한 아이디어를 훔칠 수는 있지만 전체 도구 체인이 유출되지 않으면 경쟁 제품을 단순히 컴파일하는 것은 불가능합니다.

개발자를 신뢰하십시오. 사람들은 기대에 부응하거나 거주하는 경향이 있습니다. 그들을 잘 대하고 충성도는 양방향으로 진행된다는 것을 기억하십시오. 결국, 엄지 드라이브를 잘라낼 수 없다면, 코드를 누출하지 못하게하는 사람은 아무리 신뢰하지 않더라도 코드를 유출하는 것을 막을 수 없습니다.

즉, 영업 비밀 전문 지식을 가진 변호사, 아마도 IP 법의 다른 부분에 대한 전문 지식을 가진 변호사를 찾아 법적으로 물건을 보호하는 방법을 물어보십시오. 당신은 경쟁자가 당신의 물건을 얻는다면, 경쟁자가 그것을 혜택을받는 것은 합법적이지 않도록하고 싶습니다.

대부분의 답변은 도덕적, 윤리적 가치를 기반으로합니다. Google, Facebook 등이 직원에게 의지에 의존하는지 궁금합니다. 나에게 휴식을주십시오. 그것은 완전히 유토피아입니다. 바보가되지 마십시오. 현실적입니다.

예, 코드 유출을 방지 할 수 있습니다.

가상 시스템을 호스팅하는 가상 서버를 사용하여 프로그래머는 원격 데스크탑을 통해 이러한 가상 머신 (인트라넷)에 로컬로만 액세스 할 수 있습니다. 저장소는 로컬로 관리됩니다. 리포지토리에 액세스하려면 개인 키가 필요합니다. 가상 머신에서 클라이언트로 복사/붙여 넣기가 비활성화되었습니다. 클라이언트에서 가상으로 복사/붙여 넣기 만 허용됩니다.

Facebook과 같은 회사는 그렇게합니다.

여전히 코드를 코드화하는 유일한 방법은 실제 코드로 사진을 찍는 것입니다. 실제 코드는 전혀 실용적이고 실현 가능하지 않으며, 어디서나 감시 카메라가 있으므로 사진을 찍으려면 화장실에 가야합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top