Snykでコンテナイメージをセキュリティ解析してみた(初心者向け)
こんにちは、こんばんは、アライアンス統括部のきだぱんです。
今年も残りわずか… 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のインストール方法は、下記の通りです。
- Scoop(Windows環境) https://dev.classmethod.jp/articles/snyk-cli-windows-202210/
- npm または Yarn https://www.npmjs.com/package/snyk
- GitHubリソース https://github.com/snyk/snyk/releases
- Homebrew (macOS, Linux) https://github.com/snyk/homebrew-tap
- Snyk Integration https://docs.snyk.io/integrations
-
Snyk CLI in a Docker https://docs.snyk.io/snyk-cli/install-the-snyk-cli#:~:text=scoop install snyk-,Snyk CLI in a Docker image,-Snyk CLI can
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
この記事がどなたかのお役に立てば幸いです。
以上、きだぱんでした