LoginSignup
7
2

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

Last updated at Posted at 2019-08-20

この記事で取り扱う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.インストール編) に記載しています。

#はじめに

今回の設定編で構築されるツールの全体像は以下の図のようになる。
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. ログ取得設定
  • 1~3設定

  • この記事ではあくまで設定方法のみを紹介する。利用方法は後日投稿予定

  • 他の参考資料

追記:以下で利用方法を記したドキュメントを公開
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ユーザや一般ユーザがどのように操作をするかの説明は後日行う。

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

7
2
0

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
  3. You can use dark theme
What you can do with signing up
7
2