当前位置: 首页 > 知识库问答 >
问题:

aws s3 bucket密钥已启用

单于奇略
2023-03-14

S3最近宣布了“bucket_key_enabled”选项,以缓存用于加密bucket内容的kms密钥,从而减少对kms服务器的调用次数。

    null

考虑到所有这些,在对象级别重写kms键并仍然设置这个“bucket_key_enabled”有什么意义?

例如:

bucket/       -> kms1 & bucket_key_enabled
bucket/prefix1 -> kms2 & bucket_key_enabled

s3真的将对象键缓存到kms-key映射吗?

bucket/user1 
bucket/user2 
bucket/user1/obj1 with kms-user-1
bucket/user1/obj2 with kms-user-1
bucket/user1/obj3 with kms-user-1


bucket/user2/obj1 with kms-user-2
bucket/user2/obj2 with kms-user-2
bucket/user2/obj3 with kms-user-2
bucket/user1 - kms-user-1
bucket/user2 - kms-user-2

共有1个答案

姬乐池
2023-03-14

最后,我将sdk升级到最新版本,并将WithBucketKeyEnabled(true)传递给putObject API调用。

我能够通过cloud trail证明,无论在bucket级别或“each”对象级别设置加密和bucketKeyEnabled,对kms服务器的调用数量都是相同的。

kms-key和bucketkeyenabled=true在bucket级别。putObject()调用时不传递加密选项

对GenerateDataKey()=10的调用

对Decrypt()=60的调用

s3 bucket中没有加密设置。对于每个putObject()调用,我都传递kms-key和bucketkeyenabled=true。

PutObjectRequest(bucketName, key, inputStream, objectMetadata)
.withSSEAwsKeyManagementParams(SSEAwsKeyManagementParams(keyArn))
.withBucketKeyEnabled<PutObjectRequest>(true)
PutObjectRequest(bucketName, key, inputStream, objectMetadata)
.withSSEAwsKeyManagementParams(SSEAwsKeyManagementParams(keyArn))

对Decrypt()=10002的调用

因此,我可以得出结论,BucketKeyEnabled可以工作,无论您是在bucket级别还是对象级别设置。但是,我不知道它是如何在内部为这两种访问模式进行优化

 类似资料:
  • 我有一个活动A,在那里我通过意图启动另一个活动。但我的目标是将密钥传递给活动1,而不是在活动2处处理。从onkeydown或onkeyup返回false没有用。我如何实现这一点? 我的activity2如下所示,其中我不处理键,而是重新调整false。 尝试只返回false,而不是onKey的超级调用。。方法和没有用。有可能做到这一点吗?

  • 我创建了两个GitHub帐户。一个给我的工作用户,一个给我自己。我需要赶上一些工作,因此将我的工作存储库克隆到我的个人电脑上。为了在不输入我的用户名和密码的情况下完成简单的“git推源主”提交,我只是想将我家用电脑上的公钥添加到工作存储库中。但是Github给出了这个错误: 谷歌了一会儿后,我看到了这个链接,上面写着“要解决问题,请从另一个帐户或存储库中删除密钥并将其添加到您的帐户”。当然,还有一

  • 我在想办法做这样的事。我不知道怎么称呼它,所以我不知道它是否存在或者如何找到它。欢迎使用一些关键字:) 和混合==混合器(var_2,fix_2); 所以为了继续,我需要从2个变量中生成随机数据。1是用户的变量,1是我提供的。 第一次,我用这两个变量和一个函数生成数据。 然后,如果用户数据改变,用另一个函数,我用第一个结果和新的用户数据计算新的供应数据。如果我再次使用计算数据和新用户数据,我必须获

  • 我用过这个命令 生成密钥库。它工作正常,但从我读到的内容来看,这个命令还应该提示您输入密钥密码(而不是存储密码)?我从来没有收到过这样的提示。我能跑 查看密钥库的内容。钥匙似乎就在那里。。。正确的别名在那里。在哪里获取/设置特定别名的密码? 我有一个key.properties在Android目录 在build.gradle我有: 当我试图生成一个发布版本时,我得到了 我想它可能与keyPassw

  • 密钥用于绑定虚拟机和裸金属,提高服务器登录安全性。 密钥是根据RSA或DSA加密算法生成的一组密钥对,由公钥和私钥组成。其中公钥文件用于新建密钥,私钥文件需要由用户妥善保管,用于登录绑定密钥的虚拟机或裸金属。 密钥文件使用方法 当用户需要使用密钥登录虚拟机时,需要先在密钥列表使用公钥内容创建密钥。 将密钥绑定到虚拟机或裸金属上。 用户通过私钥文件远程登录虚拟机或裸金属。或在云管平台上通过私钥内容获

  • 问题内容: 我正在编写一个用于传输文件的小型应用程序,或多或少地将其作为一种学习更多编程加密基础的方法。这个想法是生成一个RSA密钥对,交换公共密钥,并发送AES iv和密钥以进一步解密。我想用接收者的RSA公钥加密AES密钥,如下所示: 然后,我将密钥值写给接收器,并按如下方式解密: 在控制台的另一端,我将其作为输出: 此外,如果我创建一个大小为16的字节数组,并将cipher.doFinal(