2017-03-27 7 views
0

これは私のシナリオですS3マルチawsユーザーのハイブとスパーク

私はスパークでaws愛好家です。私はこの技術についてもっと理解するのが嫌です。

ケース1:私のsparkアプリケーションはEMRクラスタ上で動作し、sparkアプリケーション はs3テーブルのハイブから読み込み、s3のハイブテーブルに書き込みます。この場合、S3バケットは同じユーザーuseraに属していますので、設定ファイルにfs.s3.awsAccessKeyIdとfs.s3.awsSecretAccessKeyを追加しました。私の場合は、hdfs-site.xmlに追加しました。 useraはバケットにアクセスするための適切な権限を持っていたので、問題はありません。

ケース2:s3の2つのハイブテーブルから読んでいます。テーブル1とテーブル2。 table1はuser1に属し、table2はuser2に属します。

私はs3の設定ファイルに複数のawsAccessKeyIdを指定することはできません。 [s3aにはバケット固有のキーの概念がありますが、私はs3を使用していません。]

aws EMRでこれらのシナリオはどのようにサポートされていますか?

私はIAM、EC2インスタンスの役割とプロファイルの役割はここ

答えて

0

のApache Hadoopの2.8をサポートごとのバケット設定を適用できることを理解しています。 AWS EMRはそうではありません。これは、あなたがそれらを取り上げなければならないものです。

回避策として、秘密をURIに入れることができます(例: s3:// user:secret @ bucket、秘密に特殊文字をエンコードすることを覚えています。これを実行した後、URL、ログ、スタックトレースは機密データとみなし、共有しないようにする必要があります。

+0

ありがとうございました。あなたの解決策にいくつか問題があります。どのようにセキュリティホールではないのですか?また、特殊文字をエンコードする例を共有することもできます。 – JavaPlanet

+0

はい私は間違いなく、S3 URIに含まれている資格情報の追加についてセキュリティ上の懸念を抱いています。それは大きなセキュリティホールです。 – JavaPlanet

+0

私は人々がそれをやっているのを発見するのに驚いた。私はすべてのログから秘密を取り除くことができたほど頑張ったが、止めるのは難しい。 Hadoop 2.8は、これを実行している人々に対して、将来停止する可能性があることを警告します。これは、バケットごとの設定の直前です。エンコードに関して複数の資格情報を使用する唯一の方法でした。 –

1

あなたの問題に対する解決策はcross-account permissionsだと思います。したがって、user1の権限を定義して、user2のバケットにアクセスすることができます。 thisもご覧ください。

関連する問題