安全なソフトウェアサプライチェーンのベストプラクティス

先月、Cloud Native Computing Foundation (CNCF) のセキュリティ技術諮問グループは、ソフトウェア サプライ チェーンのベスト プラクティスに関する詳細なドキュメントを公開しました。 完全なドキュメントは、 GitHub リポジトリから入手できます。 これは、ジョナサン・メドウズとエミリー・フォックスに特に感謝します。 CNCFレビュアーの一人として、私はいくつかの反復を読み、それが形になり、時間の経過とともに改善されるのを見ることができました。

サプライチェーンシャッターストック1033377703

サプライチェーンのセキュリティは、ニッチな懸念から、特に昨年のSolarWindsの「サンバースト」攻撃の後、話題になるものになりました。 先週、それは米国のジョー・バイデン大統領の サイバーセキュリティに関する大統領令の重要な部分でした。 それでそれは何ですか? 自分で作成していないソフトウェア、多くの場合、アプリケーションで使用するオープンソースソフトウェアを使用するたびに、追加したソフトウェアが思ったとおりであることと、敵対的ではなく信頼できることの両方を信頼しています。 通常、これらは両方とも当てはまりますが、何百人もの人々がインフラストラクチャを攻撃するコードが含まれていることが判明したSolarWindsからのアップデートをインストールした場合など、問題が発生した場合、結果は深刻です。 人々が本番環境を強化するにつれて、本番環境の前に、作成、組み立て、構築、またはテストされたソフトウェアを攻撃することがより簡単なルートになりました。

CNCFセキュリティペーパーは、安全なサプライチェーンをより簡単に、より広く採用するためにどのような作業を行う必要があるかについてジョナサンと話し合った後に始まりました。 この論文は、4つの主要な原則を説明するのに非常に良い仕事をしています。

  • まず、サプライチェーンのすべてのステップは、暗号化の構成証明と検証の組み合わせの結果として「信頼できる」必要があります
  • 第二に、自動化はサプライチェーンのセキュリティにとって重要です。 ソフトウェアサプライチェーンを可能な限り自動化することで、人為的ミスや構成ドリフトの可能性を大幅に減らすことができます。 
  • 第三に、サプライチェーンで使用されるビルド環境は、範囲を限定して明確に定義する必要があります。  
  • 第四に、サプライチェーン環境で運用されているすべてのエンティティは、定期的なキーローテーションを備えた強化された認証メカニズムを使用して相互に認証する必要があります。

より単純な言葉では、これは、使用しているすべてのコード、使用している正確なバージョン、それらがどこから来たのか、そしてエラーがないように自動化された方法で安全にトレースできる必要があることを意味します。 ビルド環境は、最小限で安全で、明確に定義されている、つまりコンテナ化されている必要があります。 また、すべてが安全に認証されていることを確認する必要があります。

大多数の人々はこれらすべての基準を満たしていないため、正確なトレーサビリティが困難になっています。 このレポートには、支払いやその他の機密性の高い領域を扱う環境など、より機密性の高い環境に関する強力な推奨事項が含まれています。 リスクは誰にとっても深刻であるため、時間の経過とともにこれらの要件ははるかに広く使用されるようになります。

Dockerでは、安全なソフトウェアサプライチェーンの重要性を信じており、セキュリティを向上させるシンプルなツールを提供します。 私たちはすでに Docker公式イメージで標準を設定しました。 これらは、開発者や開発チームがアプリケーション ビルドの安全な基盤として使用する最も広く信頼されているイメージです。 さらに、Snykと連携したCVEスキャンがあり、ソフトウェアサプライチェーンにおける多くのリスクを特定するのに役立ちます。 現在、CNCF、Amazon、マイクロソフトと協力して、Notary v2プロジェクトでコンテナ署名を更新しており、数か月以内に出荷する予定です。 これは、Notary v1 と Docker Content Trust の刷新であり、レジストリ間で署名を移植可能にし、幅広い業界のコンセンサスを持つ使いやすさを向上させます。 開発者のセキュリティを向上させるための計画は他にもあり、 ロードマップリポジトリでのフィードバックやアイデアをお待ちしています。

フィードバック

「安全なソフトウェアサプライチェーンのベストプラクティス」に関する0の考え