Snykでコンテナイメージをセキュリティ解析してみた(初心者向け)

今回はSnykとコンテナイメージの連携方法について書いてみました。
2022.12.10

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは、こんばんは、アライアンス統括部のきだぱんです。

今年も残りわずか… 12月に入りました。アドベントカレンダーの季節です!
本記事はSnyk Advent Calendar 2022アライアンス統括部アドベントカレンダー2022の12/6記事になります!

今回はSnykとコンテナイメージの連携方法について書いていきたいと思います。

Snykとは

そもそもSnykとは、何なのか。 Snyk(スニーク)はデベロッパーファーストのセキュリティプラットフォームです。
Snykは、コードやオープンソースとその依存関係、コンテナやIaC(Infrastructure as a Code) における脆弱性を見つけるだけでなく、優先順位をつけて修正するためのツールです。 Gitや統合開発環境(IDE)、CI/CDパイプラインに直接組み込むことができるので、デベロッパーが簡単に使うことができます。
Snyk は、Java、.NET、JavaScript、Python、Golang、PHP、C/C++、Ruby、Scalaなど、多くの言語とツールをサポートしています。

また、Docker、Terraform、k8s、Infrastructure as Codeのファイルスキャンもサポートしています。

事前準備

  • GitHubアカウント
  • Git CLI
  • Docker Hubアカウント

Docker Hubとの連携

Docker Hub と Snyk の間でインテグレーションを有効化することにより、コンテナ脆弱性の管理を開始できます。
左サイドバー[Integrations]から、[Container Registries] の[Docker Hub]を選択します。

Docker Hubのアクセストークンとユーザーネームを入力します。

Docker Hubでの作業

Docker Hubのアクセストークンは、Docker Hubにログインします。
Docker Hub Container Image Library | App Containerization
右上アイコンの[Accout Setting]から、[Security]→[Access Token]から、[New Access Token]を選択します。

トークンの説明を追加し、ドロップダウンから次のアクセス許可を選択し作成します。


画面に表示されたトークンをコピーしておきます。
※画面を閉じると、トークンを取得できなくなるのでご注意ください。

Snykでの作業

再び、Snykに戻り、Docker Hubのアクセストークンとユーザーネームを入力します。

Connected to Docker Hub と表示されれば、連携完了です。

コンテナイメージの追加

Docker Hubに新しいイメージを追加していきます。
Docker Hubにログインします。

# 先ほどのユーザーネームとアクセストークンを入力  
$ docker login -u DOCKER_HUB_USERNAME -p YOUR_ACCESS_TOKEN_OR_PASSWORD
Login Succeeded

# イメージ取得
$ docker pull [オプション] NAME[:TAG|@DIGEST]

# タグ付け
$ docker tag ---------------

# Docker Hub アカウントに送信
docker push [OPTIONS] NAME[:TAG]

Snyk画面に戻り、[Add your Docker Hub Images to Snyk]を選択すると送信したイメージが表示されるので選択し、インポートします。
インポートが完了すると、スキャン結果を確認できます。

おまけ

Snyk CLIでもコンテナイメージのスキャンが可能です。
Snyk CLIのインストール方法は、下記の通りです。

docker run -it \
    -e "SNYK_TOKEN=<TOKEN>" \
    -v "<PROJECT_DIRECTORY>:/project" \
    -v "/home/user/.gradle:/home/node/.gradle" \
  snyk/snyk-cli:gradle-5.4 test --org=my-org-name

スキャン方法は以下の通りです。

# アカウントの連携  
$ snyk auth

# スキャン
$ snyk container test <repository>:<tag>

Snyk CLIでもコンテナイメージのスキャンを行うことが出来ます、詳しくは下記をご覧ください。

おわりに

今回はSnykとコンテナイメージの連携方法について書いてみました。
またSnyk CLIを使用すればマシン端末上を含む様々な環境で利用することが出来ますので是非ご活用ください!
Snykに関するブログも沢山展開されていますので、是非こちらもご覧ください。
Snyk の記事一覧 | DevelopersIO この記事がどなたかのお役に立てば幸いです。
以上、きだぱんでした