如果 IAM 已经控制访问,KMS s3 加密在安全方面有什么好处?
What benefit is KMS s3 encryption in terms of security if IAM is already controlling access?
如果我们有 2 个私有 s3 存储桶,一个名为 SSE-KMS
:bucket-kms
,一个没有加密:bucket-no-kms
.
除了消费者需要额外的 KMS 权限之外,在安全方面有什么好处?在我看来,它正在提供额外的健全性检查,例如,如果有人不小心进行了 bucket-kms
public,或者您授予了对其他身份的访问权限,这些错误将通过还需要访问权限来防止KSM 密钥,而 bucket-no-kms
将被暴露。但这并不是真正的额外安全性,只是更难犯错误。
就安全优势而言,我能想到的唯一场景是,如果某人有可能以物理方式访问您的 s3 存储桶正在使用的特定硬件,他们就可以读取您的原始数据,这将使使用 SSE-..
的好案例,但我再次假设这种情况是 AWS 在其流程中防止的情况。
我还假设 S3 的硬件仅用于此目的,并且在删除该存储桶后,无法读取其他人写入特定 s3 密钥的内容,因此没有人会碰巧读取您在 EBS 卷中的数据通过更改等
我知道其他好处,例如在您的 KMS 密钥上启用 cloudtrail 日志以再次查看谁在读取您的数据、能够编写密钥策略等。但是除此之外,我还缺少其他任何安全好处吗我已经说过的使将 KMS 与 s3 一起使用本质上更安全的内容?从我的角度来看,我仍然可以制定组织 SCPs
或 IAM
权限边界,这可以实现这些相同的额外权限保护,类似于 SSE-KMS
给你的。
TLDR;
我真正想问的是,如果 IAM 会阻止黑客以某种方式获取我存储桶中的数据,我需要 KMS 做什么?
主要好处是您的数据是静态加密的。
何时使用它的决定归结为如果数据在 S3 中是敏感的(包括数据库备份),你应该真正加密它,存储的价格可以忽略不计,但如果它受到损害(无论是通过访问您的 AWS 控制台或 CLI)用户无法访问它。
KMS使用信封加密方式存储对象,过程可能有点复杂,但大前提如下:
- 当您上传对象时,S3 服务将联系您的 KMS CMK(客户主密钥)以生成数据加密密钥。此数据加密密钥将用于加密您的对象,然后在经过 CMK(提供给您)的 base 64 编码和加密后附加到您的 S3 对象元数据。
- 当您通过 S3 检索对象时,S3 服务将使用 CMK 来解密附加到您的 S3 对象的数据加密密钥。解密后,未加密的数据加密密钥用于解密对象,然后 return 它。
数据加密密钥在这里非常关键,这个过程(称为信封加密)实际上需要 2 个单独的加密密钥来检索对象。与关键策略结合使用时,这有助于减轻数据泄露,即使您遭到入侵也是如此。
如果我们有 2 个私有 s3 存储桶,一个名为 SSE-KMS
:bucket-kms
,一个没有加密:bucket-no-kms
.
除了消费者需要额外的 KMS 权限之外,在安全方面有什么好处?在我看来,它正在提供额外的健全性检查,例如,如果有人不小心进行了 bucket-kms
public,或者您授予了对其他身份的访问权限,这些错误将通过还需要访问权限来防止KSM 密钥,而 bucket-no-kms
将被暴露。但这并不是真正的额外安全性,只是更难犯错误。
就安全优势而言,我能想到的唯一场景是,如果某人有可能以物理方式访问您的 s3 存储桶正在使用的特定硬件,他们就可以读取您的原始数据,这将使使用 SSE-..
的好案例,但我再次假设这种情况是 AWS 在其流程中防止的情况。
我还假设 S3 的硬件仅用于此目的,并且在删除该存储桶后,无法读取其他人写入特定 s3 密钥的内容,因此没有人会碰巧读取您在 EBS 卷中的数据通过更改等
我知道其他好处,例如在您的 KMS 密钥上启用 cloudtrail 日志以再次查看谁在读取您的数据、能够编写密钥策略等。但是除此之外,我还缺少其他任何安全好处吗我已经说过的使将 KMS 与 s3 一起使用本质上更安全的内容?从我的角度来看,我仍然可以制定组织 SCPs
或 IAM
权限边界,这可以实现这些相同的额外权限保护,类似于 SSE-KMS
给你的。
TLDR;
我真正想问的是,如果 IAM 会阻止黑客以某种方式获取我存储桶中的数据,我需要 KMS 做什么?
主要好处是您的数据是静态加密的。
何时使用它的决定归结为如果数据在 S3 中是敏感的(包括数据库备份),你应该真正加密它,存储的价格可以忽略不计,但如果它受到损害(无论是通过访问您的 AWS 控制台或 CLI)用户无法访问它。
KMS使用信封加密方式存储对象,过程可能有点复杂,但大前提如下:
- 当您上传对象时,S3 服务将联系您的 KMS CMK(客户主密钥)以生成数据加密密钥。此数据加密密钥将用于加密您的对象,然后在经过 CMK(提供给您)的 base 64 编码和加密后附加到您的 S3 对象元数据。
- 当您通过 S3 检索对象时,S3 服务将使用 CMK 来解密附加到您的 S3 对象的数据加密密钥。解密后,未加密的数据加密密钥用于解密对象,然后 return 它。
数据加密密钥在这里非常关键,这个过程(称为信封加密)实际上需要 2 个单独的加密密钥来检索对象。与关键策略结合使用时,这有助于减轻数据泄露,即使您遭到入侵也是如此。