コンテンツにスキップ

Docker レジストリへの Docker ターゲットのアップロード

Docker を使用すると、他の開発者がコンテナー化されたアプリケーションを実行する際に自分で依存関係を管理する必要がないように、アプリケーションとその依存関係を含む Docker イメージを作成してアップロードまたは共有できます。

そのため、共有 Docker イメージを実行する場合、コンテナー化された環境がすでにセットアップされており、共有アプリケーションのパッケージ化と実行において、依存関係に関連するよくある環境の問題を避けることができます。

Tip

Docker のユース ケースおよび Docker が有用な理由の詳細については、公式の Docker ドキュメントを参照してください。

Mayhem には、Docker コンテナーを利用して、ターゲットをテストする際により信頼性の高い方法でアプリケーションとその依存関係を管理し、実行するオプションがあります。Mayhem はパブリックな Docker Hub レジストリから Docker イメージを取り込んでコンテナー化されたターゲット アプリケーションをテストできます。

Mayhem には、Docker コンテナーを利用して、ターゲットをテストする際により信頼性の高い方法でアプリケーションとその依存関係を管理し、実行するオプションがあります。ただし、Mayhem が Docker コンテナーを利用してターゲット アプリケーションをテストするには、Mayhem の内部的な Docker レジストリにログインしてイメージをプッシュする必要があります。

docker-run-diagram-dockerhub

docker-run-diagram

Note

Mayhem を使用してアプリケーションのセキュリティ テストを行うもう 1 つの方法は、mayhem package コマンドを使用してローカルにアプリケーションをパッケージ化することです。しかし、Docker コンテナーを使用する方がより信頼性が高い (そして結果的に推奨される) 方法です。

Docker レジストリは、タグ付けまたは名前付けされた Docker イメージを簡単に整理し、共有するための格納および配布システムです。

Mayhem は、内部的な Docker レジストリと通信し、(Mayhem UI などで) わかりやすく Docker イメージを表示し、Docker イメージに含まれるターゲット アプリケーションに対してランを実行できます。デフォルトでは、デプロイされた Mayhem インスタンスには、ポート 5000 で動作する内部的な Docker レジストリがあらかじめパッケージされています。

そのため、mayhem login コマンドには 2 つの目的があります。

  1. ホスト URL および API トークンを使用して Mayhem サーバーで認証します。
  2. ホスト URL の内部 Docker レジストリにログインします (レジストリが利用可能な場合)。

Tip

mayhem login コマンドの使用方法および API トークンの生成方法の詳細については、それぞれ「Mayhem CLI のインストール」および「API トークンの生成」を参照してください。

mayhem-login-docker

Docker レジストリへの Docker イメージのプッシュ

このサンプルでは、既存の Docker イメージから新しいイメージを作成し、新しいイメージにタグを付けなおして指定された Docker Hub リポジトリにプッシュします。まず、2.10 チュートリアル Docker イメージをダウンロードします。

docker pull forallsecure/tutorial:2.10

次に、forallsecure/tutorial:2.10 から新しいイメージ docker-upload-tutorial を作成し、Docker Hub のユーザー名およびイメージ名を使用してタグを付けます。最後に、新しいイメージを Docker Hub レジストリにプッシュします。

docker tag forallsecure/tutorial:2.10 <DOCKERHUB_USERNAME>/docker-upload-tutorial
docker push <DOCKERHUB_USERNAME>/docker-upload-tutorial

これで終わりです。新しい Docker イメージを Docker Hub にプッシュできました。

内部 Docker レジストリにログインすると、任意の新しいイメージを Docker レジストリにプッシュできます。

そのため、このサンプルでは、既存の Docker イメージから新しいイメージを作成し、新しいイメージを内部的な Docker レジストリにプッシュします。まず、2.10 チュートリアル Docker イメージをダウンロードします。

docker pull forallsecure/tutorial:2.10

次に、forallsecure/tutorial:2.10 Docker イメージのタグを docker-upload-tutorial に変更し、内部的な Docker レジストリ URL および任意のリポジトリ名を使用してタグ付けします。最後に、新しいイメージを内部的な Docker レジストリにプッシュします。

docker tag forallsecure/tutorial:2.10 <REGISTRY_HOST>/forallsecure/docker-upload-tutorial
docker push <REGISTRY_HOST>/forallsecure/docker-upload-tutorial

これで終わりです。新しい Docker イメージを内部的な Docker レジストリにプッシュできました。

Mayhem CLI から Docker イメージをテストする

パブリックな Docker Hub レジストリにアップロードされた既存の Docker イメージを、通常どおり Mayhem CLI でテストできます。Mayhemfile の構成で、Docker Hub イメージを指すよう image パラメーターを設定するとともに、コンテナー化された cmd ターゲットを指定します。

プライベートな Docker レジストリにアップロードされた既存の Docker イメージを、通常どおり Mayhem CLI でファズできます。Mayhemfile の構成で、Docker Hub イメージを指すよう image パラメーターを設定するとともに、コンテナー化された cmd ターゲットを指定します。

1
2
3
4
5
image: index.docker.io/forallsecure/docker-upload-tutorial:latest
project: forallsecure/docker-upload-tutorial
target: latest
cmds:
  - cmd: /root/tutorial/testme/v1/testme @@
1
2
3
4
5
image: $MAYHEM_DOCKER_REGISTRY/forallsecure/docker-upload-tutorial:latest
project: forallsecure/docker-upload-tutorial
target: latest
cmds:
  - cmd: /root/tutorial/testme/v1/testme @@

情報

$MAYHEM_DOCKER_REGISTRY 変数を使用して現行の Mayhem Docker レジストリの URL を指定できます。この変数は、ユーザーが mayhem login コマンドを使用して Mayhem Docker レジストリにログインする際に使用できます。

その後、上記の Mayhemfile に対して mayhem run コマンドを実行すると、コンテナー化されたアプリケーションがファジングされたのがわかります。たとえば、Mayhemfile のディレクトリに移動し、次のコマンドを実行します。

mayhem run .

これで終わりです。新しくアップロードされた Docker イメージに対する Mayhem ランが表示されます。

docker-mayhem-run

まとめ

Docker イメージを使用するのは、コンテナー化された環境を利用してアプリケーションとその依存関係をパッケージ化し、共有するのに便利で効果的な方法です。Mayhem は Docker イメージの使用をサポートしており、パブリックな Docker Hub レジストリから Docker イメージを取り込むことができます。

Docker イメージを使用するのは、コンテナー化された環境を使用してアプリケーションとその依存関係をパッケージ化し、共有するのに便利で効果的な方法です。Mayhem は、ユーザーの利便性と信頼性向上のために用意されたプライベートな Docker レジストリを利用した Docker イメージの使用をサポートしています。

Docker Hub レジストリに Docker イメージをプッシュする方法を理解すると、Docker Hub にアップロードされたイメージを Mayhem でファジングすることができます。

Docker レジストリに Docker イメージをプッシュする方法を理解すると、Mayhem UI の Docker レジストリを利用し、Docker イメージ内のターゲット アプリケーションに対して簡単に Mayhem ランを実行することができます。