LoginSignup
2

More than 3 years have passed since last update.

posted at

updated at

OSS管理ツール SW360 - オープンソースをオープンソースで管理しよう (3.設定編 その2)

This article is written in Japanese and I am writing English version now. If you have any questions in English, please send me an email. kouki1.hama@toshiba.co.jp

この記事はSW360の設定方法を説明する記事です。 SW360のインストール方法や概要はOSS管理ツール SW360 - オープンソースをオープンソースで管理しよう (1.インストール編) に記載しています。

はじめに

今回の設定編で構築されるツールの全体像は以下の図のようになる。
all.png

図における各ソフトウェアの役割は下記のとおり。

  • SW360: ソフトウェアコンポーネントとその利用状況を管理するソフトウェアカタログツール
  • Fossology: 管理するコンポーネントがOSSの場合にOSSライセンスの解析と解析結果のレビューを行うツール

製品開発でこれらのツールを用いてソフトウェアコンポーネントを管理するには、大まかに次の3ステップを行うことになる。
1. SW360: OSSコンポーネントの一般情報とソースコードの登録
2. Fossology: OSSライセンス解析とレビュー
3. SW360: 開発プロジェクトへのOSS利用状況の登録

今回の設定編その2では、下記の 4~6 の作業を始めるために必要な作業に焦点をあてて解説。

インストール完了後SW360利用開始までに必要な作業は大きく分けて次の6つになる。
1. SW360利用ユーザの設定・追加
2. 検索機能の有効化
3. Fossologyとの連携設定
4. 脆弱性情報自動取得設定
5. ライセンス情報初期設定
6. ログ取得設定

追記:以下で利用方法を記したドキュメントを公開
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ファイルで確認することが可能である。

sw360/backend/src/src-cvesearch/src/main/resources/cvesearch.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を置く場合以下のように設定する。

sw360/backend/src/src-cvesearch/src/main/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に取得する設定になっているので、必要に応じて変数を設定する。

/tomcat-7.0.62/webapps/schedule/WEB-INF/classes/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

#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を変更する。

sw360/backend/src/src-cvesearch/src/main/resources/cvesearch.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=http://127.0.0.1:5000

脆弱性取得が成功したら[Vulnerabilites]タブに以下のような情報が取得される。ただし、コンポーネント情報に基づいた脆弱性を取得してくるため、最低1件はコンポーネントリリース情報を登録しておく必要がある。

setting_v1.png

5. ライセンス情報初期設定

いくつかのライセンスに関してはあらかじめライセンステキスト、略称、ライセンス名を自動でインストールしてくることができる。

gpl_v3.png
gpl_v3.png

上記例のGPLv3のような情報はAdminユーザのみが自動取得の設定を行える。Adminユーザでログイン後[Admin]を選択。

33.png

[License admin]を選択し、[Import all SPDX license information]横のimportボタンを押す。

34.png

Warningがでてくるので、緑の[CONFIRM]ボタンを押すことでインポートが開始される。

35.png

インポートには数分かかる場合があるが、完了すれば[License]タブから各種ライセンスを確認することができる。

36.png

6. ログ取得設定

運用にあたり、どこからログを参照、ある日は出力レベルの変更を行えばいいのかをこの章で記す。

基本的にはtomcat中のlogファイルのなかのcatalina.outから確認を行う。

liferay/tomcat-7.0.62/logs/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情報

liferay/tomcat-7.0.62/conf/logging.properties

     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ユーザや一般ユーザがどのように操作をするかの説明は後日行う。

この記事のフィードバックやコメント等はいつでもお待ちしております。気軽にお申し付けください。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
2