CircleCIでtfsecを実行する
背景目的
CircleCIのexecutorでtfsecを実行する記事が見当たらなかったので残す
CircleCIはv2.1を使っている
tfsecはAWSなどのクラウドリソースとの通信は行わないため秘匿情報の準備は必要ありません
tfsecで動作可能です
ツール紹介
tfsec
terraformのセキュリティ静的解析ツール
検知された内容についてはドキュメントを参考にすると良い
Insecure ExampleとSecure Exampleも書いてある
CircleCI
大手のCIツール、VMベースとDockerベースのパイプラインが作成できる
書き方
config.yml
気をつける点
- tfsec-ci imageを使う
- userはrootにする
version: 2.1
executors:
my-executor:
docker:
- image: aquasec/tfsec-ci:latest
user: root
jobs:
my-job:
executor: my-executor
steps:
- run: tfsec
executors
executorsで利用するdocker imageを定義している
executors:
my-executor:
docker:
- image: aquasec/tfsec-ci:latest
user: root
tfsec-ci imageを利用する
tfsec-ci とは
tfsec with no entrypoint - useful for CI builds where you want to override the command (tfsecのREADME.mdより)
tfsec imageを使うとentrypointがあるからか、上手くいかなかった
なのでtfsec-ci を利用している
コンテナ内部でCIが動く際に権限が不足してjobが失敗した
そのためuserをrootにして実行できるようにする
参考
executorの設定内容は以下を参考にすると良い
コンビニエンスイメージとはCircleCIが用意しているイメージ
CIが効果的に動作するように作られている
configファイルを作成することでRuleをignoreしたり、あるレベル以上に対してtfsecしたりできる
メンテされていないがorbはある、個人的には利用を推奨しない
ただorbの実装部分(tfsecのinstallやexecutorの利用方法)は参考になる箇所があった
userにrootを使う考えに至れたのもこれのおかげ(感謝)
Discussion