チュートリアル: Dockerコンテナの脆弱性をスキャンする
- プラン: Free、Premium、Ultimate
- 提供形態: GitLab.com、GitLab Self-Managed、GitLab Dedicated
コンテナスキャンを使用して、コンテナレジストリに保存されているコンテナイメージの脆弱性をチェックできます。
コンテナスキャンの設定は、プロジェクトのパイプラインの設定に追加されます。このチュートリアルでは、次のことを行います:
- 新しいプロジェクトを作成します。
Dockerfileファイルをプロジェクトに追加します。このDockerfileには、Dockerイメージを作成するために必要な最小限の設定が含まれています。- 新しいプロジェクトのパイプライン設定を作成して、
DockerfileからDockerイメージを作成し、Dockerイメージをコンテナレジストリにプッシュし、脆弱性がないかDockerイメージをスキャンします。 - レポートされた脆弱性を確認します。
- Dockerイメージを更新し、更新されたイメージをスキャンします。
新しいプロジェクトを作成
新しいプロジェクトを作成するには
- 左側のサイドバーの上部で、新規作成( )を選択し、新規プロジェクト/リポジトリを選択します。
- 空のプロジェクトの作成を選択します。
- プロジェクト名に、
Tutorial container scanning projectを入力します。 - プロジェクトのURLで、プロジェクトのネームスペースを選択します。
- プロジェクトを作成を選択します。
新しいプロジェクトにDockerfileを追加
コンテナスキャンが機能するものを提供するには、最小限の設定でDockerfileを作成します:
Tutorial container scanning projectプロジェクトで、 > 新しいファイルを選択します。ファイル名
Dockerfileを入力し、ファイルのコンテンツを次のように指定します:FROM hello-world:latest
このDockerfileから作成されたDockerイメージは、hello-world Dockerイメージに基づいています。
- 変更をコミットするを選択します。
パイプラインの設定を作成
これで、パイプライン設定を作成する準備ができました。パイプラインの設定:
DockerfileファイルからDockerイメージをビルドし、Dockerイメージをコンテナレジストリにプッシュします。build-imageジョブはDocker-in-DockerをCI/CDサービスとして使用して、Dockerイメージをビルドします。Container-Scanning.gitlab-ci.ymlテンプレートを含めて、コンテナレジストリに保存されているDockerイメージをスキャンします。
パイプライン設定を作成するには:
プロジェクトのルートディレクトリで、 > 新しいファイルを選択します。
ファイル名
.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変更をコミットするを選択します。
ほぼ完了です。ファイルをコミットすると、新しいパイプラインがこの設定で開始されます。完了したら、スキャンの結果を確認できます。
レポートされた脆弱性を確認
スキャンの脆弱性は、スキャンを実行したパイプラインにあります。レポートされた脆弱性を確認するには:
- CI/CD > パイプラインを選択し、最新のパイプラインを選択します。このパイプラインは、
container_scanningというジョブで構成されている必要があります。testステージ。 container_scanningジョブが成功した場合は、セキュリティタブを選択します。脆弱性が見つかった場合は、そのページに一覧表示されます。
Dockerイメージを更新
hello-world:latestに基づくDockerイメージは、脆弱性を示す可能性は低いです。脆弱性を報告するスキャンの例:
- プロジェクトのルートディレクトリで、既存の
Dockerfileファイルを選択します。 - 編集を選択します。
FROM hello-world:latestを、FROM命令の別のDockerイメージに置き換えます。コンテナスキャンを示す最適なDockerイメージは次のとおりです:- オペレーティングシステムのパッケージ。たとえば、Debian、Ubuntu、Alpine、またはRed Hatから。
- プログラミング言語のパッケージ。たとえば、NPMパッケージまたはPythonパッケージ。
- 変更をコミットするを選択します。
ファイルへの変更をコミットすると、この更新されたDockerfileで新しいパイプラインが開始されます。完了したら、新しいスキャンの結果を確認できます。