LoginSignup
0
0

More than 1 year has passed since last update.

Github ActionsからVeracodeの静的スキャンを実行する

Last updated at Posted at 2021-11-27

はじめに

シフトレフトというキーワードがあるように、プロセス全体を通して品質を向上させるのが現代のソフトウェア開発のあるべき姿だと思うのですが、とりわけセキュリティについてはリリース直前になって扱われるトピックになっていることが多いのではないかなと思います。今回はそこの是非は深堀りしませんが、手元にあるモノを使って継続的なセキュリティ活動の取っ掛かりになる仕組みをまずは手軽に試してみようと思います。

使うもの

  • Github Actions
  • Reactアプリ
  • Veracode

Veracodeとは

Veracode(ベラコード)って聞き慣れないかと思いますが、これはコードを静的または動的な解析をすることでセキュリティ診断をしてくれるSaaSです。ざっくり言うと、.zipや.warを喰わせると診断して結果をレポートしてくれるというものです。サイトを見ると、2006年からサービス提供していて、現在はグローバルで2600以上の企業が顧客となっており、解析したコードは累計45兆行を超えているそうです。それらの実績を用いて、解析の精度を日々向上させることができているのが強みなんだそうです。ただ、日本国内での導入事例をあまり聞きません。僕もつい最近知りました。国内では類似サービスのyamory.ioのほうが知られているのかなと思います。

作ります

前置きはそこまでにして作ります。作るもののイメージはこんなんです。
githubactions_veracode.png
ReactアプリをビルドしてS3にアップロードする手前でVeracodeに.zipをアップロードして診断させます。診断は時間がかかるので、S3アップロードからは独立させています。単純に診断を実行する手間を自動化させるだけです。そして、大まかな手順は次の通りです。

  1. リポジトリを用意する
  2. 適当なReactアプリを作る
  3. S3バケットを用意する
  4. Github ActionsのWorkflowを書く

1〜3は本質ではないからすっ飛ばして、4から

Github ActionsのWorkflowを書く

Workflowを書きます。はい、ドン。

main.yaml
name: Build React
on:
  push:
      branches:
        - main
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@master

      - name: Install Dependencies
        run: npm install

      - name: Build
        run: npm run build

      - name: Zip build
        uses: thedoctor0/zip-release@master
        with:
          filename: release.zip
          path: build

      - name: Veracode Upload And Scan
        uses: veracode/veracode-uploadandscan-action@0.2.1
        with:
          # appname
          appname: ${{ github.repository }}
          # createprofile
          createprofile: true
          # filepath
          filepath: release.zip
          # version
          version: ${{ github.run_id }}
          # vid
          vid: ${{ secrets.VERACODE_ID }}
          # vkey
          vkey: ${{ secrets.VERACODE_KEY }}

      - name: Deploy
        env:
          AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
          AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
        run: aws s3 cp --recursive --region ap-northeast-1 build s3://XXXXXXX

Veracode Upload And Scanというステップが今回のキモ。そして、これはMarketplaceから入手できます。なんて簡単なんでしょう。

このWorkflowを流すと、Veracode上に appname で指定したアプリケーションが生成され、静的解析が実行され、最終的に診断結果を見ることができるようになります👏

最後に

たったこれだけで、リリース直前に「いつやる?」とか「やったっけ?」もしくは「やばいなんか出ちゃった、直さなきゃ」みたいなバタバタはなくなると思います。そもそも3回以上手動でやることは自動化しましょうという話もありますし、ビッグバンな行為は何であっても避けたいですよね。そのためにもシフトレフト。
実装については、当然ながらもっと多彩なパタンはあるかと思いますが(診断結果次第でパイプラインを進めたり止めたり、不具合チケットを自動起票したりなどなど)、今回はまずはここまで。では👋

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0