ペネトレーションしのべくん

さようなら、すべてのセキュリティエンジニア

Trivyでプライベートレジストリのコンテナをスキャンする

はじめに

id:shinobe179です。巷ではTrivyがAWSの設定不備をスキャンできるようになったと話題です。それは一旦クラスメソッドさんの記事に譲るとして。

dev.classmethod.jp

今日はタイトルの通り、Trivyでプライベートレジストリにあるコンテナの脆弱性をスキャンするにはどうすればいいのかを調べました。

結論

レジストリのクレデンシャルを以下の環境変数に入れておけば、実行時にいい感じにしてくれます。OSでDockerが動いている必要すらありません。

  • ユーザー名: TRIVY_USERNAME
  • パスワード: TRIVY_PASSWORD

参考:

aquasecurity.github.io

補足:ECRの場合

AWSのElastic Container Registryのプライベートリポジトリの場合は、AWSCLIやSDKを使ってクレデンシャルを取得して、それを環境変数に入れる必要があります。もしかしてSTSから取得したセッショントークンをAWS_SESSION_TOKENとかにいれておけば、ECRのクレデンシャル取得まで勝手にやってくれたりしないかなと思いましたが、ダメみたいでした。

さいごに(筆者自身の備忘を兼ねる)

これは今回の検証を通してはじめて知ったことですが、Trivyはスキャン対象のコンテナイメージがローカルになくても(pullしていなくても)スキャンできます。結論にも書いた通り、Trivyの実行環境でDockerがインストールされている必要すらありません。Trivy自身がDockerのプロトコルを喋ってるっぽいです。

プライベートレジストリの場合は認証が必要です。Trivy自身がDockerプロトコルを扱えるのなら、クレデンシャルを渡す方法があるはずです。それってどうやるんだろう、というのが今回の趣旨でした。

すごいぞTrivy。