リリースされたばかりのAWS CodeBuildを使ってVAddyの脆弱性検査を自動実行

  • 7
    いいね
  • 0
    コメント

VAddy Adventカレンダー2日目の記事です。
VAddyは、継続的なWeb脆弱性検査が簡単に実現できるSaaSです。

私が好きなビールの種類は、PaleAleやIPA(India Pale Ale)です。IPAは18世紀ごろ、イギリスからインドにビールを輸出する際に船で何日もかけて運んでいたため、途中でビールが劣化する問題があったために防腐作用のあるホップを大量にいれてアルコール度数も高めにしたことが始まりで、おっと話が長くなりそうなのでこのへんにしておきますね。

AWS CodeBuildとは

スクリーンショット 2016-12-02 10.29.15.png

昨夜に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リポジトリのリストが表示されますので選択してください。
github.png

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」にセットします。
スクリーンショット 2016-12-02 16.31.05.png

ビルドを実行して脆弱性件数が0件であればビルドが全て成功します。
all_pass.png

脆弱性が1件でも見つかった場合

もし脆弱性が一件でも見つかった場合は、VAddy CLIツールが異常終了するのでそこでビルドが失敗します。
error.png

さいごに

AWS CodeBuildはリリースされたばかりのため、ブランチの指定など細かな対応はできませんが、すぐにアップデートされて対応すると思います。
現在VAddyの開発環境では、常にEC2インスタンスを立ち上げてJenkinsを稼働させているため、今後はこのような必要な時だけビルドしてインスタンス価格を減らす方向も考えていきたいと思います。