2016-06-02 7 views
4

は、私がドッキングウィンドウのイメージを持っていると言う、と私はいくつかのサーバー上でそれを展開しました。しかし、私は他のユーザーがこの画像にアクセスするのを望んでいません。ドッカー画像を暗号化する良い方法はありますか?ドッカー画像でドッカー画像やソースコードを暗号化するには?

+0

keywhiz https://square.github.io/keywhiz/または金庫https://www.hashicorp.com/blog/vault.html – user2915097

答えて

4

現実的には、ユーザーがドッカーデーモンを実行する権限を持っていれば、すべてのイメージにアクセスすることになります。これは、実行するために必要な昇格された権限ドッカーのためです。

が、これがある理由について詳細はdocker security guideからの抽出物を参照してください。ドッカーと

コンテナ(およびアプリケーション)を実行している

ドッカーデーモン攻撃面

はドッカーデーモンを実行している暗示します。このデーモンは、現在 root権限を必要とし、あなたはそれゆえ、いくつかの 重要な細部に注意する必要があります。

まず、信頼できるユーザーだけが Dockerデーモンを制御できるようにする必要があります。これはいくつかの強力なDocker 機能の直接の結果です。具体的には、Dockerは Dockerホストとゲストコンテナの間のディレクトリを共有できます。コンテナのアクセス権を制限することなく を行うことができます。これは、あなたが/ホストディレクトリは、あなたのホスト上の/ ディレクトリになりますコンテナを起動することができます ことを意味します。コンテナはあなたの ホストファイルシステムを何ら変更することなく変更することができます。これは、仮想化システムがファイルシステムのリソース共有を許可する方法に似ています( )。 は、ルートファイルシステム(またはルート ブロックデバイス)を仮想マシンと共有できないようにします。

これは、強力なセキュリティ意味合いがあります。たとえば、あなたが楽器 ドッカーは、APIを介して提供コンテナへのWebサーバから、あなた は に、パラメータのチェックと通常よりさらに注意しなければならない場合は、悪質なことを確認してくださいをユーザは細工されたパラメータを渡して、 Dockerに任意のコンテナを作成させることはできません。

このため、REST APIエンドポイント( にドッカーCLIで使用されるが、ドッカーデーモンと通信)がドッカー0.5.2で変更され、現在 ではなく、127.0.0.1にバインドされたTCPソケットのUNIXソケットを使用しています( あなたはVMの外で、 は、ローカルマシン上で直接ドッカーを実行するために起こる場合は、クロスサイトリクエストフォージェリ攻撃を受けやすい後者)。あなたは その後、 制御ソケットへのアクセスを制限するために、伝統的なUNIXの権限チェックを使用することができます。

に明示的に決定した場合は、HTTP経由でREST APIを公開することもできます。ただし、上記の セキュリティの影響を認識している場合は、信頼できるネットワークまたはVPNの にしか到達できないようにする必要があります。例えば、stunnelおよび クライアントSSL証明書で保護されています。 HTTPSと 証明書でそれらを保護することもできます。

このデーモンは、「docker load」のディスクからの イメージの読み込みや、「docker pull」のネットワーク からの読み込みなど、他の入力に対しても潜在的に脆弱です。これは、特に「プル」セキュリティのために、 コミュニティの改善の焦点になっています。これらは重複していますが、 は、「ドッカーロード」はバックアップのためのメカニズムであり、 の復元メカニズムであり、現在は イメージをロードするための安全なメカニズムとは考えられていないことに注意してください。 Docker 1.3.2以降、画像はLinux/Unixプラットフォーム上のchrootされた サブプロセスで抽出されました。これは、特権分離のためのより広範な取り組みの第一歩です。

結局、ドッカーデーモンがLinuxの機能の独自の(非常に限られた)スコープ、仮想 ネットワーク設定、ファイルシステムの管理と 権限、業務を委任よく監査済みのサブプロセス、各 を制限して実行することが予想され、つまり、おそらく、 のDockerエンジン自体がコンテナの内部で動作します。

最後に、サーバでDockerを実行する場合は、 をサーバにのみ実行し、Dockerによって制御される コンテナ内の他のすべてのサービスを移動することをお勧めします。もちろん、 のお気に入りの管理ツール(おそらく少なくともSSHサーバー)と、 の既存の監視/監督プロセス(NRPE、collectdなど)を維持することは大丈夫です。

+0

を参照してください。はい、そうです。それが意味です。私は私のプロジェクトをVMに展開し、物理ホストにインストールする必要があると思います。私は根本的な特権しか持たない。 – Daniel

関連する問題