※本記事は、Bardによる意訳+翻訳を活用し、レイアウト調整したものです。
※感想は、オリジナルです。
原文
The Real Cost of Open Source Software - DEV Community
意訳+要約
オープンソースソフトウェアの本当のコスト
オープンソースソフトウェア(OSS)は、ライセンスコストが不要であるため、コスト削減につながるといわれています。しかし、OSSの導入には、ライセンスコスト以外にも、さまざまなコストが発生します。本ブログでは、OSSの本当のコストについて、以下の観点から解説します。
- 導入コスト
- 運用コスト
- リスクコスト
導入コスト
OSSの導入には、以下のようなコストが発生します。
開発者の人件費
OSSは、ソースコードが公開されているため、ユーザー自身で開発やカスタマイズを行うことができます。しかし、OSSの開発は、商用ソフトウェアの開発と比べて、専門的な知識やスキルが要求されます。そのため、OSSの開発やカスタマイズには、開発者の人件費が発生します。サポート費用
OSSには、商用ソフトウェアのようなサポートが提供されていないものもあります。そのため、OSSの導入や運用で問題が発生した場合、自社で解決する必要があります。問題の解決に必要な時間や労力は、コストとして計上する必要があります。
運用コスト
セキュリティ対策
OSSは、商用ソフトウェアと比べて、セキュリティの脆弱性が発見される可能性が高くなります。そのため、OSSの運用には、セキュリティ対策に十分なコストをかける必要があります。メンテナンス
OSSは、常に新しいバージョンがリリースされています。最新のバージョンにアップデートすることで、セキュリティの脆弱性やパフォーマンスの問題を解決することができます。しかし、アップデートには、システムの再構築やテストなど、コストが発生します。トレーニング
OSSの開発や運用には、専門的な知識やスキルが要求されます。そのため、OSSを利用する社員へのトレーニングにコストをかける必要がります。
リスクコスト
セキュリティリスク
OSSは、商用ソフトウェアと比べて、セキュリティの脆弱性が発見される可能性が高くなります。そのため、OSSの導入は、セキュリティリスクを高める可能性があります。サポートリスク
OSSには、商用ソフトウェアのようなサポートが提供されていないものもあります。そのため、OSSの導入は、サポートリスクを高める可能性があります。法務リスク
OSSの利用には、ライセンス条件を遵守する必要があります。ライセンス条件を遵守しないと、法的なトラブルが発生する可能性があります。
まとめ
OSSの導入は、ライセンスコストが不要であるため、コスト削減につながる可能性があります。しかし、OSSの導入には、導入コスト、運用コスト、リスクコストなどのさまざまなコストが発生します。そのため、OSSを導入する際には、これらのコストを十分に考慮する必要があります。
重要なポイント
- OSSの導入には、ライセンスコスト以外にも、さまざまなコストが発生します。
- OSSの導入コストは、開発者の人件費やサポート費用などです。
- OSSの運用コストは、セキュリティ対策やメンテナンス、トレーニングなどです。
- OSSの導入には、セキュリティリスクやサポートリスク、法務リスクなどのリスクが発生します。
Bardさんに聞いてみた
Q:OSSのリスク管理をする場合、どのようなことに気をつければいい?
- セキュリティリスクの管理
OSSは、商用ソフトウェアと比べて、セキュリティの脆弱性が発見される可能性が高くなります。そのため、OSSの利用には、セキュリティ対策を徹底する必要があります。具体的には、以下の対策が有効です。
OSSには、商用ソフトウェアのようなサポートが提供されていないものもあります。そのため、OSSの導入や運用で問題が発生した場合、自社で解決する必要があります。問題の解決に必要な時間や労力を考慮し、十分なリソースを確保しておく必要があります。
- 法務リスクの管理
OSSの利用には、ライセンス条件を遵守する必要があります。ライセンス条件を遵守しないと、法的なトラブルが発生する可能性があります。そのため、OSSのライセンス条件を事前に確認し、遵守できるかどうかを検討する必要があります。
具体的なリスク管理の手法としては、以下のようなものが挙げられます。
- OSSの棚卸し
OSSを導入する前に、自社で利用しているOSSをすべて洗い出します。これにより、OSSの種類やバージョン、ライセンス条件などを把握することができます。
OSSの脆弱性情報を収集し、自社で利用しているOSSに脆弱性がないかを確認します。脆弱性が発見された場合は、速やかに対策を実施します。
- OSSのセキュリティテスト
OSSに脆弱性がないかを、自社でテストします。テストには、静的解析や動的解析などの手法が用いられます。
- OSSの利用ポリシーの策定
OSSの利用に関するルールを定めたポリシーを策定します。ポリシーには、OSSの選定基準や脆弱性対応のルールなどを盛り込みます。
OSSのリスク管理は、OSSの導入・運用に欠かせない重要なプロセスです。適切なリスク管理を行うことで、OSSの導入によるリスクを軽減し、安全に利用することができます。
Q:OSSのリスクを効率的に管理する方法を教えて
OSSのリスクを効率的に管理するには、以下の3つのポイントを押さえましょう。
OSSの棚卸しを定期的に実施する
OSSを導入する前に、自社で利用しているOSSをすべて洗い出します。これにより、OSSの種類やバージョン、ライセンス条件などを把握することができます。OSSの脆弱性情報を常に確認する
OSSの脆弱性情報を収集し、自社で利用しているOSSに脆弱性がないかを確認します。脆弱性が発見された場合は、速やかに対策を実施します。OSSの利用ポリシーを策定する
OSSの利用に関するルールを定めたポリシーを策定します。ポリシーには、OSSの選定基準や脆弱性対応のルールなどを盛り込みます。
この3つのポイントを押さえることで、OSSのリスクを効率的に管理することができます。
なお、具体的な手法としては、OSSの棚卸しにはツールを活用したり、脆弱性チェックには自動化ツールを活用したりすると効率的です。
Q:OSSのセキュリティテストって、具体的には何をすればいいの?
OSSのセキュリティテストは、OSSに脆弱性がないかを検査するテストです。具体的には、以下の2つの手法が用いられます。
どちらの手法も、OSSの脆弱性を検出することができますが、それぞれに得意とする脆弱性や検出率が異なります。そのため、両手法を組み合わせて実施することで、より効果的なテストを行うことができます。
Q:OSSの動的解析のやり方について、いくつかやり方を紹介してください
OSSの動的解析には、以下の2つのやり方があります。
ツールを用いる方法
OSSの動的解析ツールを用いて、自動的に脆弱性を検出するやり方です。ツールを用いることで、手動で行うよりも効率的にテストを行うことができます。手動で行う方法
OSSを実行しながら、実行時の挙動を観察して、脆弱性を検出するやり方です。ツールを用いる方法よりも、より詳細なテストを行うことができます。
ツールを用いる方法
- OWASP ZAP
OWASP(Open Web Application Security Project)が開発した、オープンソースのWebアプリケーション脆弱性スキャナーです。
- Burp Suite
PortSwigger社が開発した、プロプライエタリのWebアプリケーション脆弱性スキャナーです。
- Metasploit
Rapid7社が開発した、プロプライエタリの脆弱性検出・エクスプロイトフレームワークです。
これらのツールは、さまざまな脆弱性を検出することができますが、それぞれの得意とする脆弱性や検出率が異なります。そのため、複数のツールを組み合わせて使用することで、より効果的なテストを行うことができます。
手動で行う方法
手動で行う方法では、以下の手順で行います。
手動で行う方法では、ツールを用いる方法よりも、より詳細なテストを行うことができます。しかし、手間がかかるため、ツールを用いる方法と組み合わせて行うことで、効率的なテストを行うことができます。
具体的な手法としては、以下のようなものが挙げられます。
入力値の検証
OSSが入力値を適切に検証しているかを検査します。メモリ管理
OSSがメモリを適切に管理しているかを検査します。競合状態
OSSが競合状態に陥っていないか、あるいは、競合状態に陥った場合に適切に処理されているかを検査します。セキュリティ設定
OSSのセキュリティ設定が適切に設定されているかを検査します。
これらの手法を用いることで、OSSの脆弱性をより効率的に検出することができます。
感想+雑記
前、製品に載せるソフトウェア作ってたことがあるけど、そのOSSのライセンス調査とかしてて、すごく手間だった。
OSSに対してかなり楽観的に使っているけど、ものによっては、製品のソース全公開になるから、かなり危うい。リスク管理は、製品開発は徹底しているって感じた。
OSSが使っているOSSとかも調べたりしてたから、かなり深いところまで見てた。
そのプロジェクトは、nodeで開発してたから、OSSの数が半端じゃなかった。。。
自動化しないと、そうとうなコストだと感じた。
これは、法務リスクだな。
製品開発しているときは、アップデートは、定期的にチェックしてた記憶がある。
OSSのセキュリティチェックは、正直、自前でテストするのは厳しい。
コスト減らすために導入したのに、テスト工数が膨れ上がるのは、ナンセンスな気がする。
これは、テストを自動化しておかないとイケない気がする。
セキュリティテストツールは、OSSじゃなく、普通のアプリにも使えそう。
特にOWASP ZAPは、気になった。
Webアプリ主体の開発が俺の主戦場なので、それのセキュリティ診断ツールとなると、どこかでキャッチアップしておきたい。