安全性—在hadoop环境中使用多个aws密钥

3htmauhk  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(279)

在hadoop环境中使用多个aws密钥的解决方法是什么?我的hadoop作业将需要访问两个不同的s3存储桶(两个不同的键)。尝试了“凭据”提供程序,但看起来它是相当有限的。它以小写形式存储所有键,因此我不能对一个作业使用“s3a”,对另一个作业使用“s3n”。例如:对于s3a,它查找:

fs.s3a.access.key
fs.s3a.secret.key

对于s3n:

fs.s3n.awsAccessKeyId
fs.s3n.awsSecretAccessKey

但是如果我用“fs.s3n.awsaccesskeyid”创建提供者,它将存储为“fs.s3n.awsaccesskeyid”,结果在运行时它无法加载预期的密钥。
作为解决方法,我尝试生成两个不同的凭据提供程序并传递为:

--Dhadoop.security.credential.provider.path=key1,key2

但这两个密钥都有fs.s3a.access.key和fs.s3a.secrety.key对,因此无法协同工作。
我不想通过访问和密钥使用-d选项,因为它是可见的。有没有更好的方法来处理这种情况?

dgtucam1

dgtucam11#

如果升级到hadoop2.8,可以使用每个bucket的配置来解决这个问题。fs.s3a.bucket.$bucketname中的所有内容都被修补到该bucket的fs示例的配置中,覆盖任何其他配置 fs.s3a.bucket.engineering.access.key=AAID.. fs.s3a.bucket.logs.access.key=AB14... 我们经常用它来和不同地区的bucket对话,加密等等。到目前为止效果不错。尽管我会这么说。
特殊例外:如果您加密jcecks文件中的凭证机密。这些文件涵盖了这一点。

相关问题