この記事で取り扱うSW360のバージョンはとても古いです。以下を参照に最新のバージョンの導入をお勧めします。(2023年追記)
https://www.eclipse.org/sw360/docs/deployment/nativeinstall/
This article is written in Japanese and I am writing an English version now. If you can read English, you can check https://www.eclipse.org/sw360/docs/deployment/nativeinstall
If you have any questions in English, please send emails to sw360-dev@eclipse.org
この記事はSW360の設定方法を説明する記事です。 SW360のインストール方法や概要はOSS管理ツール SW360 - オープンソースをオープンソースで管理しよう (1.インストール編) に記載しています。
#はじめに
今回の設定編で構築されるツールの全体像は以下の図のようになる。
図における各ソフトウェアの役割は下記のとおり。
- SW360: ソフトウェアコンポーネントとその利用状況を管理するソフトウェアカタログツール
- Fossology: 管理するコンポーネントがOSSの場合にOSSライセンスの解析と解析結果のレビューを行うツール
製品開発でこれらのツールを用いてソフトウェアコンポーネントを管理するには、大まかに次の3ステップを行うことになる。
- SW360: OSSコンポーネントの一般情報とソースコードの登録
- Fossology: OSSライセンス解析とレビュー
- SW360: 開発プロジェクトへのOSS利用状況の登録
今回の設定編その2では、下記の 4~6 の作業を始めるために必要な作業に焦点をあてて解説。
インストール完了後SW360利用開始までに必要な作業は大きく分けて次の6つになる。
- SW360利用ユーザの設定・追加
- 検索機能の有効化
- Fossologyとの連携設定
- 脆弱性情報自動取得設定
- ライセンス情報初期設定
- ログ取得設定
-
この記事ではあくまで設定方法のみを紹介する。利用方法は後日投稿予定
-
他の参考資料
追記:以下で利用方法を記したドキュメントを公開
https://docs.google.com/document/d/1wNV--UhIDiRPP10Hhk0vspiKtoLupug7v2AAu4yxEC8/edit?usp=sharing
誰でも閲覧編集できるので,ご確認ください.
4. 脆弱性情報自動取得設定
SW360はcomponentに登録するCPE IDをもとに各コンポーネントに関連する脆弱性情報をcve-searchを利用して拾ってくる。ここでは、このために必要な設定を行う。
4.1 初期設定確認
デフォルトではこれらの情報の取得先が
https://cve.circl.lu
となっている。これは、SW360の以下でpropertiesファイルで確認することが可能である。
#
# Copyright (c) Bosch Software Innovations GmbH 2016.
#
# All rights reserved. This configuration file is provided to you under the
# terms and conditions of the Eclipse Distribution License v1.0 which
# accompanies this distribution, and is available at
# http://www.eclipse.org/org/documents/edl-v10.php
cvesearch.host=https://cve.circl.lu
https://cve.circl.lu
から脆弱性を取得してくる場合、proxyの設定を適切に行えば、検索を開始する。例えばtomcat内のbinに設定ファイルsetenv.shを置く場合以下のように設定する。
JAVA_OPTS="-Duser.timezone=JST -Dhttp.proxyHost=exapmle.proxy -Dhttp.proxyPort=8080 -Dhttps.proxyHost=example.proxy -Dhttps.proxyPort=8080"
脆弱性を取得してくる時刻は以下のファイルから設定する。デフォルトだと24時間に1回AM00:00に取得する設定になっているので、必要に応じて変数を設定する。
# Copyright (c) Bosch Software Innovations GmbH 2016.
#
# All rights reserved. This configuration file is provided to you under the
# terms and conditions of the Eclipse Distribution License v1.0 which
# accompanies this distribution, and is available at
# http://www.eclipse.org/org/documents/edl-v10.php
#in seconds of today: 0*60*60 = 0 means midnight
schedule.cvesearch.firstOffset.seconds = 0
#in seconds: 24*60*60 = 86400 means every 24 hours
#schedule.cvesearch.interval.seconds = 86400
schedule.cvesearch.interval.seconds = 21600
4.2 ローカルのデータベースから脆弱性情報取得
CVEデータベースをローカルに保存して、SW360に取り込む方法を解説する。
前準備としてVersion 3.3以上のPythonをインストールする。
$ sudo apt install python3
$ sudo apt-get install python3-pip
次にmongodb-serverとredis-serverのインストールを行う。
$ sudo apt install mongodb-server
$ sudo apt install redis-server
上記が完了すれば、いよいよcve-searchを使いCVEデータベースを構築する。途中時間がかかる作業があることには留意。
$ git clone https://github.com/cve-search/cve-search.git
$ pip3 install -r requirements.txt
$ cd cve-search
$ ./sbin/db_mgmt.py -p
$ ./sbin/db_mgmt_cpe_dictionary.py # >45minutes on a decent machine, please be patient
$ ./sbin/db_updater.py -c # This will take >45minutes on a decent machine, please be patient
db_mgmt_cpe_dictionary.py , db_updater.py は場合によっては1時間程度かかる。(ターミナル上で変化がなくても問題なし)
- なお db_updater.py 実行時以下の出力が確認できる。
$ ./sbin/db_updater.py -c
INFO:root:Starting cve
Preparing [##################################################] 885/885
INFO:root:cve has 127237 elements (161 update)
INFO:root:Starting cpe
Not modified
INFO:root:cpe has 289463 elements (0 update)
INFO:root:Starting cwe
Preparing [##################################################] 981/981
INFO:root:cwe has 981 elements (981 update)
INFO:root:Starting capec
Preparing [##################################################] 463/463
INFO:root:capec has 463 elements (463 update)
INFO:root:Starting redis-cache-cpe
Redis server not running on localhost:6379
INFO:root:redis-cache-cpe updated
INFO:root:Starting via4
Redis server not running on localhost:6379
INFO:root:via4 has 0 elements (0 update)
INFO:root:Starting ensureindex
[+]Success to create index id on cpe
[+]Success to create index id on cpeother
[+]Success to create index id on cves
[+]Success to create index vulnerable_configuration on cves
[+]Success to create index vulnerable_product on cves
[+]Success to create index Modified on cves
[+]Success to create index [('summary', 'text')] on cves
[+]Success to create index id on via4
[+]Success to create index id on mgmt_whitelist
[+]Success to create index id on mgmt_blacklist
[+]Success to create index related_weakness on capec
INFO:root:
[-] No plugin loader file!
cve-search を起動しAPIが使えるようにしていく。
$ cd ./web
$ ./index.py &
上記が完了したら、デフォルトのport 5000でwebサーバが起動する。成功したかは以下のように確認できる。
$ unset http_proxy # Clear http_proxy proxy if using
$ curl http://127.0.0.1:5000/api/browse/zyxel
{
"product": [
"n300_netusb_nbg-419n",
"n300_netusb_nbg-419n_firmware",
"p-660h-61",
"p-660h-63",
"p-660h-67",
"p-660h-d1",
"p-660h-d3",
"p-660h-t1",
"p-660h-t3",
"p-660hw",
"p-660hw_d1",
"p-660hw_d3",
"p-660hw_t3"
],
"vendor": "zyxel"
}
ここまで完了したら、cvesearch.properties のcveserach.hostを変更する。
#
# Copyright (c) Bosch Software Innovations GmbH 2016.
#
# All rights reserved. This configuration file is provided to you under the
# terms and conditions of the Eclipse Distribution License v1.0 which
# accompanies this distribution, and is available at
# http://www.eclipse.org/org/documents/edl-v10.php
cvesearch.host=http://127.0.0.1:5000
脆弱性取得が成功したら[Vulnerabilites]タブに以下のような情報が取得される。ただし、コンポーネント情報に基づいた脆弱性を取得してくるため、最低1件はコンポーネントリリース情報を登録しておく必要がある。
5. ライセンス情報初期設定
いくつかのライセンスに関してはあらかじめライセンステキスト、略称、ライセンス名を自動でインストールしてくることができる。
上記例のGPLv3のような情報はAdminユーザのみが自動取得の設定を行える。Adminユーザでログイン後[Admin]を選択。
[License admin]を選択し、[Import all SPDX license information]横のimportボタンを押す。
Warningがでてくるので、緑の[CONFIRM]ボタンを押すことでインポートが開始される。
インポートには数分かかる場合があるが、完了すれば[License]タブから各種ライセンスを確認することができる。
6. ログ取得設定
運用にあたり、どこからログを参照、ある日は出力レベルの変更を行えばいいのかをこの章で記す。
基本的にはtomcat中のlogファイルのなかのcatalina.outから確認を行う。
OpenJDK 64-Bit Server VM warning: ignoring option MaxPermSize=256m; support was removed in 8.0
Jul 31, 2019 11:12:07 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Server version: Apache Tomcat/7.0.62
Jul 31, 2019 11:12:07 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Server built: May 7 2015 17:14:55 UTC
Jul 31, 2019 11:12:07 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Server number: 7.0.62.0
Jul 31, 2019 11:12:07 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: OS Name: Linux
Jul 31, 2019 11:12:07 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: OS Version: 4.15.0-55-generic
Jul 31, 2019 11:12:07 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Architecture: amd64
Jul 31, 2019 11:12:07 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Java Home: /usr/lib/jvm/java-8-openjdk-amd64/jre
Jul 31, 2019 11:12:08 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: JVM Version: 1.8.0_212-8u212-b03-0ubuntu1.18.04.1-b03
Jul 31, 2019 11:12:08 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: JVM Vendor: Oracle Corporation
Jul 31, 2019 11:12:08 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: CATALINA_BASE: /opt/liferay/tomcat-7.0.62
Jul 31, 2019 11:12:08 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: CATALINA_HOME: /opt/liferay/tomcat-7.0.62
ログの出力レベルを上げるにはtomcat/conf 内のlogging.propertiesを変更する。参考:Tomcat7のlog情報
45 ############################################################
46 # Facility specific properties.
47 # Provides extra control for each logger.
48 ############################################################
49
50 org.apache.catalina.core.ContainerBase.[Catalina].[localhost].level = INFO
51 org.apache.catalina.core.ContainerBase.[Catalina].[localhost].handlers = 2localhost.org.apache.juli.FileHandler
52
53 org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/manager].level = INFO
54 org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/manager].handlers = 3manager.org.apache.juli.FileHandler
55
56 org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/host-manager].level = INFO
57 org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/host-manager].handlers = 4host-manager.org.apache.juli.FileHandler
58
必要に応じてのINFOをDEBUGなどに変えて、catalina.out を確認すればよい。
さいごに
ここまでの設定が完了すると一通り初期設定が完了したといえる。実際にadminユーザや一般ユーザがどのように操作をするかの説明は後日行う。
この記事のフィードバックやコメント等はいつでもお待ちしております。気軽にお申し付けください。