
事前に構築したDockerコンテナのユーザーが、そのコンテナの実行中のインスタンス内のシェルにアクセスできないようにするにはどうすればよいでしょうか。このシナリオに関連する投稿をすべてGoogleで検索して読みましたが、有効な解決策は見つかりませんでした。コンテナ内の特定のリソースへのアクセスを防止しようとしています。この調査のために、構成ファイル内のシリアル番号とします。ジャワ:7に基づいた画像ウブントゥ画像。
ソリューションをテストするには、次の手順を実行します。
Dockerコンテナを作成して実行する
コンテナをエクスポートする
docker export [コンテナ名] | gzip -c > mycontainer.tar.gz
コンテナを外部システムにインポートする
gzip -dc mycontainer.tar.gz | docker import - [コンテナ名]
コンテナを実行する
次のいずれかまたはすべての方法を使用して、実行中のコンテナーにシェルします。
docker exec -it [コンテナ名] bash
docker attach [コンテナ名]
docker run -ti --entrypoint=/bin/bash [コンテナ名]
[コンテナ名]はコンテナの名前です
bash、dash、shはすべて有効なシェルです
答え1
Jose の回答に加えて、別の解決策は次のとおりです...
docker exec :id -it /bin/rm -R /bin/*
これにより、sh と Linux の bin の便利なコマンドが削除されます。その時点でコンテナーに入るために何をするかはわかりません。実行中のコンテナーの環境変数を取得するためにメモリ デバッガーを使用できる可能性があることはわかっていますが、それだけ面倒になります... リング 0 のメモリをロックダウンして、ホストへの ssh アクセスを完全に削除する方法があるかどうか疑問に思っています。
それを解読する方法を知っている人がいたら、ぜひ知りたいです。
編集
機密情報を保護する場合は、docker secrets を使用する必要があります。以下を確認してください。
答え2
具体的には、コマンドについては、.bashrc ファイルのファイルの末尾にbash
コマンドを追加しました。これにより、ユーザーはログインして最終的にログアウトしても、コマンドを引き続き使用できます。exit
sh
答え3
保護したい情報がシリアル番号である場合、その情報を暗号化することが、その情報を保護する唯一の確実な方法です。秘密データを暗号化する方法はいくつかありますが、強力なキーを使用していることを確認してください。また、アプリケーションから秘密データをサーバーに送信してその有効性を確認することもできます。サーバーからの応答に基づいて、アプリケーションは動作を継続するか、停止してメッセージを表示します。
簡単に言えば、アプリケーションが完全に徹底的に解析される可能性があると常に想定してください。すべての秘密データと重要なデータを強力なキーを使用して常に暗号化し、キーの解読に非常に長い時間がかかるようにします (暗号化アルゴリズムは公開されているか、よく知られていると想定してください)。
アクセスを防止する方法を見つけたとしても、それだけでは誤った安心感を与えるだけです。