このガイドについて
このガイドは、ビルドシステ� のセキュリティを高めることができる、もっと影響の大きい変更について説明します。 各セクションは、セキュリティを改善するためにプロセスに� えることができる変更の概要を説明します。 影響の大きい変更から最初にリストされています。
リスクとは何か?
ソフトウェアサプライチェーンに対する攻撃の中には、ビルドシステ� を直接ターゲットとするものもあります。 攻撃者がビルドプロセスを変更できれば、個人アカウントやコードを侵害する労力なしに、システ� を悪用できます。 個人アカウントやコードとともに、ビルドシステ� を保護することを忘れないようにすることが重要です。
ビルドシステ� の保護
ビルドシステ� が持つべきセキュリティの機能がいくつかあります。
-
ビルドステップは明確で再現可能でなければなりません。
-
ビルドプロセス中に何が実行されているかを正確に知っていなければなりません。
-
侵害されたビルドが将来のビルドに影響し続けることがないよう、各ビルドは新しい環境で開始されなければなりません。
GitHub Actionsは、これらの機能を満たすのに役立ちます。 ビルドの手� �は、コードとともにリポジトリに保存されます。 ビルドが実行される環境は、Windows、Mac、Linux、自分でホストするランナーを含め、選択できます。 各ビルドは新しい仮想環境で開始され、攻撃がビルド環境に留まり続けるのを難しくします。
セキュリティ上の利点に� えて、GitHub Actionsはビルドを手動、定期的、リポジトリでのgitイベントでトリガーし、� �繁に高速なビルドを行えます。
GitHub Actionsは大きなトピックですが、「GitHubホストランナー」及び「ワークフローのトリガー」と合わせて「GitHub Actionsを理解する」がよい出発点になります。
ビルドへの署名
ビルドプロセスが保護されたら、ビルドプロセスの最終結果が誰かに改ざんされないようにします。 そのための� 晴らしい方法が、ビルドへの署名です。 ソフトウェアを公に配布する� �合、しばしば公開/秘密暗号鍵のペアとともに行われます。 秘密鍵を使ってビルドに署名し、公開鍵を公開してソフトウェアのユーザが利用までにビルドの署名を検証できるようにします。 もしもビルドのバイトが変更されていた� �合、署名は検証されません。
ビルドにどの程度正確に署名するかは、書いているコードの種類や、ユーザがどういった人たちかによります。 秘密鍵を安全に保管する方法を知るのは、多くの� �合困難です。 ここでの基本的な選択肢の1つはGitHub Actionsの暗号化されたシークレットを使うことですが、それらのGitHub Actionsワークフローにアクセスできる人を慎重に制限しなければなりません。 秘密鍵にアクセスできるのがプライベートネットワークからのみなのであれば、他の選択肢はGitHub Actionsのセルフホストランナーを使うことです。
詳しい情� �については「暗号化されたシークレット」、「セルフホストランナーについて」を参照してく� さい。
GitHub Actionsのセキュリティ強化
GitHub Actionsをさらに保護するために行えるステップがもっとたくさんあります。 特に、サードパーティのワークフローを評価する際には注意し、自分のワークフローを変更できる人はCODEOWNERS
を使って制限することを検討してく� さい。
詳しい情� �については「GitHub Actionsのセキュリティ強化」、特に「サードパーティアクションの利用」及び「変更をモニタリングするためのCODEOWNERS
の利用」を参照してく� さい。