web-dev-qa-db-ja.com

開発ネットワークでソースコードを保護するためのベストプラクティスは何ですか?

私の会社では、ソースコードを非常に保護しています。私たちは、インターネットやその他の会社のネットワークからエアギャップする開発LANをセットアップすることで、パラノイアを満たしました。開発ネットワーク内には、いくつかのセキュリティで保護されたマシン(ソース管理サーバー、ビルドサーバー、ドメインコントローラー)があり、すべてのソースを暗号化するか、鍵のかかった部屋に保管する必要があります。このような単純なセキュリティポリシーをお客様に説明できることは、当社にとって競争上の優位性ですが、当社が成長するにつれて、このネットワークを維持するためのコストも大きくなっています。昨年の苦痛に対処するために、2要素認証されたRDPのみのVPNアクセスをネットワークに許可することで、厳格なエアギャップポリシーから脱却しました。

ただし、開発ネットワークと他の企業ネットワークとの間の接続性の欠如は、ネットワーク内で作業するチームとネットワーク外で作業するチーム間の協力に対する深刻な障害であり続けています。ネットワークアーキテクチャの劇的な改革を検討したいのですが、ソースコードを保護するための業界のベストプラクティスが何であるかはわかりません。私たちが考えるかもしれないものは次のとおりです。

  • 開発ネットワークを他の企業ネットワークに接続し、このネットワーク上の任意の2つのホスト間で無制限の通信を可能にします。また、インターネットへの比較的無制限のアウトバウンド接続を許可します。
  • リモートの従業員に企業ネットワークへの完全なVPNアクセスを許可します。
  • ソースコードを保持せず、パッチを適用せず、企業ネットワークの他の部分からのインバウンド接続のみを許可する、別の「テストサンドボックス」ネットワークを作成します。
  • 敵対的なネットワークトラフィックを想定して開発マシンを管理する必要があります。最新のパッチレベルが必要、認証されていないリモートデバッグを許可しない、強力なパスワードを設定するなど。
  • 保管されているすべてのコードを引き続き密室に置くか(十分な暗号化ソリューションを備えていない古いプラットフォームの場合)、暗号化する必要があります
  • コードにアクセスできるすべての開発者が、ネットワークからコードを削除しないことを示す適切なドキュメントに署名することを引き続き要求します。

これは、あなたが働いてきた主要なソフトウェア開発組織で満足のいくセキュリティポリシーと見なされますか?ソフトウェア開発組織は、ソースを保護するために他にどのような慣行に従いますか?たとえば、侵入検知システムはソースセキュリティの一般的な部分ですか?

"ソースコードをどのように保護しますか?" 質問は私たちの質問と密接に関連していますが、従業員のポリシーやバックアップ戦略よりもネットワークアーキテクチャに関心があります。

5
user25570

多くの場合、企業ポリシーは、これらのいくつかの点でテクノロジーソリューションよりも効果的です。それは、テクノロジーがポリシーの実施を支援する役割を果たせないということではありません。

フォーティネットからFortigate を調べることをお勧めします。彼らはあなたがあなたを助けるために活用できるいくつかのものを持っています。ポリシー、別名パッチレベル、A/Vなどを満たしていないコンピューターを隔離する機能もあります。また、アプリケーション保護とデータ漏洩防止の両方を実行する機能もあります。したがって、コードに似たものをすべてブロックするために、データ漏洩防止ルールを設定する必要があります。したがって、会社のファイルの先頭に標準ヘッダーが配置されている場合は、それを探してブロックし、レポートすることができます。 FortiClientsをミックスに追加すると、ローカルマシンのUSBポートをロックダウンし、各クライアントでファイアウォール、A/V、データ漏洩防止、および侵入防止ポリシーを適用できます。

だからあなたのポイントに話すために。

  • VLANを備えたファイアウォールは、最初のポイントを処理できる必要があります。
  • FortigateはVPNとしても機能するため、ポイントも非常にシンプルです。
  • ある種のVLANがサンドボックスになる可能性があります。
  • ForitClientをグループポリシーおよびFortigateと組み合わせると、必要なすべてを制御できるはずです。
  • これは対処するのが少し難しいです。しかし、これらのポリシーに従わないと終了するという会社のポリシーが最善のアプローチです。ただし、ネットワークを十分にロックダウンする限り、FortiClientはUSBポートをロックダウンできます。これにより、必要な制御が可能になります。
  • この最後のものは、より政策的なものでもあります。
1
3dinfluence

まあ、それは実際のアーキテクチャよりもデザイン哲学についての答えですが、あなたはあなたが何を達成したいのかについてまともな考えを持っているようです。ポリシーを作成するだけでなく、ポリシーへの違反を困難にする(不可能ではないにしても)ようにシステムを設計することがベストプラクティスだと思います。たとえば、特定のマシンのみが重要なサーバーへの直接接続を許可されている場合は、重要なサーバーをACLまたはサーバーローカルファイアウォールで囲み、それらのマシンからの接続のみを許可します。

箇条書きについて:

  • 無制限のインターネットアクセスを許可しないことをお勧めします。少なくとも、ファイアウォールで強制されるプロキシ要件またはWCCPを使用してください。ホワイトリストを使用したデフォルトの拒否が最適です。
  • VPNは素晴らしいですifネットワークの外部からの無制限のアクセスを本当に許可したい(または管理したい)。本当に特定の種類の接続のみを許可したい場合は、VPNのやり過ぎで不必要に危険だと思います
  • 私は開発者がプレイできるサンドボックスのファンです。私たちのサンドボックスは別のインターネットアクセスに接続し、ネットワークの他の部分とは本番レベルのファイアウォールの反対側にあります。
  • パッチ適用と安全なパスワードは、すべての環境で最小限にする必要があります...期間
  • 暗号化は問題ありませんが、失敗を考慮して暗号化方法を管理する必要があります。つまり、絶対にコードにアクセスする必要があるが、パスワードを持っている人が休暇中の場合はどうなりますか?ここで提案が必要な場合は、お知らせください。これを管理する方法を追加します...ちょっと複雑ですが、効果的です。
  • 認証を強制し、誰が何をどこにコピーするかを監査できるようにする方法として、最後のポイントのNACタイプのソリューションに興味があるかもしれません。 USBデバイスを禁止するなどのこともできます。これは、個人データにとって本当に危険であることが証明されています。
1
Greeblesnort

私は少し混乱しています。すでにセキュリティで保護されたネットワークへのVPN接続があります。これは次のことを示唆しています

  1. 両方のネットワークへのアクセスが必要な人のために、2セットのコンピューターを入手します。必ずしも同じ机の上にあるとは限りません。
  2. 開発タイプの作業では、安全なネットワークへのVPN接続が必要です。

ソースコードとすべての開発作業は、セキュリティで保護されたネットワーク上で続行でき、端末が外部ネットワーク上にあるときにRDPを介して実行でき、他のツールを並行して実行できます。

0
blueberryfields