web-dev-qa-db-ja.com

大企業のコードベースへのアクセス

大企業が開発者からコードベースへのアクセスをどのように管理しているのかと思います。コードを安全にするために、開発者はコードベース全体を盗むことを避けるために、コードベース全体または特定のサブプロジェクトのみにアクセスできますか?

たとえば、企業に10人の開発者がいる場合、アクセス制御ポリシーを設定して、各開発者が開発に必要な特定のモジュールにのみアクセスできるようにする必要がありますか?

もしそうなら、私にこれを達成する方法を教えてください。

[編集済み]:予想通り、コードソースは開発者の1人から取得されて誰かに販売されましたが、信頼は必須であると言う人のために、信頼できる開発者によって行われました。

24
Petr

正常に管理されている会社では、開発者は通常、自分が取り組んでいるプロジェクトのソースコードに完全にアクセスできます。

その理由は、コードの一部を厳密に知っておく必要があるベースでリリースすることの利点は、官僚的な面倒と開発者に多大な仕事の障害をもたらすだけの価値がないからです。

  1. 開発者は全体像を見ずに作業することはできません。私は巨大なシステムを維持するチームで働くプロのソフトウェア開発者です。私が修正しなければならない問題のほとんどは、システムのどの部分にも存在する可能性があるバグです。バグの発生場所と修正方法を理解するには、完全なソースコードが必要です。 couldに関連するモジュールの一部を確認する前に、フォームに記入して管理者の承認を待つ必要がある場合、その仕事はできません。
  2. 優れたソフトウェア開発者は木で育ちません。彼らは交換するのが難しく、どこかで簡単に仕事を得ることができます。最高の才能を獲得して維持するには、開発者を上手に扱う必要があります。私の会社がソースコードへの不当なアクセス制限に悩まされ始めると、私は効率的に仕事をすることができないので私を苛立たせ、彼らは私を信頼しないことを意味するので私を侮辱します。数週間で消えてしまいます。
  3. ほとんどのコードは実際にはそれほど価値がありません。世界で書かれているほとんどのコードは、特定のクライアントの問題を解決するためにのみ役立ちます。他の誰にとっても、コードは完全に無価値です。
  4. コードがより大きな人口統計にとって価値があるとしても、あなたにはそれを保護する法律があります。仕事の契約における著作権と機密保持条項により、あなたの知的財産を他人に売ろうとする者からズボンを訴えることができます。

ネットワーク層でのソースコードのリークを防ぐための技術的対策(質問へのコメントで提案されているような)も効果的な解決策ではありません。開発者は賢いです。彼らは生活のためにコンピューターの問題を解決します。彼らが本当にあなたの建物からいくつかの情報を引き出したいなら、彼らはそれを行う方法を見つけるでしょう。 NSAでさえ、エドワードスノーデンがギガバイトの機密データを漏洩するのを防ぐことができませんでした。

その上、悪意のある開発者は、ソースコードをリークするだけでなく、はるかに多くの害を及ぼす可能性があります。開発者が監視および制限しようとすればするほど、開発者の効率が低下し、開発者が不満を抱くようになるため、これについてできることはあまりありません。

では、開発者があなたに反対するのを防ぐためにcanをどうしますか?それは簡単です:信頼できない開発者を雇わないでください、そして、彼らがあなたに対して恨みを抱かないようにそれらをうまく扱ってください。つまり、あなたが妄想と信頼の問題に苦しんでいるマネージャーである場合、ソフトウェア開発はあなたにとって適切な業界ではありません(小売にチャンスを与えたいかもしれません)。

84
Philipp

それは本当にあなたがサポート/働いている業界のタイプに依存します。私は、プロジェクトの高い割合(90%?)がソフトウェアの知的財産を通じて競争上の優位性を促進しないと信じています。考慮すべきいくつかのデータポイントを次に示します。

  1. 誰かがソースコードやデザイン/実装/アーキテクチャのアイデアを取り入れた場合、通常、それは共通の利益のために修正されることになります(オープンソースが非常に優れており、多くの人に利益をもたらす主な理由)。
  2. 企業が製品を実際にオープンソース化すると、相乗効果によってイノベーションが促進され、競争力が向上します(Tomcat、mysql、php、jquery、sugarcrmなど)。
  3. 優れたソフトウェアを盗むことができるのは、独自のソフトウェアとして展開するとすぐに、元のソフトウェアがコピーよりもはるかに優れていることを発見するためだけです。

開発者がすべてのソースコードにアクセスできないようにすることなく、誰かがソースコードを盗むのを本当に防ぎたい場合は、次のようにします。

注目に値するのは、このアプローチがコードを盗もうとするまで、開発者の生産性を妨げないという事実です。

  1. 信頼できるデバイスを展開します。これには複数の方法があります。1つはRDE(リモートデスクトップ環境)を使用する方法です。これは非常に成熟しておらず、昔ながらのリモートデスクトップコントロールではありません。
  2. 信頼されたデバイス、基本的には信頼されたデバイス(ラップトップ、デスクトップ、モバイル)の周りに暗号化されたバブルで境界セキュリティを展開します。これを実現する多くの方法があり、データ損失防止(DLP)と情報権利管理(IRM)に関する研究を開始します。既存のアーキテクチャ環境に依存するため、特定の製品はお勧めしません。
3
Hugo R