it-swarm.dev

Wie kann man den Quellcode vor Remote-Entwicklern schützen?

Mein Unternehmen wird einen externen Entwickler einstellen, um einige neue Module zu erstellen und einige Fehler in unserer PHP Software) zu beheben.

Wir haben noch nie zuvor einen externen Entwickler eingestellt. Wie können wir den Quellcode schützen? Es ist uns unangenehm, Quellcode herauszugeben, und wir dachten, dass alles unter einem überwachungsfähigen VPN verbleibt, bei dem sich externe Entwickler anmelden würden.

Hat jemand dieses Problem schon einmal gelöst? Wenn das so ist, wie?

Bearbeiten: Wir möchten, dass der Entwickler den Code sieht/ändert, aber überwacht und auf unserem Computer remote. Hat jemand ein ähnliches Setup?

Edit 2: NDA ist nur eine Formalität. IMO, sogar Leute, die für NDAs sind, wissen, dass es nichts tun wird, um ihr Eigentum zu schützen.

Bearbeiten 3: Lassen Sie mich klarstellen, dass wir uns keine Sorgen darüber machen, dass der Entwickler einen Algorithmus oder eine Lösung aus dem Code kopiert. Code kommt aus seinem Gehirn, also ist er natürlich der Schöpfer und er kann das wieder erschaffen. Unser Code wurde jedoch über mehrere Jahre hinweg mit Dutzenden von Entwicklern erstellt. Nehmen wir an, ich stelle versehentlich einen inkompetenten Programmierer ein, der unsere jahrelange Arbeit stiehlt und sie dann an den Konkurrenten verkauft. Das kann dazu führen, dass wir unsere Schneide verlieren. Ich weiß, dass dies selten ist, aber eine solche Bedrohung muss berücksichtigt werden, wenn Sie im Geschäft sind. Ich werde auf meine Kommentare hinweisen, damit jeder leicht kommunizieren kann:

  1. Warum NDA saugt? Nehmen Sie dieses Szenario, wenn jemand in der Lage ist, eine Lösung für dieses Szenario vorzuschlagen, werde ich die NDA effektiv. Ok, hier geht's: Wir Stellen Sie 2 externe Entwickler ein, einer von ihnen verkauft unseren Code nach einem Jahr an einen anderen. Sie haben keinen Kontakt mehr mit einem der Entwickler. Wie sollen Sie herausfinden, wer Sie betrogen hat? NDA bietet einen Zweck, aber darauf können Sie sich nicht vollständig verlassen. Zumindest können wir das nicht.

  2. Ich wollte niemanden beleidigen, während ich diese Frage stellte, obwohl ich es ungewollt tat. Aber noch einmal zu Leuten, die antworten/kommentieren wie "Ich werde niemals mit dir arbeiten" oder dem Ding "Männer in Schwarz": Es geht nicht um dich, es ist ein Thread darüber, wie machbar eine bestimmte technische Lösung wäre. Und wenn jemand in dieser Community in einem solchen Umfeld gearbeitet hat.

  3. In Bezug auf "Vertrauen" werden wir natürlich niemanden einstellen, dem wir nicht vertrauen. Aber ist es das? Kann jemand nicht zuerst betrügerisch sein? Wir alle haben vielen Politikern vertraut, um unser Land zu regieren. Haben sie uns nie im Stich gelassen? Ich sage also, "Vertrauen" ist eine völlig andere Schutzschicht wie NDA, und meine Frage war nicht darauf gerichtet. Meine Frage richtet sich eher auf technische Maßnahmen, die wir ergreifen können, um so etwas zu verhindern.

21
Rajat

Verwenden Sie die Quellcodeverwaltung. Es gibt nichts, was ein Remote-Entwickler tun kann, was nicht umkehrbar ist.

Abgesehen davon sollten Sie, je nachdem, was Sie unter "schützen" verstehen, den richtigen Vertrag mit ihm haben, einschließlich NDA.

Noch ein Hinweis: Warum sollten Sie überhaupt einen externen Entwickler einstellen, wenn Sie ihm nicht vertrauen wollen?


