web-dev-qa-db-ja.com

Hadoopのセキュリティ、分離、強化

これは複数の部分からなる質問で、すべてメインの質問に戻ります。

Hadoopwikipedia )クラスター内のデータを保護する最善の方法

(現在のバージョン、バニラのメインブランチディストリビューション-他の人について聞くことはできますが)。多くの調査と調査の結果、私はひどいことは思いつきませんでした...

私のシナリオはサービスプロバイダーで、いくつかの大企業の顧客からの大量のデータをホストして処理します(マルチテナント)。これらの顧客は、Hadoopに直接アクセスするのではなく、SaaSアプリケーションを介してのみアクセスします。しかし、これらの顧客は、多くの場合、直接的な競合相手であり、しばしば非常に偏執狂的です他者に対するスパイ活動...)。

私の昔ながらのつまらない反応は、顧客ごとに個別の孤立したインスタンスをデプロイすることです。ただし、これは実用的ではなく、Hadoopの利点と機能を活用することもできません。
また、Hadoopのすべての大規模なユーザーにとって、これらの問題に対する適切な解決策はないとは信じられません...

特に、私はこれらの問題を見ています:

  • 各アプリケーションで使用中の特定のユーザー(顧客ごとのアプリケーションユーザー)へのアクセスの制限
  • 暗号化
  • 顧客間の分離、つまり、ある顧客が別の顧客を表示できないようにします。
  • 一般的な強化の推奨事項

私はいくつかの方向を考え出すことができましたが、これらが良い方向であるかどうか、またはより良い解決策があるかどうかを確認できませんでした。

  • サービスレベル認証
  • アプリケーション以外の誰もが直接アクセスできないようにするためのネットワーク/システム分離
  • アプリケーションユーザー(つまり、顧客)ごとのファイル/フォルダー権限。
    このアプローチで見つけた問題:
    • 権限はNameNodeでのみ適用されます。 DataNodeへの直接アクセスは引き続きアクセスを提供します。
    • 認証は、少なくともKerberosサポートを追加するまでは、少し "難しい"(その後、再実装を確認する必要があります...)
    • これは顧客間の十分な分離を提供しないように私には思えます。
  • HDFSフェデレーション/名前空間
    これにより、個別のサーバーと顧客ごとに割り当てられた帯域幅は言うまでもなく、特権の分離が向上する可能性があります(NameNodeの単一障害点を介して別のサーバーがDoSを試行するのを防ぐため)。しかし、私は実際に使われた使用法に関する実際の情報、またはそれが誤用に耐える方法を見つけていません。
    また、これはソフト認証の問題を解決しませんか(そうしますか?)、DataNodeブロックに直接アクセスします(しますか?)
  • データの暗号化については、HDFS暗号化(すべてのノード間で共有される単一の対称キー)、またはアプリケーションレベルの暗号化(およびキー(または、顧客ごとに1つ)など)を各タスクに配布する必要がありますNode)。
7
AviD

それは本当にあなたがあなたのデータを保護しようとしているwhoに依存します。

各ノードで eCryptfs を使用するHadoopクラスターをセットアップして、ノード間でデータを透過的に共有できるようにすると同時に、ディスクに書き込む前にすべてのデータを暗号化するようにしました。これにより、クラウド環境で仮想マシンの基盤となるディスクまたはリモートネットワークストレージの物理的な盗難に対してデータを保護する場合に、測定可能なレベルのプライバシーと保護が提供されます。

完全な開示:私は著者の1人であり、eCryptfsユーザースペースユーティリティの現在のメンテナーです

2
Dustin Kirkland