ソフトウェア構成分析 (SCA) を調べる
Secure DevOps パイプラインの 2 つの重要な領域は、パッケージ管理とソフトウェア OSS コンポーネント Open-Source です。
パッケージ管理
チームがソース コードの単一の信頼できるソースとしてバージョン管理を使用するのと同様に、Secure DevOps はバイナリ コンポーネントの一意のソースとしてパッケージ マネージャーに依存します。
開発チームは、バイナリ パッケージ管理を使用して、承認されたコンポーネントのローカル キャッシュと、継続的インテグレーション (CI) パイプライン用の信頼されたフィードを作成できます。
Azure DevOps では、 Azure Artifacts は、パッケージへのアクセスを整理および共有するためのコンポーネント ワークフローの不可欠な部分です。 Azure Artifacts を使用すると、次のことができます。
- アーティファクトを整理します。 Apache Maven、npm、NuGet のパッケージを一緒に格納することで、コードを簡単に共有できます。 ユニバーサル パッケージを使用してパッケージを格納できるため、Git でバイナリを保持する必要がなくなります。
- パッケージを保護します。 使用するすべてのパブリック ソース パッケージ (npmjs および NuGet .org のパッケージを含む) をフィード内で安全に保持します。このフィードは、削除することだけが可能であり、エンタープライズ レベルの Azure サービス レベル アグリーメント (SLA) によってサポートされます。
- シームレスなパッケージ処理を継続的インテグレーション (CI)/継続的開発 (CD) パイプラインに統合します。 ビルドとリリースのすべての成果物に簡単にアクセスできます。 Azure Artifacts は、Azure Pipelines CI/CD ツールとネイティブに統合されます。
Azure Artifacts の詳細については、Web ページを参照してください。 Azure Artifacts とは
バージョンと互換性
次の表に、Azure Artifacts でサポートされるパッケージの種類を示します。 Azure DevOps Services 各パッケージの可用性も表示されます。
次の表では、各パッケージと、以前 は Team Foundation Server (TFS) と呼ばれる特定のバージョンの Azure DevOps Server との互換性について詳しく説明します。
機能 | Azure DevOps Services | TFS |
---|---|---|
NuGet | はい | TFS 2017 |
npm | はい | TFS 2017 Update 1 以降 |
Maven | はい | TFS 2017 Update 1 以降 |
Gradle | はい | TFS 2018 |
Universal | はい | いいえ |
Python | はい | いいえ |
Maven、npm、NuGet の各パッケージは、パブリック ソースとプライベート ソースの任意のサイズのチームでサポートできます。 Azure Artifact には Azure DevOps が付属していますが、拡張機能は Visual Studio Marketplace から入手することもできます。
手記
特定のパッケージ バージョンをフィードに発行すると、そのバージョン番号は完全に予約されます。
手記
同じバージョン番号の新しいリビジョン パッケージをアップロードしたり、そのバージョンを削除したり、同じバージョン番号の新しいパッケージをアップロードしたりすることはできません。 発行されたバージョンは変更できません。
OSS コンポーネントの役割
再利用可能なオープンソース ソフトウェア (OSS) コンポーネントが幅広く利用できるため、開発作業の生産性が向上します。
この実際の再利用方法には、Windows および Linux オペレーティング システム (Microsoft .NET Core や Node.jsなど) で使用できるランタイムが含まれます。
ただし、OSS コンポーネントの再利用には、再利用された依存関係にセキュリティの脆弱性が存在するリスクがあります。 その結果、多くのユーザーは、使用する Node.js パッケージのバージョンが原因で、アプリケーションにセキュリティの脆弱性を見つけます。
OSS では、次の図に示すように、これらのセキュリティ上の問題に対処するために、新しい概念と呼ばれる ソフトウェアコンポジション分析 (SCA) が提供されています。
OSS コンポーネントを使用する場合は、依存関係を作成する場合も使用する場合でも、通常は次の大まかな手順に従う必要があります。
- 古い脆弱性やライセンスの誤用を避けるために、最新の正しいバージョンから始めます。
- OSS コンポーネントがバージョンに適したバイナリであることを確認します。 リリース パイプラインで、バイナリを検証して精度を確保し、追跡可能な部品表を保持します。
- コンポーネントの脆弱性の通知をすぐに取得し、修正し、コンポーネントを自動的に再デプロイして、再利用されたソフトウェアからセキュリティの脆弱性やライセンスの誤用を解決します。