Aktualisieren:

Nachdem Sie klargestellt haben, dass Sie mit "schützen" "den vertraulichen Code nicht erhalten dürfen" meinen, bleiben meine obigen Punkte zu NDAs und Vertrauen unverändert.

Wenn Sie bei der Quellcodeverwaltung über mehrere Repositorys mit unterschiedlichen Codeebenen verfügen (Boilerplate - nicht vertraulich, Infrastruktur - nicht vertraulich, Geschäftslogik - sehr vertraulich usw.), können Sie auswählen, auf welches Repository Sie Zugriff gewähren möchten dieser Entwickler. Dies hängt natürlich davon ab, ob Sie können so trennen und noch eine funktionierende Anwendung haben (damit dies funktioniert, müssen in einigen Repositorys möglicherweise binäre Abhängigkeiten eingecheckt sein - dies wären Kompilierungsartefakte aus dem vertraulichen Bereich Repositories). Die Machbarkeit hängt davon ab, woran der Entwickler arbeiten soll.

Selbst mit dem oben beschriebenen Schema müssen Sie die Dekompilierung und das Reverse Engineering von Code in Betracht ziehen (dies ist immer möglich mit einem ausreichend entschlossenen Angreifer), sodass die Verschleierung von Code/Binärdateien eine andere Sache sein kann, die Sie berücksichtigen müssen ( Auch dies ist nicht perfekt - mit genügend Know-how und Entschlossenheit können die besten Verschleierer besiegt werden.

Mein Punkt ist im Wesentlichen, dass Sie, wenn Sie eine vertrauliche Codebasis schützen möchten, nur Personen, denen Sie vertrauen, Zugriff auf die vertraulichen Teile gewähren sollten.

69
Oded

Es gibt zwei Möglichkeiten, mit Menschen zu arbeiten:

  1. Steuerung:
    • überwachen alle ihre Aktionen
    • diktieren ihre Prozesse
    • ihre Freiheiten einschränken
    • halte sie austauschbar
    • machen Sie einen klaren Unterschied zwischen ihnen und Ihnen
  2. Zusammenarbeit
    • respektiere ihre Freiheit
    • vertraue ihnen
    • bauen Sie eine langfristige Beziehung auf, von der beide Seiten profitieren
    • arbeitet als ein Team

Du gehst wählen. Aber meiner Meinung nach sollten Sie nicht erwarten, dass Menschen, die Sie offen als potenzielle Kriminelle behandeln, Sie als Reaktion fair behandeln. Also hier ist eine verrückte Idee:

  • sei offen und fair
  • sich aktiv für die Schaffung von gegenseitigem Vertrauen und Loyalität einsetzen
  • sei nicht gierig und bezahle pünktlich

Wenn Sie den Menschen das Gefühl geben, in einer zufriedenstellenden, produktiven und lukrativen Geschäftsbeziehung zu sein, bleiben sie bei Ihnen. Und das ist gena das gleiche für Auftragnehmer und Mitarbeiter. Nichts kann Ihre Mitarbeiter davon abhalten, den Quellcode zu verlassen und mitzunehmen, außer ein Anreiz zu bleiben.

Machen Sie Ihre Arbeit also angenehm und lohnenswert, anstatt Ressourcen für verrückte Kontrolle zu verschwenden.

55
back2dos

Einfach ausgedrückt: Sie nicht.

Professionelle Entwickler nehmen solche Dinge ernst. Sie sind sich der Bedeutung des Codes und der Konsequenzen des Diebstahls von Teilen bewusst. Wenn sie erwischt werden, beeinträchtigt dies ihren Ruf als Fachmann und kann ihren Lebensunterhalt auf sinnvolle Weise beeinträchtigen.

Andere haben eine NDA vorgeschlagen, und obwohl dies kein technologisches Mittel zum "Schutz des Codes" ist, ist es oft alles, was benötigt wird. Funktionell gibt es keinen Unterschied zwischen internen und externen Programmierern. Sie müssen allen ein gewisses Maß an Vertrauen abtreten.

19
Ryan Kinal

Sie sollten niemals ausgelagerten zulassen, oder ich würde argumentieren, dass temporäre Auftragnehmer Zugriff auf Code haben, der hochgradig proprietär, äußerst sensibel oder Code ist, der wertvolle Algorithmen oder andere Geschäftsgeheimnisse enthält.

Selbst wenn sie ein NDA oder ein Wettbewerbsverbot) unterschreiben, ist dies wahrscheinlich nutzlos, da sie sich normalerweise nicht vor Gericht behaupten.

