Dockerイメージの形式で顧客にアプリを配信したい。ただし、エンドユーザーがコンテナ内の何かを変更しないようにすることが重要です。ユーザーは、コンテナを実行/停止し、ネットワーク経由でコンテナとやり取りすることのみが可能です。
コンテナの内部へのアクセスを禁止することは可能ですか?コンテナが作成したイメージの整合性を検証することは可能ですか?
Dockerイメージの形式で顧客にアプリを配信したい。ただし、エンドユーザーがコンテナ内の何かを変更しないようにすることが重要です。ユーザーは、コンテナを実行/停止し、ネットワーク経由でコンテナとやり取りすることのみが可能です。
コンテナの内部へのアクセスを禁止することは可能ですか?コンテナが作成したイメージの整合性を検証することは可能ですか?
回答:
つまり、顧客が自身のインフラストラクチャで実行するコンテナを変更できないようにすることはできません。コンテナは、難読化できるバイナリのようなものではありません。これらはランタイム環境です。ただし、コンテナ内で配布するコードは難読化できます。
あなたの質問は、サードパーティのサポートの問題を暗示しています:クライアントは自分の環境で実行するソフトウェアを変更します。提供するコンテナを操作するツール(監視やログなど)を提供する場合、クライアントは(ソフトウェアライセンスの一部として)不正な変更を行わないことに同意する必要があります。これは、コンテナだけでなく、あらゆる種類のサードパーティソフトウェアに適用されます。
状況に応じて、クラウドインフラストラクチャで実行されるSoftware As A Service(SaaS)としてアプリを提供するオプションもあります。
クライアントがコンテナをインフラストラクチャ上で実行することを要求し、変更制限に従うことを拒否する場合、おそらくソフトウェアの使用をサポートしようとは思わないでしょう。
Dockerは、コンテナーへのユーザーアクセスを妨げる手段を提供しませんが、イメージ開発者として、いくつかの戦略に従うことができます
もちろん、彼らはいつでもコンテナをエクスポートして再パッケージ化できますが、それらは極端な手段です...
Dockerグループからユーザーを削除し、docker start
およびのsudoを作成できますdocker stop
。
クライアントがお金を投資する準備ができている場合は、Dockerエンタープライズ版を使用する必要があります。Docker EEには、UCP(Universal Control Plane)
UCPというツールが1つあります。UCPを使用すると、ロールとアクセス権を作成し、コンテナを変更/変更するユーザーを制限できます。
DDC(Docker Data Center)よりもUCPをテストしたい場合は、1か月の試用ライセンスが必要です。これにより、要件に応じて詳細を説明できます。
これが役立つことを願っています!
ありがとうございました!
ansibleスクリプトを使用して配信を行います。あらゆる種類の制限とチェックをansibleスクリプトに保持します。