クラウドやコンテナのセキュリティ評価でも使われている「Compliance As Code」の始め方:OpenSCAPで脆弱性対策はどう変わる?(終)
本連載では、グローバルスタンダードになっている「SCAP」(セキュリティ設定共通化手順)およびそれを基にシステム構成や脆弱性の検査を行うためのOSSツール「OpenSCAP」や、その周辺の技術、用語などを紹介する。今回は、OpenSCAP/SCAP Security Guideプロジェクトの発展形である「Compliance As Code」について実例を見ながら解説する。
OSSセキュリティ技術の会の面和毅です。本連載「OpenSCAPで脆弱(ぜいじゃく)性対策はどう変わる?」では、実質的にグローバルスタンダードの「SCAP(Security Content Automation Protocol:セキュリティ設定共通化手順)」、およびそれを基にシステム構成や脆弱性の検査を行うためのOSS(オープンソースソフトウェア)ツール「OpenSCAP」や、その周辺の技術、用語などを紹介してきました。
今回は最終回。コミュニティーベースでのOpenSCAP、SCAP Security Guide Projectの発展形である「Compliance As Code」(旧SCAP Security Guide)について、実例を見ながら解説します。
Compliance As Codeのプロジェクトと詳細は、こちらのGitHubから確認できます。
Compliance As Codeのコンテンツをソースからコンパイルする
前回説明した通り、Compliance As CodeのコンテンツはZIPファイルで定期的に出されていますが、より最新のコンテンツを利用したいときや、細かいバグ修正などが施されているものを利用したいときには、ソースコードからコンパイルした方が便利です。
以下で、GitHubで提供されているコンテンツのソースコードのコンパイルと利用方法を説明します。
Compliance As Codeのcontentのコードは、こちらのGitHubからダウンロードできます。ソースコードの中身ですが、図1のようにOSやアプリケーションなど製品ごとにディレクトリが分かれた構造になっています。
コンテンツをソースコードからコンパイルする方法ですが、「Compliance As Code Developer Guide」に方法が書いてあるので、こちらに従うと簡単に行えます。今回はDebian 10(buster)を使うのでDebianの方法に従います。
1.cmake/makeやpython3-yamlなどのコンパイルに必要なパッケージをインストールします。
apt-get install cmake make expat libopenscap8 libxml2-utils ninja-build python3-jinja2 python3-yaml xsltproc
2.Gitでcontentのソースコードをローカルにクロ−ンします。
git clone https://github.com/Compliance As Code/content.git
以下、content/buildディレクトリで作業します。
3.content/buildディレクトリで「cmake ..」としてcmakeを実行し、buildファイルを作成します(図2)。
jsosug@localhost:~/ComplianceAsCode/content/build$ cmake .. -- SCAP Security Guide 0.1.52 -- SCAP Security Guide 0.1.52 -- CMake: -- build type: Release -- generator: Unix Makefiles ---省略--- -- Scanning for dependencies of sle15 fixes (bash, ansible, puppet, anaconda, ignition and kubernetes)... -- Scanning for dependencies of ubuntu1404 fixes (bash, ansible, puppet, anaconda, ignition and kubernetes)... -- Scanning for dependencies of ubuntu1604 fixes (bash, ansible, puppet, anaconda, ignition and kubernetes)... -- Scanning for dependencies of ubuntu1804 fixes (bash, ansible, puppet, anaconda, ignition and kubernetes)... -- Scanning for dependencies of vsel fixes (bash, ansible, puppet, anaconda, ignition and kubernetes)... -- Scanning for dependencies of wrlinux8 fixes (bash, ansible, puppet, anaconda, ignition and kubernetes)... -- Scanning for dependencies of wrlinux1019 fixes (bash, ansible, puppet, anaconda, ignition and kubernetes)... -- Configuring done -- Generating done -- Build files have been written to: /home/jsosug/ComplianceAsCode/content/build
4.ビルドしたい製品を選んでmakeを行います。今回は、Debian 10のコンテンツをコンパイルしたいので、「make -j4 debian10」とします(図3)。
jsosug@localhost:~/ComplianceAsCode/content/build$ make -j4 debian10 make[1]: ディレクトリ '/home/jsosug/ComplianceAsCode/content/build' に入ります make[2]: ディレクトリ '/home/jsosug/ComplianceAsCode/content/build' に入ります make[3]: ディレクトリ '/home/jsosug/ComplianceAsCode/content/build' に入ります Scanning dependencies of target generate-internal-bash-remediation-functions.xml [100%] Built target debian10-tables make[3]: ディレクトリ '/home/jsosug/ComplianceAsCode/content/build' に入ります Scanning dependencies of target debian10 make[3]: ディレクトリ '/home/jsosug/ComplianceAsCode/content/build' から出ます [100%] Built target debian10 make[2]: ディレクトリ '/home/jsosug/ComplianceAsCode/content/build' から出ます make[1]: ディレクトリ '/home/jsosug/ComplianceAsCode/content/build' から出ます
5.buildディレクトリに「ssg-debian10-ds.xml」などのスキャンに使用するデータストリームファイルが生成されます(図4)。
6.build/guidesディレクトリに、それぞれ生成されたコンテンツの説明があるので、「ssg-debian10-guide-index.html」ファイルをブラウザで見てみます。コンテンツのプロファイルごとに選べて、それぞれのチェックリスト項目の説明が記載されています。また、右上にはoscapコマンドを用いて実行する際のサンプルコマンドが記載されています(図5)(図6)。
7.build/ansibleディレクトリに、AnsibleのPlaybookが生成されます(図7)。
ソースコード内容の確認
前章ではコンパイルの方法から確認しましたが、ここではCompliance As Codeのソースコード内にあるディレクトリやファイルを見ていきます。
ディレクトリ構造、ファイル構造
まずcontent以下のディレクトリ構造ですが、ディレクトリの内容とそれぞれの説明は表1のようになっています。
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- 2017年の脆弱性報告件数は過去最高の約1万4700件、まだ隠れた脆弱性がある可能性も:ESET
ESETによると、2017年は脆弱性の報告件数が前年比で2倍以上に増えて過去最高となり、中でも重大な脆弱性が近年の傾向に沿って急激に増加した。 - 外注したシステムの脆弱性は誰のせい? 連日の「深刻な脆弱性」にどう向き合い、どう対応するか?
連日のように公開される脆弱性情報の中から自分たちに関係するものを見つけ、適切な優先順位で対応するのは容易ではない。この状況に、企業はどう向き合えばよいのだろうか? @ITは、2017年8月30日にセミナー『連日の「深刻な脆弱性」どう向き合い、どう対応するか』を東京で開催した。多数の専門家やセキュリティベンダーが登壇した同セミナーの模様をお届けしよう。 - 「脆弱性情報」をどう扱うか――見つける人、流通させる人、対処する人、それぞれの視点
連日公表されるソフトウェアなどの脆弱(ぜいじゃく)性情報。2016年12月1日に行われた「Internet Week 2016」では、「脆弱性情報と賢く付き合う〜発見から対策までの最前線〜」と題したプログラムが開催された。