Diese verrückte Orgie des Offshoring aller möglichen Entwicklungen ist eine Pocken für die Branche und eine Strategie, die sich selbst besiegt. Offshoring oder Outsourcing ist bei geringfügigen, langwierigen oder gut gelösten und verstandenen Entwicklungsproblemen sinnvoll. Es war nie dazu gedacht, Geld für die einzigartige Arbeit und Brot und Butter zu sparen.

Wenn Sie Ihrem Unternehmen den proprietärsten und branchenspezifischsten Code zur Verfügung stellen, den die Welt sehen kann, laden Sie zukünftige Wettbewerber buchstäblich ein, sich zu erheben und Sie herauszufordern.

Wenn dies gesagt ist, führen Sie eine genaue Bewertung Ihrer Codebasis durch und entscheiden Sie, welchen Code sie nicht sehen sollen, und sehen Sie, wie einfach es wäre, ihren Zugriff darauf durch Quellcodeverwaltung einzuschränken. Wenn Ihr Code nicht störend oder besorgniserregend ist, hat die Anwendung wahrscheinlich nur einen sehr geringen Wert für den Diebstahl.

Viele Unternehmen denken gerne, dass ihre Codebasis speziell und hochgradig proprietär ist, obwohl es sich in Wirklichkeit nur um eine einfache CRUD-App handelt. In diesem Fall geht es Ihnen möglicherweise mehr darum, alle Ihre Geschäftsanforderungen und möglicherweise Ihr Datenmodell offenzulegen, in dem das meiste Geschäftswissen gespeichert wird. Dies kann gemindert werden, indem man sich darauf konzentriert, ihnen Zugriff auf Präsentationscode zu gewähren und den Zugriff auf Datenzugriffscode einzuschränken.

9
maple_shaft

Schließen Sie mit dem externen Entwickler einen Vertrag ab, wonach er den Quellcode weder an Außenstehende weitergeben noch nach Beendigung seiner Einstellung behalten darf. Wenn er gegen den Vertrag verstößt, handelt es sich um einen Rechtsstreit. Sie können den Quellcode jedoch nicht vor den Augen der Entwickler schützen!

7
Joonas Pulakka

Wahrscheinlich sind 90% des Werts im Quellcode das Entwicklungsteam, das Supportteam und die Benutzergemeinschaft, die Sie darauf aufbauen. Sofern es sich nicht um einen supergeheimen Start handelt, der das Spiel verändert, ist der Quellcode für Dritte im Wesentlichen wertlos. Sogar Microsoft hat zu einem bestimmten Zeitpunkt Windows NT-Code unter NDAs für bestimmte Personen außerhalb von Microsoft veröffentlicht. Mein Rat ist, ein NDA] zu verlangen und bereit zu sein, es mit Rechtsstreitigkeiten zu verteidigen, falls Ihre IP-Adresse ohne Ihre Erlaubnis irgendwie verwendet wird.

6
PeterAllenWebb

Eine Reihe von Punkten hier.

Es ist höchst unwahrscheinlich, dass jemand außer Ihnen und Ihrem Unternehmen dem Quellcode einen Wert beimisst.

Wenn Sie Ihre PHP auf einer öffentlichen Website veröffentlichen, kann jeder kompetente Entwickler Ihren Algorithmus in Tagen oder Wochen zurückentwickeln, es sei denn, Ihre Kodierungs-DNA oder etwas an sich Komplexes.

