コマンドラインでコンテナイメージをスキャンする
yamory ではコンテナイメージのコマンドラインスキャン機能を提供しています。
yamory では、コマンドラインを利用して、コンテナイメージ内で利用されているパッケージの脆弱性をスキャンできます。
これにより、お使いの コンテナイメージ内にある MW/OS 脆弱性を検知できます。
前提条件を確認する
yamory では、コンテナイメージ脆弱性スキャンツール「 Trivy 」を通じて脆弱性をスキャンし、その結果をもとに脆弱性の診断を行います。
1.Trivy を取得する
Trivy を、スキャンコマンドを実行したいサーバーにインストールします。
インストール方法については、Trivy 公式サイトにて「getting-started」>「installation」をご参照ください。
2.スキャンのトークンを発行する
サイドバーから「チーム設定」>「チーム情報設定」を開き、スキャンに必要なトークンを発行します。
3.スキャンをする
以下のスキャンコマンドを実行します。
YAMORY_ACCESS_TOKEN='<YAMORY_ACCESS_TOKEN>' YAMORY_IMAGE_NAME='<YAMORY_IMAGE_NAME>' YAMORY_IMAGE_TITLE='<YAMORY_IMAGE_TITLE>' YAMORY_IMAGE_IDENTIFIER='<YAMORY_IMAGE_IDENTIFIER>' TRIVY_TIMEOUT='<TRIVY_TIMEOUT>' YAMORY_OPEN_CONTAINER='<YAMORY_OPEN_CONTAINER>' YAMORY_IMAGE_TAGS='<YAMORY_IMAGE_TAGS>' bash -c "$(curl -sSf -L <https://yamory/script/...>)"
上記の < >
の箇所は、以下の内容に適宜置き換えてください。
パラメーター | 必須 | 説明 | 例 |
---|---|---|---|
YAMORY_ACCESS_TOKEN | ✔ | 2. で発行したアクセストークン | YourAccessToken |
YAMORY_IMAGE_NAME | ✔ | スキャン対象のイメージ名とタグ名 | yamorytest:1.0-ubuntu |
YAMORY_IMAGE_TITLE | yamory 上での表示名 | MyFirstScan | |
YAMORY_IMAGE_IDENTIFIER | コンテナイメージ識別子 | My-image/identifier | |
YAMORY_OPEN_CONTAINER | 公開コンテナ設定 | true または false |
|
YAMORY_IMAGE_TAGS | 管理タグ設定 | ABC,EEFFDD | |
TRIVY_TIMEOUT | Trivy タイムアウト設定 | 15m0s |
ECR プライベートレジストリで管理しているコンテナイメージをスキャンする場合は、追加で以下の環境変数設定も行ってください。
AWS_ACCESS_KEY_ID
AWS_SECRET_ACCESS_KEY
AWS_DEFAULT_REGION
詳細は AWS CLI を設定する環境変数をご参照ください。
DockerHub プライベートレジストリで管理しているコンテナイメージをスキャンする場合は、追加で以下の環境変数設定も行ってください。
TRIVY_USERNAME
TRIVY_PASSWORD
詳細は Trivy 公式サイトの Docker Hub をご参照ください。
<https://yamory/script/...>
について
サイドバーの「コンテナイメージ」>「スキャン」を開き、「新しいコンテナイメージをスキャン+」ボタンを押して出てくる案内にしたがって入力を進め、最後に表示されるスキャンコマンドの URL に置き換えてください。
YAMORY_IMAGE_NAME について
タグ名が未入力の場合は、latest としてスキャンを実施します。
YAMORY_IMAGE_TITLE について
YAMORY_IMAGE_TITLE が未入力の場合は、YAMORY_IMAGE_NAME の内容がタイトルとして自動入力されます。
YAMORY_IMAGE_IDENTIFIER について
コンテナイメージ識別子には 半角英数字
, 記号(.
, /
, :
, -
, _
) のみ使用できます。
yamory のコンテナイメージスキャン機能では、コンテナイメージの一意性を特定するためにイメージ名とタグ名(YAMORY_IMAGE_NAME)に指定された値を使用しています。 latest タグのイメージやメジャーバージョンタグのイメージなどはスキャンするタイミングによっては異なるイメージになる場合があります。
このような同一イメージ名・タグ名のコンテナイメージに対して、コンテナイメージ識別子を設定することで別々のコンテナイメージとして yamory で管理することができます。
コンテナイメージ識別子は、チーム内でコンテナイメージごとに一意の値になるように設定してください。
YAMORY_OPEN_CONTAINER について
コンテナイメージを外部ネットワークからパブリックアクセスが可能なコンテナ(公開コンテナ)として使用するかを指定することができます。
公開コンテナの場合は true
、非公開コンテナの場合は false
を指定します。
YAMORY_OPEN_CONTAINER が未入力の場合、前回スキャン情報があればその状態を引き継ぎ、初回スキャン時は公開コンテナとして登録されます。
本パラメータはトリアージレベルの計算に使用されます。
YAMORY_IMAGE_TAGS について
コンテナイメージの管理タグをスキャン時に設定することができます。
管理タグ名をカンマ区切りで指定します。登録された管理タグと異なる管理タグがあれば管理タグに追加されます。
YAMORY_IMAGE_TAGS が未入力の場合、登録された管理タグがあればその状態を引き継ぎます。
管理タグはチームごとに一意の値であり、コンテナイメージ検索、コンテナイメージ脆弱性検索の検索条件として利用可能です。
TRIVY_TIMEOUT について
Trivy のコンテナイメージスキャンはタイムアウトがデフォルト5分になっています。Trivy コマンドは --timeout
オプションでタイムアウトを変更してスキャンできますが、環境変数 TRIVY_TIMEOUT
でもタイムアウトを変更できます。例えば、タイムアウトを15分に変更する場合、yamory のコンテナイメージのスキャンコマンドに TRIVY_TIMEOUT='15m0s'
を追加してスキャンしてください。
TRIVY_TIMEOUT
環境変数については以下の Trivy の公式ドキュメントをご参照ください。
4.スキャン結果を確認する
yamory にログインし、サイドバーから「コンテナイメージ」>「スキャン」を開いて、スキャンしたコンテナイメージの情報を確認できます。
また、サイドバーから「コンテナイメージ」>「脆弱性」を選択開くと、スキャンで検出された脆弱性の一覧をみることができます。