私は昔ながらの管理者について話しているのではなく、システムを管理し、更新を制御する方法を知っています。
問題は、コンテナ、構築済みのVM、およびコンセプトに「信頼」と「更新」がないために作成される信じられないほどの混乱です。
Hadoopを見てみましょう。 どうやら、 Hadoopをゼロから構築する方法を誰も知らないようです。 それは、膨大な依存関係、必要なバージョン、ビルドユーティリティに過ぎません。
「すばらしい」ユーティリティはどれも、従来のmakeコマンドによって作成されません。 各ユーティリティには独自の非移植性があり、ビルドする「今日の方法」と互換性がありません。
そして、 誰もゼロから物を収集する方法を知らないので、 誰もがランダムなウェブサイトからバイナリをダウンロードするだけで 、多くの場合、デジタル署名もチェックしません 。
ウイルスとNSAの楽園。 セキュリティの脆弱性を悪用する必要はもうありません 。 「アプリケーション」、「仮想マシン」または「Dockerのイメージ」を作成し、この感染したコードをネットワークにダウンロードできるようにします。
典型的な例は、Hadoopのdebian wikiページです 。 基本的に、人々はDebianのためにHadoopをゼロから構築する試みを放棄し、2010年に高品質のパッケージを提供しました。
Apache Bigtopをビルドするには、どうやらpuppet3を最初にインストールする必要があります。 インターネットから魔法のデータをダウンロードし、sudoパペットを実行してNSAからのバックドアを有効にしようとします(たとえば、Javaをインストールするのはあまりにも愚かだと考えているため、古いJDKをダウンロードしてインストールします)。 それでは、gradleが200行の無駄なエラーを吐き出さないことを願っています。
私は冗談ではありません、彼は次のようなコマンドを実行しようとします:
/bin/bash -c "wget http://www.scala-lang.org/files/archive/scala-2.10.3.deb ; dpkg -x ./scala-2.10.3.deb /"
パッケージを正しい方法でインストールするのではなく、ルートディレクトリに展開するだけであることに注意してください。 起動時に署名やSSL証明書も検証されません(ソース: Bigtop Puppetマニフェスト )
アセンブリが問題なくても、Mavenからダウンロードした署名されていないバイナリを使用します。
今日、純粋なモジュラーアーキテクチャの代わりに、至る所に連動する依存関係の巨大な山があります。 前回Hadoopのクラスパスを見たとき、すでに100を超えるjarファイルで構成されていました。 ApacheのHBaseGiraphFlumeCrunchPigHiveMahoutSolrSparkElasticsearchなどを使用しなくても、現在は150個あるはずです。
スタックとは、「実際に何を使用しているかわからない」という意味の新しい用語です。
Maven 、 ivy 、およびsbtは、署名されていないコードをダウンロードしてコンピューターで実行するためのユーティリティです。
コンテナの場合、この混乱はさらに悪化します。
コンテナのセキュリティ更新を試みたことがありますか?
基本的に、Dockerのアプローチは、未署名のバイナリをダウンロードして起動し、会社のネットワークのバックドアが含まれていないことを期待することです。
90年代のWindows用のシェアウェアを思い出します。
Askツールバーを含む最初のDockerイメージはいつ表示されますか? Dockerを介して拡散した最初のインターネットワーム?
ここ何年もの間、Linuxディストリビューションは、信頼できるWebからコンパイルされた署名付きパッケージを使用して、信頼性の高いオペレーティングシステムを提供しようとしています。 再現可能なビルドで動作するものもあります。
そして、すべてが防風になりました。 「アプリケーション」は狂気になり、セキュリティや更新方法を考えずにダウンロードして実行します。 「私たちは一度しか生きていないから」
更新 :Dockerの前に開始されたことを修正しました:「Dockerは新しい 'カール| sudo bash '。 " これは事実ですが、信頼できないソフトウェアを「データセンター」でダウンロードして実行することが特に一般的になっています。 そして、これは非常に悪いです。
以前は、管理者はセキュリティの脆弱性を防ぐためにあらゆる努力をしました。 そして今、彼らは自分自身を「開発者」と呼び、これらの穴を自分たちのネットワークに注入します!