VAddy Adventカレンダー2日目の記事です。
VAddyは、継続的なWeb脆弱性診断が簡単に実現できるSaaSです。
私が好きなビールの種類は、PaleAleやIPA(India Pale Ale)です。IPAは18世紀ごろ、イギリスからインドにビールを輸出する際に船で何日もかけて運んでいたため、途中でビールが劣化する問題があったために防腐作用のあるホップを大量にいれてアルコール度数も高めにしたことが始まりで、おっと話が長くなりそうなのでこのへんにしておきますね。
AWS CodeBuildとは
昨夜にre:Inventにて発表されたフルマネージドのビルドツールです。JenkinsやCircleCIのようなもので、何かをインストールしたりインスタンスを事前に用意する必要もなく、ビルドするタイミングでインスタンスが使われてビルドが終わると自動でインスタンスが破棄されます。
こちらのブログが詳しいので詳細を知りたい方はご覧ください。
http://dev.classmethod.jp/etc/reinvent-2016-codebuild/
CodeBuild用のリポジトリをgithubに作成
githubのリポジトリを元に試しにビルドを実行してみます。
まずはgithubにリポジトリを作って、下記のようなbuildspec.ymlをコミットしておきます。
このbuildspec.ymlがリポジトリにある場合はそれに従ってビルドが進みます。今回は、post_build(ビルドが終わった後の処理)でVAddyのCLIツールをダウンロードして脆弱性検査の実行と確認を行うコマンドを実行しています。
version: 0.1
phases:
install:
commands:
- echo Nothing to do in the install phase...
pre_build:
commands:
- echo Nothing to do in the pre_build phase...
build:
commands:
- echo Nothing to do in the build phase...
post_build:
commands:
- git clone https://github.com/vaddy/go-vaddy.git govaddy ; govaddy/bin/vaddy-linux-64bit
- echo Build completed on `date`
CodeBuildで試しにビルドしてみる
ここからAWS CodeBuildの管理画面の操作になります。現在、東京リージョンでは提供されていないため、USリージョンで試しています。
https://us-west-2.console.aws.amazon.com/codebuild
Create Projectボタンを押してプロジェクトを作成します。
リポジトリはgithubを選択するとgithubの認証画面が出るのでアクセス許可します。その後、githubリポジトリのリストが表示されますので選択してください。
Current build specificationの項目は、Using buildspec.yml in the source code root directoryを選択します。これでリポジトリのbuilspec.ymlが利用されます。
この状態でビルドを実行すると、エラーになると思います。VAddyのCLIツールに必要なトークンやユーザ名を指定していないからです。
CodeBuildのビルド実行後に、VAddyの脆弱性検査を実行する
VAddyのAPI経由で脆弱性検査を実行するための情報を環境変数にセットします。
先ほど作ったCodeBuildのプロジェクトの編集画面に行くと、下の方に「Show Advanced Settings」というメニューがありますのでそこをクリックしてVAddy APIを利用するのに必要な情報を「Environment Variables」にセットします。
ビルドを実行して脆弱性件数が0件であればビルドが全て成功します。
脆弱性が1件でも見つかった場合
もし脆弱性が一件でも見つかった場合は、VAddy CLIツールが異常終了するのでそこでビルドが失敗します。
さいごに
AWS CodeBuildはリリースされたばかりのため、ブランチの指定など細かな対応はできませんが、すぐにアップデートされて対応すると思います。
現在VAddyの開発環境では、常にEC2インスタンスを立ち上げてJenkinsを稼働させているため、今後はこのような必要な時だけビルドしてインスタンス価格を減らす方向も考えていきたいと思います。