私は、共有クラスタ上でsparkジョブを実行するときにセキュリティをどのように強化するかを試しています。私は、権限のないノードがクラスタに参加できないようにする方法(共有シークレットケルベロスの認証を設定する方法)と、誰がジョブをサブミットできるかを制限する方法を理解しています。しかし、私はスパーク・ジョブに必要なリソースへのアクセスを制限する方法を理解するのに苦労しています。Apache Sparkのセキュリティ保護
私が正しく理解していれば、ワーカーノードのすべてのスパークプロセスがスパークユーザーとして実行されます。おそらく、スパークユーザー自体はかなりの権限を持っているはずですが、火花の仕事にアクセスする必要がある場合はどうすればよいのでしょうか。 SQLサーバー。 The Spark security docsキーストアについて言及します。これは、ジョブを送信したユーザーが、spark-submitを使用してプリンシパルとキータブを通過できることを意味します。外部リソースとの認証に使用することができます。
セキュリティ文書では、一時ファイル(シャッフルファイルなど)が暗号化されていないことも記載されています。これは、sparkで処理されたデータがsparkクラスタの他のユーザーに漏洩する可能性があると仮定しなければならないということですか?もしそうなら、これを解決するために提案された回避策(このデータに暗号化されたパーティションを使用する)を使用することは可能ですか?私はスパークユーザー自身がこのデータを解読する能力を持っていなければならないと仮定しています。このユーザーとしてすべてのプログラムが稼動しています....
これはすべてかなり混乱しています。重要なことは**データ**を保護することです。つまり、Kerberos認証とACLベースの認可をHDFSファイルに有効にすることです。 RangerとSentryは実際には、特にHiveテーブルへのPig/Spark/Sqoopアクセスを許可したいときに、もっと複雑にします。 –
キーストアのことも混乱します。 Spark(またはSqoop)ジョブを起動する前にKerberosチケット*を取得し、そのジョブをHadoopキーストアに接続し、そこに格納されているもの(データベースパスワードなど)を動的に取得し、使用してから消去しますそれはディスク上にトレースを残すことなくメモリから取得します。 –
こんにちは、紛らわしい場合はお詫び申し上げます。私は、データの保護が重要であることを理解しています。私の指摘は、sparkがクラスタの他のユーザが読むことができるtmpディレクトリにファイルを書き込む可能性がある場合、これが幾分危険にさらされることです。 – d80tb7