#始めに
このエントリは ソフトウェアテストあどべんとかれんだー 2014 の 7 日目のエントリです。
前日は a_suenami さんのテストとは開発プロセスそのものである #SWTestAdvent でした。
現在、開発プロセスとテストという部分において現場でどのように促進していこうか悩んでいるところでしたのでとても参考になる記事で楽しく読ませていただきました。
事の始まり
現場より「過去と未来の全てのセキュリティに対応して欲しい」と言われました。
その祈りは!?そんな祈りが叶うとすればそれは時間干渉なんてレベルじゃない。因果律そのもに対する反逆だ!っと思ったかは定かではありませんが、よくよく話を聞いてみると実際にはセキュリティ問題が発生した場合の早急な対処をできる環境を用意できれば良いようでした。
対話大事!
そこでGauntltですよ!
Gauntltは様々なセキュリティツールを動かすことができ、堅牢なソフトウェアを作るためにDevとOpsのグループ間でテストを容易にするためのツールです(意訳
Gauntltは下記のようなオープンソースのセキュリティテストツールをベースとした,セキュリティテスト自動化フレームワークを提供してくれます。
- curl
- nmap
- sslyze
- sqlmap
- Garmr
- generic command line
- more coming soon
公式サイトは ⇒ Gauntlt
インストール
Gauntltを使うために gem をインストールします。
gem install gauntlt
サンプル実行
公式のサンプルシナリオを実行してみます。
ディレクトリを作成し、ディレクトリの直下にテスト用のコードを記載します
mkdir my_attack
vim my_attack/simplest.attack
テスト用のコードはCucumberと同じように記載ができますので、Cucmberでテストコードを記載したことがある方ならばすぐに読み解けるのではないでしょうか。
Feature: simplest attack possible
Scenario:
When I launch a "generic" attack with:
"""
ls -a
"""
Then the output should contain:
"""
.
"""
gauntletを実際に実行してみます。
実行すると見知ったテスト結果が表示されます。
gauntlt my_attack/simplest.attack
Feature: simplest attack possible
Scenario: # my_attack/simplest.attack:2
When I launch a "generic" attack with: # gauntlt-1.0.9/lib/gauntlt/attack_adapters/generic.rb:1
"""
ls -a
"""
Then the output should contain: # aruba-0.5.4/lib/aruba/cucumber.rb:147
"""
.
"""
1 scenario (1 passed)
2 steps (2 passed)
偉い人に見せる時は上記の結果をそのまま出しても拒絶反応を示してくれるでしょう。
そこでHTMLで出力もしてくれるようです。
結果も色分けしてくれるので、ぱっと見ただけで分かるので安心ですね。
gauntlt --format html my_attack/simplest.attack >> output.html
サンプルコード
Githubにサンプルコードがあります
gauntlt/gauntlt
所感
generic command line 系のテストに関しては、Gauntlt自体が別のサーバにアクセスするような機能がないため別途用意する必要があります。
ツールのバージョンなどを検査する場合は、serverspec の方に軍配があがるでしょう。
直近に発生した Shellshock の脆弱性があるかどうかを継続的に確認したい!っという場合には良いのかもしれません。
またセキュリティツールを使用して検査を行っていきますので、すでに持っている知見を参考にしながら継続的にセキュリティチェックを行えますので一手間加えてテストしていくには良いと思います。
最後に
次は urasandesu さんです。現在作成中のテストライブラリとのことで楽しみです!