Docker レジストリへの Docker ターゲットのアップロード¶
Docker を使用すると、他の開発者がコンテナー化されたアプリケーションを実行する際に自分で依存関係を管理する必要がないように、アプリケーションとその依存関係を含む Docker イメージを作成してアップロードまたは共有できます。
そのため、共有 Docker イメージを実行する場合、コンテナー化された環境がすでにセットアップされており、共有アプリケーションのパッケージ化と実行において、依存関係に関連するよくある環境の問題を避けることができます。
Tip
Docker のユース ケースおよび Docker が有用な理由の詳細については、公式の Docker ドキュメントを参照してください。
Mayhem には、Docker コンテナーを利用して、ターゲットをテストする際により信頼性の高い方法でアプリケーションとその依存関係を管理し、実行するオプションがあります。Mayhem はパブリックな Docker Hub レジストリから Docker イメージを取り込んでコンテナー化されたターゲット アプリケーションをテストできます。
Mayhem には、Docker コンテナーを利用して、ターゲットをテストする際により信頼性の高い方法でアプリケーションとその依存関係を管理し、実行するオプションがあります。ただし、Mayhem が Docker コンテナーを利用してターゲット アプリケーションをテストするには、Mayhem の内部的な Docker レジストリにログインしてイメージをプッシュする必要があります。
Note
Mayhem を使用してアプリケーションのセキュリティ テストを行うもう 1 つの方法は、mayhem package
コマンドを使用してローカルにアプリケーションをパッケージ化することです。しかし、Docker コンテナーを使用する方がより信頼性が高い (そして結果的に推奨される) 方法です。
Docker レジストリは、タグ付けまたは名前付けされた Docker イメージを簡単に整理し、共有するための格納および配布システムです。
Mayhem は、内部的な Docker レジストリと通信し、(Mayhem UI などで) わかりやすく Docker イメージを表示し、Docker イメージに含まれるターゲット アプリケーションに対してランを実行できます。デフォルトでは、デプロイされた Mayhem インスタンスには、ポート 5000
で動作する内部的な Docker レジストリがあらかじめパッケージされています。
そのため、mayhem login
コマンドには 2 つの目的があります。
- ホスト URL および API トークンを使用して Mayhem サーバーで認証します。
- ホスト URL の内部 Docker レジストリにログインします (レジストリが利用可能な場合)。
Tip
mayhem login
コマンドの使用方法および API トークンの生成方法の詳細については、それぞれ「Mayhem CLI のインストール」および「API トークンの生成」を参照してください。
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 |
|
1 2 3 4 5 |
|
情報
$MAYHEM_DOCKER_REGISTRY
変数を使用して現行の Mayhem Docker レジストリの URL を指定できます。この変数は、ユーザーが mayhem login
コマンドを使用して Mayhem Docker レジストリにログインする際に使用できます。
その後、上記の Mayhemfile
に対して mayhem run
コマンドを実行すると、コンテナー化されたアプリケーションがファジングされたのがわかります。たとえば、Mayhemfile
のディレクトリに移動し、次のコマンドを実行します。
mayhem run .
これで終わりです。新しくアップロードされた Docker イメージに対する Mayhem ランが表示されます。
まとめ¶
Docker イメージを使用するのは、コンテナー化された環境を利用してアプリケーションとその依存関係をパッケージ化し、共有するのに便利で効果的な方法です。Mayhem は Docker イメージの使用をサポートしており、パブリックな Docker Hub レジストリから Docker イメージを取り込むことができます。
Docker イメージを使用するのは、コンテナー化された環境を使用してアプリケーションとその依存関係をパッケージ化し、共有するのに便利で効果的な方法です。Mayhem は、ユーザーの利便性と信頼性向上のために用意されたプライベートな Docker レジストリを利用した Docker イメージの使用をサポートしています。
Docker Hub レジストリに Docker イメージをプッシュする方法を理解すると、Docker Hub にアップロードされたイメージを Mayhem でファジングすることができます。
Docker レジストリに Docker イメージをプッシュする方法を理解すると、Mayhem UI の Docker レジストリを利用し、Docker イメージ内のターゲット アプリケーションに対して簡単に Mayhem ランを実行することができます。