継続的インテグレーションサービスを使用して、製品テストスイートを自動的に実行しています。コードを中央のGitリポジトリ本番ブランチにプッシュするたびに、CIサービスに通知が送られ、コードがフェッチされてテストスイートが実行されます。
CIサービスを使用すると、テストに合格したときにコードを自動的にHerokuプロダクションサーバーにプッシュできるビルド後スクリプトを記述できます。
ただし、攻撃者がCIサービスに侵入した場合、攻撃者が任意のコード変更を本番サーバーにプッシュできることを恐れています。
テストに合格した場合、CIサービスが特定の「デプロイ」サーバーにpingを送信するように、このアーキテクチャを変更する予定です。この「デプロイ」サーバーは、最新の本番ブランチコードを中央のGitリポジトリから取得し、Heroku本番サーバーにプッシュします。
このようにして、CIサービスが侵害された場合、攻撃者は、CIサービスから本番サーバーに必要なコードをプッシュできません。彼は私たちの「配備」サーバーに侵入しなければならないでしょう。
この新しいアーキテクチャの目標は、CI SaaSから当社のサーバーにリスクを移すことです。展開に必要なHeroku資格情報は、CI SaaSしかし、私たちのサーバー上。
それは意味がありますか?または、CIサービスを使用するときに、他のより簡単な代替手段はありますか(自分のCIサーバーのセットアップとセキュリティ保護の一部)?
侵害される可能性のある2つのポイントがあります。GitリポジトリへのアクセスとCIサービスです。デプロイサーバーまたはCIマシンが危険にさらされた場合の違いは何ですか?CI SaaSを使用していますか?どちらもコードをプッシュできます。
リモートのCIサービスがある場合は、デプロイサーバーでビルドして、その実際のビルドをCIサービスにプッシュすることもできます。そして、ビルドが成功したら、本番環境にプッシュします。こうすることで、デプロイされる正確なバージョンをテストしたことがわかります。
競合状態:CIがコードを渡します。誰かが新しいコードをgitにチェックインします。デプロイマシンはCIによって警告され、テストされていないコードでビルドされ、本番環境にプッシュされます。
主に問題を動かしているようです。 CIサーバーは、Herokuサーバーに新しいインストールをプッシュするための資格情報を持っていましたが、現在はデプロイサーバーです。
だから私からの大きな質問は-CIサービスとデプロイサーバーのセキュリティの違いは何ですか? 1つは外部でホストされていますか?どちらか一方を信頼する理由はありますか。最もリスクが高いのは、Herokuサーバーへのアクセスを許可する資格情報です。
新しいフレームワークでは、次の質問をします。
Gitサーバーでコードが改ざんされる可能性はどの程度ですか?
デプロイサーバーへの不正な「ping」が問題を引き起こす可能性はありますか? @roxOrが言及する競合状態は1つのケースです。また、CIサーバーが改ざんされた場合、Pingを送信するようトリガーされ、デプロイメントサーバーがHerokuサーバー上に機能していないコードを配置するように誘導される可能性もあります。または...このpingに必要な認証のレベルは何ですか?どこからでも誰でも送信できますか?その後、攻撃者はCIサーバーを攻撃して、不適切な展開をトリガーする必要はありません。
デプロイサーバーがハッキングされる可能性はありますか?それがあなたの大きな資産になりました-それはあなたの知的財産(コード)を取得し、好きなマルウェアを展開することができます。したがって、最も厳しい保護が必要です。
外部のエージェントがHerokuにアクセスするために使用する資格情報を取得して直接アクセスする方法はありますか?その場合、コードをどのように展開するかは問題ではありませんが、攻撃者は好きな方法でコードをプッシュできます。
ネットワークが改ざんされる可能性はありますか?非常に優れたハックは、デプロイサーバーを正当なgitハブサイトから攻撃者が選択したソースに強制的にリダイレクトすることです。次に、CIサーバーから正当なpingが受信されると、展開サーバーはテストされたコードの代わりに攻撃者が作成したコードを展開します。
どのシステムも「完全」ではありません。そのため、大きな問題は通常、どのような種類の攻撃者に期待するか、そして彼らの動機は何であると思うかによって決まります。不満を持つ従業員、企業スパイ、ランダムパンク、サイバー犯罪者がサイトをマルウェアとして使用することを望んでいる場合、ホストにはそれぞれ独自の目標があり、それぞれに異なる機能があります。アーキテクチャを更新する前に、何を保護したいのかを考えるのに役立ちます。