2018/5/19
株式会社 日立ソリューションズ
クラウドソリューション本部
クラウドサービスビジネス部 第1グループ
OSC 2018 Nagoya
オープンソースを安心して利用するために
~選定と管理~
1
はじめに
昨今、オープンソースソフトウェア(OSS)のビジネス利用は
Webサーバやメールサーバなどのいわゆるエッジ系に限らず
基幹系システムでも利用されるようになってきています。
しかしながら、次のような不安の声も耳にします。
星の数程あるOSSのどれを使えばいいんだろう。
使ってしまって大丈夫なんだろうか。
選定:利用にあたり、どのOSSやバージョンを採用するか
管理:利用開始後、運用で発生する問題にどう対処するか
何かあったらどうしよう。
OSSではソースコードをはじめとして、さまざまな情報が公開
されています。これらの情報を活用して、
について述べさせていただき、こういった不安を少しでも
緩和できれば幸いです。
GitHubだけで
8千万以上・・!
1.予備知識 ~ OSS 公開情報
2.選定に活用する
3.運用に活用する
4.まとめ
5.弊社サービス紹介
Contents
3
1-1.OSSの公開情報って何がある?
公開されているのはソースコードだけではありません
各種ドキュメント
利用者参加情報
バグ情報
マニュアル
変更履歴
(リポジトリ)
#include <stdio.h> intmain( int argc, char *argv[]) {
int x, y, z, i, j;
for (i=0; i<MAXPATH;i++) { : }
FAQ
ソースコード
リリース情報
メーリングリスト
(アーカイブ)
5
1-2.バグ情報って何だろう
• 発生現象
• 重要度(深刻度)
• 発生条件・環境(OS, ハードウェア)
• 対象モジュール・機能
• プログラムをより良くしていくため、主に開発者が利用する情報です
• 問題点の情報を開発者間や利用者との間で共有します
• 修正方法の提案や修正内容について議論ができます
• 多くのOSSプロジェクトでは、一般利用者からの報告も受け付けています
• 同時に、その後の修正方法の議論や修正結果も公開されています
バグはプログラムの問題点
具体的には修正が必要な事象に関する以下の情報の集まりです
• 再現手順
• 回避方法
• 修正方法案
• 修正結果
等
1-3.脆弱性情報って何だろう
• 発生現象
• 重要度(深刻度)
• 発生条件・環境(OS, ハードウェア)
• 対象モジュール・機能
• 任意のコードの実行や、情報漏えいなどが発生する可能性があります
• プログラム上のバグや仕様的欠陥などが原因となります
• 対策版までの過程は、バグ情報で公開されていることもあります
• 攻撃を誘発するため、通常は具体的攻撃方法は公開されません
• 通常のバグよりも早く対策が行われることが多いです
脆弱性はプログラムのセキュリティ上の問題点
具体的には脆弱性に関する以下の情報の集まりです
• 再現手順
• 回避方法
• 脆弱性番号
• 対策版情報
等
7
1-4.リリース情報って何だろう
• 変更概要
• バグ番号
• 脆弱性番号
• バグや脆弱性の対策
• 新しい機能の追加
• 仕様の変更
• 前提プログラムの変更
リリース情報はプログラム変更内容のリスト
具体的にはプログラム変更内容に関する以下の情報の集まりで
す
• 変更種別
等
1-5.バグトラッキングシステム
• ToDo管理やリリース予定
• バグ情報の分析、未修正一覧
→ある月のバグ情報などの絞込みも可能
• 定期的なフォローメール
バグトラッキングシステムとは
• プログラムのバグや脆弱性発見時に登録し、
修正状況を管理するための専用システムです
• 通常はWebインターフェースが提供されています
• プロジェクトの進捗管理が可能な機能もあります
9
1-5.バグトラッキングシステム
Mozilla Foundationが開発しているOSS
主な採用プロジェクト
Bugzilla
JIRA
豪アトラシアン社が開発したプロプライエ
タリ・ソフトウェア
OSSプロジェクト等には無償で提供される
主な採用プロジェクト
• Mozilla project
• Linux Kernel
• Apache Project (httpd, Tomcat他)
• Samba Project
• Spark
• Apache Project (Struts, Maven他)
引用: Apache Project ASF JIRA
(https://issues.apache.org/jira/browse/)より 引用: Mozilla Project Bugzilla (https://bugzilla.mozilla.org/ )より
その他
•GitHub
•独自系
•他
1-6.脆弱性データベース
脆弱性データベースとは
• OSSに限らず、商用製品も含めたプログラムに関する脆弱性の
情報を一意に管理するデータベースです
• 脆弱性を一意に識別するため、CVE番号と呼ばれるIDが割り当て
られます
• 脆弱性の概要、対象のソフトウェアバージョン、開発元の情報や
関連するバグトラッキングへのリンクなどの情報があります
• 目的のソフトウェアに関する脆弱性の一覧を検索できます
• ある脆弱性に関する詳細情報を取得できます
11
1-6.脆弱性データベース
MITRE社が提供するデータベース
脆弱性情報のIDであるCVE番号を管理
CVE
NVD
NISTが提供するデータベース
CVE番号ごとにより詳細な情報を提供
(CVSSスコアなど)
引用: National Vulnerability Database (https://nvd.nist.gov/vuln/)より 引用: Common Vulnerabilities and Exposures
(https://cve.mitre.org/ )より
その他
•JVN
•CERT/CC
•JPCERT/CC(メーリングリスト配信サービスもあります)
https://cve.mitre.org/
https://nvd.nist.gov/vuln/
13
2-1. 統計分析
バグ情報の統計
バグ報告の件数や、その修正件数の推移をバグトラッキングシステムから
取得し分析します。これらの件数の推移を見ることで開発の活発さやプロ
グラムの成熟度の一端を知ることができます。
バグ報告が多いということは...
修正が多いということは...
•問題が多いかも?
•利用者も多い
•実際に問題が多かった
•メンテナンスが活発に行われ
ている
では実際にOSSのバグ報告件数、修正件数を見てみましょう。
0 10 20 30 40 50 60 70 0 1 6 .0 1 0 1 6 .0 2 0 1 6 .0 3 0 1 6 .0 4 0 1 6 .0 5 0 1 6 .0 6 0 1 6 .0 7 0 1 6 .0 8 0 1 6 .0 9 0 1 6 .1 0 0 1 6 .1 1 0 1 6 .1 2 0 1 7 .0 1 0 1 7 .0 2 0 1 7 .0 3 0 1 7 .0 4 0 1 7 .0 5 0 1 7 .0 6 0 1 7 .0 7 0 1 7 .0 8 0 1 7 .0 9 0 1 7 .1 0 0 1 7 .1 1 0 1 7 .1 2 0 1 8 .0 1 0 1 8 .0 2 0 1 8 .0 3 0 1 8 .0 4
MySQL 5.7
新規報告 FIXED2-4. MySQL 5.7のバグトラック集計
5.7.11 5.7.12
5.7.13
5.7.14
5.7.15
5.7.16
5.7.17
5.7.18
5.7.19
5.7.20
5.7.21
・報告件数と修正件数が減少し
現在はほぼ一定
・定期的かつ非常に頻繁なリリース
0 2 4 6 8 10 12 14 16 18 20 2 0 1 7 .0 4 2 0 1 7 .0 5 2 0 1 7 .0 6 2 0 1 7 .0 7 2 0 1 7 .0 8 2 0 1 7 .0 9 2 0 1 7 .1 0 2 0 1 7 .1 1 2 0 1 7 .1 2 2 0 1 8 .0 1 2 0 1 8 .0 2 2 0 1 8 .0 3 2 0 1 8 .0 4
nginx 1.13
新規報告 FIXED2-5. nginx 1.13のバグトラック集計
Nginx View Tickets (https://trac.nginx.org/nginx/report )より集計