yamory の使い方

yamory へようこそ! yamory の基礎知識と使い方をご紹介します。

コマンドラインでコンテナイメージをスキャンする

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 にログインし、サイドバーから「コンテナイメージ」>「スキャン」を開いて、スキャンしたコンテナイメージの情報を確認できます。

<スキャン画面のキャプチャ>

また、サイドバーから「コンテナイメージ」>「脆弱性」を選択開くと、スキャンで検出された脆弱性の一覧をみることができます。

<脆弱性画面のキャプチャ>