Dockerコンテナーでの接続または実行を防ぐ方法


9

ビルド済みのDockerコンテナーのユーザーが、そのコンテナーの実行中のインスタンス内のシェルにアクセスできないようにするにはどうすればよいですか?私はググって、このシナリオに関連するすべての投稿を読み、実用的な解決策なしに出てきました。コンテナ内の特定のリソースへのアクセスを防止しようとしています。この問い合わせのために、構成ファイル内のシリアル番号を考えてみましょう。私は、ubuntuイメージに基づくjava:7イメージに基づいて構築しています。

ソリューションをテストするには、次の手順を実行します。

  1. Dockerコンテナーを作成して実行する

  2. コンテナをエクスポートする

    docker export [コンテナー名] | gzip -c> mycontainer.tar.gz

  3. 外部システムにコンテナーをインポートする

    gzip -dc mycontainer.tar.gz | Dockerインポート-[コンテナ名]

  4. コンテナーを実行する

  5. 次の方法のいずれか/すべてを使用して、実行中のコンテナにシェルします。

    docker exec -it [コンテナ名] bash

    docker attach [コンテナ名]

    docker run -ti --entrypoint = / bin / bash [コンテナ名]

[コンテナ名]はコンテナの名前です

bash、dash、およびshはすべて有効なシェルです


1
コンテナー内の情報を保護しようとしている場合、Dockerは必要なテクノロジーではありません。シェルアクセスを制限できたとしても、コンテナー内のファイルシステムにアクセスするには、他にも無数の簡単な手段があります。
EEAA、2015

残念ながら、この場合はdockerを使用する必要があります。この場合は理想的ではないことはよく承知しています。
ポールグレゴワール2015

こんにちは、@ EEAAに「簡単な手段」のリストを教えていただけますか?あなたはドッカーの代わりに何を提案しますか?
nils petersohn 19/07/19

回答:


5

特にbashコマンドについては、.bashrcファイルにファイルのexit最後にコマンドを追加したので、ユーザーはログインして最終的にキックアウトしましたが、ユーザーは引き続きshコマンドを使用できます。


3

ホセの答えに追加するには、別の解決策は...

docker exec :id -it /bin/rm -R /bin/*

これにより、shとlinuxの便利なコマンドがすべて削除されます。その時点でコンテナーに入るために何をするかわかりません。実行中のコンテナーの環境変数を取得するためにメモリデバッガーを使用できる場合があることはわかっていますが、それにより、非常に煩わしくなります...リング0でそのメモリをロックダウンして削除する方法があるのでしょうか。ホストへのsshアクセス。

誰かがそれを解く方法を知っているなら、私はその方法を知ることに興味があります。

編集

機密情報を保護する場合は、Dockerシークレットを使用します。チェックアウト:

https://docs.docker.com/engine/swarm/secrets/


これは私の目的のために完全に機能します、ありがとう!正しいコマンドは次のようになると思いますが、docker exec -it 'container-id' /bin/rm -R /bin/*
ty01

これは私にとってはうまくいきませんDocker version 18.09.6, build 481bc77156 よるアプローチは、@ty01このエラーメッセージ与え/bin/rm: cannot remove '/bin/<filename>': No such file or directory、すべてのためfilenameにあるのを/bin答え@Dr. Knowitallを返しますError: No such container: :id。私は交換する場合でもidCONTAINER_IDからdocker ps、それはまだ同じエラーメッセージが表示されます。
edesz

0

保護したい情報がシリアル番号である場合、その情報を暗号化することが唯一の確実な保護方法です。秘密データを暗号化するさまざまな方法を選択できます。強力なキーを使用していることを確認してください。また、アプリケーションにシークレットデータをサーバーに送信させてその有効性を識別させ、サーバーからの応答に基づいてアプリが動作を継続するか、メッセージを停止して表示することもできます。

簡単に言うと、常にアプリケーションを完全かつ徹底的に分析できると想定してください。強力な鍵を使用してすべての秘密および重要なデータを常に暗号化するため、鍵の解読には非常に長い時間がかかります(暗号化アルゴリズムが公開されているか、よく知られていると仮定します)。

たとえそれをする方法を見つけたとしても、単独でアクセスを防止することは、誤った安心感を与えるだけです。


...保護する秘密が暗号化キーになり、暗号化キーで保護する必要があります。そして、そのキーをキーで保護し、そのキーをキーで保護ます...
Mark
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.