正式なドキュメントは英語版であり、この日本語訳はAI支援翻訳により作成された参考用のものです。日本語訳の一部の内容は人間によるレビューがまだ行われていないため、翻訳のタイミングにより英語版との間に差異が生じることがあります。最新かつ正確な情報については、英語版をご参照ください。

チュートリアル: Dockerコンテナの脆弱性をスキャンする

  • プラン: Free、Premium、Ultimate
  • 提供形態: GitLab.com、GitLab Self-Managed、GitLab Dedicated

コンテナスキャンを使用して、コンテナレジストリに保存されているコンテナイメージの脆弱性をチェックできます。

コンテナスキャンの設定は、プロジェクトのパイプラインの設定に追加されます。このチュートリアルでは、次のことを行います:

  1. 新しいプロジェクトを作成します。
  2. Dockerfileファイルをプロジェクトに追加します。このDockerfileには、Dockerイメージを作成するために必要な最小限の設定が含まれています。
  3. 新しいプロジェクトのパイプライン設定を作成して、DockerfileからDockerイメージを作成し、Dockerイメージをコンテナレジストリにプッシュし、脆弱性がないかDockerイメージをスキャンします。
  4. レポートされた脆弱性を確認します。
  5. Dockerイメージを更新し、更新されたイメージをスキャンします。

新しいプロジェクトを作成

新しいプロジェクトを作成するには

  1. 左側のサイドバーの上部で、新規作成 plus )を選択し、新規プロジェクト/リポジトリを選択します。
  2. 空のプロジェクトの作成を選択します。
  3. プロジェクト名に、Tutorial container scanning projectを入力します。
  4. プロジェクトのURLで、プロジェクトのネームスペースを選択します。
  5. プロジェクトを作成を選択します。

新しいプロジェクトにDockerfileを追加

コンテナスキャンが機能するものを提供するには、最小限の設定でDockerfileを作成します:

  1. Tutorial container scanning projectプロジェクトで、 plus > 新しいファイルを選択します。

  2. ファイル名Dockerfileを入力し、ファイルのコンテンツを次のように指定します:

    FROM hello-world:latest

このDockerfileから作成されたDockerイメージは、hello-world Dockerイメージに基づいています。

  1. 変更をコミットするを選択します。

パイプラインの設定を作成

これで、パイプライン設定を作成する準備ができました。パイプラインの設定:

  1. DockerfileファイルからDockerイメージをビルドし、Dockerイメージをコンテナレジストリにプッシュします。build-imageジョブはDocker-in-DockerCI/CDサービスとして使用して、Dockerイメージをビルドします。
  2. Container-Scanning.gitlab-ci.ymlテンプレートを含めて、コンテナレジストリに保存されているDockerイメージをスキャンします。

パイプライン設定を作成するには:

  1. プロジェクトのルートディレクトリで、 plus > 新しいファイルを選択します。

  2. ファイル名.gitlab-ci.ymlを入力し、ファイルのコンテンツを次のように指定します:

    include:
      - template: Jobs/Container-Scanning.gitlab-ci.yml
    
    container_scanning:
      variables:
        CS_IMAGE: $CI_REGISTRY_IMAGE/tutorial-image
    
    build-image:
      image: docker:24.0.2-cli
      stage: build
      services:
        - docker:24.0.2-dind
      script:
        - docker build --tag $CI_REGISTRY_IMAGE/tutorial-image --file Dockerfile .
        - docker login --username gitlab-ci-token --password $CI_JOB_TOKEN $CI_REGISTRY
        - docker push $CI_REGISTRY_IMAGE/tutorial-image
  3. 変更をコミットするを選択します。

ほぼ完了です。ファイルをコミットすると、新しいパイプラインがこの設定で開始されます。完了したら、スキャンの結果を確認できます。

レポートされた脆弱性を確認

スキャンの脆弱性は、スキャンを実行したパイプラインにあります。レポートされた脆弱性を確認するには:

  1. CI/CD > パイプラインを選択し、最新のパイプラインを選択します。このパイプラインは、container_scanningというジョブで構成されている必要があります。testステージ。
  2. container_scanningジョブが成功した場合は、セキュリティタブを選択します。脆弱性が見つかった場合は、そのページに一覧表示されます。

Dockerイメージを更新

hello-world:latestに基づくDockerイメージは、脆弱性を示す可能性は低いです。脆弱性を報告するスキャンの例:

  1. プロジェクトのルートディレクトリで、既存のDockerfileファイルを選択します。
  2. 編集を選択します。
  3. FROM hello-world:latestを、FROM命令の別のDockerイメージに置き換えます。コンテナスキャンを示す最適なDockerイメージは次のとおりです:
    • オペレーティングシステムのパッケージ。たとえば、Debian、Ubuntu、Alpine、またはRed Hatから。
    • プログラミング言語のパッケージ。たとえば、NPMパッケージまたはPythonパッケージ。
  4. 変更をコミットするを選択します。

ファイルへの変更をコミットすると、この更新されたDockerfileで新しいパイプラインが開始されます。完了したら、新しいスキャンの結果を確認できます。