本連載では、グローバルスタンダードになっている「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のコンテンツは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.