Warum stellt ein externer Mitarbeiter ein höheres Risiko dar als ein Mitarbeiter, der Büroreiniger oder eine andere Person, die auf den Code zugreifen kann?.

Wenn der Code wirklich wertvoll ist, bietet Ihnen ein freiberuflicher Standardvertrag den erforderlichen Rechtsschutz.

6
James Anderson

Der beste Weg, um sicherzustellen, dass Sie einen armen Entwickler bekommen, besteht darin, ihn wie einen Verbrecher zu behandeln, wobei jede Bewegung durch ein Überwachungssystem überwacht wird. Niemand, der kompetent ist, würde das auch nur ein paar Sekunden lang ertragen.

Stellen Sie keine Leute ein, denen Sie für keine Position vertrauen können.

5
HLGEM

Warum geben Sie dem Auftragnehmer nicht einen Firmen-Laptop, der nur eine Verbindung zu Ihrem VPN herstellen kann? Setzen Sie dann eine Firewall in das VPN ein, die alle E-Mail-/Bastebin-Sites blockiert, installieren Sie einen Keylogger auf dem Computer und füllen Sie die USB-Steckplätze mit verrücktem Kleber.

5
CamelBlues

Sie können sensible Teile Ihres Projekts mit Blackboxen versehen und vom Rest trennen. Geben Sie eine einfache, gut dokumentierte Oberfläche für die Interaktion mit diesen Modulen, ohne zu offenbaren, was im Inneren vor sich geht. Auf diese Weise können angestellte Programmierer problemlos an Ihrem Projekt arbeiten, ohne zu sehen, was sie nicht sehen müssen, während sie weiterhin das verwenden können, was sie benötigen.

2
Pieter B

Wie schützt Ihr Unternehmen den Quellcode vor Ihnen und Ihren Mitentwicklern? Was hindert Sie und Ihre Mitarbeiter daran, den wertvollen Quellcode zu stehlen und an den Konkurrenten zu verkaufen?

Was auch immer für Sie funktioniert, sollte für den Remote-Entwickler arbeiten.

1
Kirk Broadhurst

Microsot hat seinen Code geschützt. Hat jemand eine Idee, wie? Nun, hier ist der Gedanke, Microsoft hat seine Mitarbeiter so gut bezahlt, dass sie nie daran gedacht haben, das Unternehmen zu verlassen. Diejenigen, die den Code mit Sicherheit mit ihnen bearbeitet haben, sehen sich das Beispiel von Iron an Python und es ist Entwicklungsteam, niemand konnte etwas dagegen tun, es wurde zu Google genommen, außerdem können Sie nur die NDAs und Dokumente erhalten, die besagen können, dass Sie das geistige Eigentum nicht erhalten können, aber andererseits

a) Es ist schwer zu beweisen, ein Entwickler kann leicht sagen, dass er den Code hatte, bevor er Ihr Unternehmen gegründet hat. Wie würden Sie das falsch beweisen? Ich habe viele juristische Bücher gelesen, die es unmöglich machen, festzustellen, dass der Code zu einer bestimmten Organisation gehört.

b) Es gibt kein Gesetz in dem Buch, das das Schreiben einer wettbewerbsfähigen Software verbietet. In diesem Fall wird es als Kartellrecht bezeichnet (es gibt viele IP-Anwälte, die sich mit Kartellfällen befassen), was bedeutet, dass in England nur ein offener und fairer Wettbewerb gefördert wird Ich könnte OFT (Office of Fair Trading) nicht sicher sein, was sie in den USA tun. Ich habe gehört, dass der Staatsanwalt (Generalstaatsanwalt) oder der Staatsanwalt sich mit diesen Fällen befasst.

0
MoinK

Wenn Sie wirklich so nervös sind, einem externen Entwickler Zugriff auf Ihren Quellcode zu gewähren, stellen Sie ihn einfach ein, um die neuen Module zu erstellen und die vorhandenen Fehler selbst zu beheben.

Auf diese Weise ist der einzige Code, den der Außenstehende jemals sieht, der Code, den sie selbst geschrieben hat.

0
Paul Butcher