web-dev-qa-db-ja.com

ソースコードのセキュリティ

約20人の開発者が、主に会社のラップトップまたはデスクトップを使用して、異機種環境で作業しています。 Windows 7はデスクトップ/ラップトップとLinuxディストリビューション(Ubuntu/CentOS)を組み合わせて実行します。

私たちはソースコードを完全に保護するシステムをセットアップすることに非常に熱心です。なぜなら、私たちはそれを要求する顧客のためにプロジェクトに取り組んでいるためです。つまり、コードの漏洩はありません。

一部の人々は週末にラップトップを家に持ち帰ってリモートで作業することを許可しています。

ソースコードが漏洩しないように、環境の保護に関する推奨事項を提示するように求められました。

開発者が使用している中央のSubversionリポジトリがあります。必要に応じて、新しいリポジトリを検討できます。

すべてのコピーオプションが無効になっているすべてのユーザーに対して仮想デスクトップの使用を提案した人が、異なる仮想デスクトップ間またはリムーバブルディスクにファイルをコピーできないことを意味します。リモートユーザーでも、VPN接続を使用して仮想デスクトップにログインできます。

これは最良の解決策ですか、それとももっと良いものがありますか?できる限りオープンソースのツールを使いたい。

10
ramdaz

あなたが最高の種類の最高のセキュリティを探しているなら- エアギャップ がこれを機能させる唯一の方法です。残念ながら、特に開発者がドキュメンテーションなどからコードスニペットをコピーして貼り付けるのを好む場合、いかなる状況でも外部との接続がまったくないことは非常に困難です。

結局のところ、これはおそらくラップトップをサイトから外すことも意味がないことになります。

あなたがそれをすることができないと仮定すると(それに直面しようとするので、それはかなりの質問です)-最初に、モバイルワークステーション。間違いなくVPNオプションを選択してください。これらのラップトップを経由するすべてのインターネットトラフィックがVPNを通過することを確認します。このようにして、アーキテクチャとセキュリティ要件(ファイアウォールポリシーなど)が確実に適用され、さらに重要なことに、VPNエンドポイント以外はパブリックインターネットに公開されません。

ラップトップのハードディスクは最低限暗号化してください。電源が切れている間にラップトップが盗まれた場合、ソースコードは妥当な時間安全でなければなりません。ラップトップの電源がオフになっていない場合、または攻撃者がパスワードの入力を確認できる場合は、何もしていませんが、仕事を少し難しくしています。 LUKSはUbuntuとCentOSの両方でサポートされています。これはcryptsetupを使用し、適切なアルゴリズムとマルチスロットパスワードを選択できるようにします。

ハードウェアベースのディスク暗号化は、/bootパーティションを変更できないというだけの理由で、より優れています。

仮想LAN セキュリティについては、さまざまな意見が寄せられています。開発の観点から、私はあなたのチームがSudoまたはrootアクセスで作業することを期待しています。したがって、彼らが望む場合、ホストアクセスを許可するようにVMソフトウェアを簡単に再構成できます。ブログの投稿で述べたように、VMは安価なネットワーク分離に使用されます。これは、構成を適用できる場合に機能します。ここでは、売りにくいようです。

もちろん、仮想マシンを使用できないわけではありません。開発者が回避するのがいかに難しいかを正確に注意深く研究します。

十分に高速なネットワークと忍耐強い開発者がいて、ネットワーク上で利用可能なVMにリモートデスクトップを使用するが、開発者自身が物理的にアクセスできない場合、私はこれがうまくいくことを私が見た1つの方法です。 RDPを実行するデスクトップではなく、完全なシンクライアントを使用することもできます。シンクライアントモデルは、私の次のトピックである物理的なセキュリティにもうまく対応しています。

物理的なセキュリティとは、開発者がUSBスティックを差し込んでsvn coを出し入れするのがどれほど難しいかということです。 「コードの持ち帰り」はこの方法で行うことができますが、USBスティックを紛失すると、多くを失うことになります。一般に、2つの解決策があります- エポキシ樹脂 とカーネルからさまざまなhci.koモジュールを削除することで、USBをまったく認識できなくなります。残念ながら、これにはUSBキーボードとマウスを無効にする欠点もあります。

9
user2213

セキュリティの問題は、それがユーザビリティとのトレードオフであることが多いことです。最初に行うことは、ユーザーを教育することです。

  • 彼らが去ったら彼らのコンピュータを締めなさい
  • 更新された安全な(AV /ファイアウォール)環境がある
  • コンピュータを安全な場所に保管する

私の経験では、コーディングしている場合、仮想デスクトップは非常にイライラします。彼らは遅く、時にはあなたの接続が落ちます。したがって、自宅で作業してほしい場合は、物理的なラップトップを保管しておきます。

私が提案すること:

  • sVNリポジトリにこのVPN経由でのみアクセスできるようにVPNを設定します
  • ラップトップを発行するときは、ハードドライブにtruecryptを設定します(Windowsを使用している場合、ubuntuではコードが格納されているパーティションを暗号化できます)。
  • すべてのソースコードをコピーしたくない場合は、すべてのコードにアクセスする必要がない場合にブランチを使用できます。
  • 開発者が作成したソースコードでできることとできないことを明確に契約します
5
Lucas Kauffman

あなたは開発者について話していて、あなたのプロジェクトのように重要と思われるプロジェクトでは、おそらく優れた開発者がいます。彼らは常にソースをコピーする方法を見つけますが、あなたが彼らの作業を妨げると、それは本当に満足感を損なう可能性があります。

私が知る唯一の方法は、ソフトウェアを小さな独立した部分に分割することです。そのため、すべての開発者は自分の部分だけを知っています。これにより、パーツ間のインターフェースを正確に定義する必要があるため、多くの作業が必要になりますが、副作用として、テストしやすいコードが得られます。

私の意見では、NinefingersとLucasがすでに書いているように、開発者が暗号化されていないUSBドライブでソースコードを転送することは許可されていないことがはるかに重要です。それ以外の場合、ドライブ/ラップトップが紛失すると、コードも失われます。

特にチームに信頼できる熟練した開発者がいる場合は特に、私はフラストレーションの限界を超えないように注意します。

5
martinstoeckli

私たちはソースコードを要求する顧客のためにプロジェクトに取り組んでいるため、管理者はソースコードを完全に保護するシステムをセットアップすることに非常に熱心です。それはコード漏洩ではありません。

これには、すべての作業機器をそのままにしておく必要があります。すべての作業機器には、フラッシュデバイスを接続する手段がありません。また、メディアディスクの読み取りおよび書き込み機能を無効にすることも意味します。

すべてのコードがオフィスに保管されている場合、コードがオフィスを離れることは不可能です。

一部の人々は週末にラップトップを持って家に帰ることができます。

これは、オフィスの外で、データの処理を制御できなくなったことを意味します。

すべてのユーザーに対して仮想デスクトップの使用を提案し、すべてのコピーオプションが無効になっているということは、異なる仮想デスクトップ間またはリムーバブルディスクにファイルをコピーできないことを意味します。リモートユーザーでも、VPN接続を使用して仮想デスクトップにログインできます。

パスワードを変更するために仮想デスクトップのユーザー名/パスワードをブルートフォースするのは簡単な操作なので、ファイルをコピーする機能を有効にすることができます。

これは最良の解決策ですか、それとももっと良いものがありますか?できる限りオープンソースのツールを使いたい

単純な解決策は、すべての機器を変更し、コードを表示して、データがハードウェアから抽出されないようにすることです。

2
Ramhound