kms:aws 中的加密是什么意思?

问题描述 投票:0回答:1

我认为kms:encrypt是加密所需的权限。但这不起作用

所以我在 s3 上进行了测试。结果如下

  • S3 使用 kms 加密

  • 我用IAM用户和lambda(角色)测试了它来上传文件

因此,用户和 lambda 都需要 kms:GenerateDataKey 权限。

我以为我需要 kms:encrypt 权限,但为什么需要GenerateKey 权限?

测试许可

它不起作用 - KMS 密钥策略

{
            ...

            "Action": [
                "kms:Encrypt"
            ],
            "Resource": "*"
        },

它有效 - KMS 密钥策略

{
            ...

            "Action": [
                "kms:GenerateDataKey"
            ],
            "Resource": "*"
        },

Lambda 测试代码

response = client.put_object(
    Body='filetoupload',
    Bucket='kms-key-test',
    Key=file_name,
)

ps。我在 aws 文档中看到,GenerateDatakey 用于大于 4kb 的文件。所以,我测试了不大于 4kb 的文件

amazon-s3 amazon-iam amazon-kms
1个回答
0
投票

您需要

kms:GenerateDataKey
权限,因为 S3 使用 信封加密。来自AWS S3文档

当您通过 AWS KMS (SSE-KMS) 使用服务器端加密时,您可以使用默认的 AWS 托管密钥,也可以指定您已创建的客户托管密钥。 AWS KMS 支持信封加密。 S3 使用 AWS KMS 功能进行信封加密以进一步保护您的数据。信封加密是使用数据密钥加密明文数据,然后使用 KMS 密钥加密该数据密钥的做法。

© www.soinside.com 2019 - 2024. All rights reserved.