Skip to main content

このバージョンの GitHub Enterprise はこの日付をもって終了となりました: 2023-01-18. 重大なセキュリティの問題に対してであっても、パッチリリースは作成されません。 パフォーマンスの向上、セキュリティの向上、新機能の向上を図るために、最新バージョンの GitHub Enterprise にアップグレードします。 アップグレードに関するヘルプについては、GitHub Enterprise サポートにお問い合わせく� さい

ビルド システ� をセキュリティで保護するためのベスト プラクティス

サプライ チェーンの終端を保護する方法 (成果物の構築と配布に使用するシステ� ) に関するガイダンス。

このガイドについて

このガイドでは、ビルド システ� のセキュリティを向上させるために� えられる最も影響が大きい変更について説明します。 各セクションで、セキュリティを向上させるためにプロセスに対して行うことができる変更の概要を示します。 変更は影響が大きい� �に示されます。

リスクとは

ソフトウェア サプライ チェーンに対する攻撃の一部は、ビルド システ� を直接対象とします。 攻撃者がビルド プロセスを変更できる� �合は、個人アカウントやコードを侵害することなく、システ� を悪用するおそれがあります。 ビルド システ� � けでなく、個人のアカウントやコードも忘れずに保護することが重要です。

ビルド システ� のセキュリティによる保護

ビルド システ� に必要なセキュリティ機能がいくつかあります。

  1. ビルドの手� �は明確で繰り返すことができる必要があります。

  2. ビルド プロセス中に何が実行されていたかを正確に把握する必要があります。

  3. 各ビルドは新しい環境で開始する必要があるため、侵害されたビルドは今後のビルドに影響を与えることはありません。

GitHub Actions は、これらの機能を満たすのに役立ちます。 ビルド手� �は、コードと共にリポジトリに� �納されます。 ご自分でホストする Windows、Mac、Linux、ランナーなど、ビルドを実行する環境を選びます。 各ビルドは新しいランナー イメージから始まり、ビルド環境に攻撃が持続することは困難になります。

GitHub Actions を使用すると、セキュリティ上の利点に� えて、� �繁かつ高速なビルドのために、ビルドを手動で、定期的に、またはリポジトリの Git イベントでトリガーできます。

GitHub Actions は大きなトピックですが、作業を開始するには、「GitHub Actions について」のほかに、「GitHub ホストランナーの選択」、「ワークフローのトリガー」を参照してく� さい。

ビルドに署名する

ビルド プロセスがセキュリティで保護されたら、誰かがビルド プロセスの最終的な結果を改ざんできないようにする必要があります。 これを行う優れた方法は、ビルドに署名することです。 ソフトウェアをパブリックに配布する� �合、多くの� �合、公開/秘密の暗号化キー ペアで行われます。 秘密キーを使用してビルドに署名し、公開キーを公開して、ソフトウェアのユーザーがビルドの署名を使用する前に確認できるようにします。 ビルドのバイトが変更された� �合、署名は検証されません。

ビルドに正確に署名する方法は、記述しているコードの種類とユーザーによって異なります。 多くの� �合、秘密キーを安全に� �納する方法を知ることは困難です。 ここでの基本的なオプションの 1 つは、GitHub Actions 暗号化されたシークレットを使用することですが、それらの GitHub Actions ワークフローにアクセスするユーザーを制限するように注意する必要があります。 秘密キーにアクセスできるのがプライベート ネットワークからのみの� �合は、GitHub Actions にセルフホステッド ランナーを使用することもできます。

詳しくは、「暗号化されたシークレット」 および「セルフホステッド ランナーについて」を参照してく� さい。

GitHub Actions のセキュリティを強化する

さらに GitHub Actions をセキュリティで保護するために、さらに多くの手� �を実行できます。 特に、サードパーティのワークフローを評価する� �合は注意が必要です。また、ワークフローに変更を� えることができるユーザーを制限するために CODEOWNERS を使用することを検討してく� さい。

詳しくは、「GitHub Actions のセキュリティ強化」、特に「サードパーティ アクションを使用する」および「変更の監視に CODEOWNERS を使用する」を参照してく� さい。

次の手� �