【问题标题】:DynamoDB, can't save encrypted data, "not authorized to perform: kms:GenerateDataKey on resource"DynamoDB,无法保存加密数据,“无权执行:kms:GenerateDataKey on resource”
【发布时间】:2019-09-05 15:24:51
【问题描述】:

我正在尝试借助“Amazon DynamoDB Encryption Client for Java”将加密数据保存到 DynamoDB。 我还使用无服务器框架来部署我的应用程序(一些使用 DynamoDB 的 lamdba 函数)。 AWS Lamdba 函数是用 Kotlin 编写的。

我在iamRoleStatements 部分的serverless.yml 中有这个(在provider 部分下): - Effect: “Allow” Action: - “kms:GenerateDataKey” Resource: “*”

我认为应该足够了,但是当我尝试将加密数据保存到 DynamoDB 时出现此错误: com.amazonaws.services.kms.model.AWSKMSException: User: arn:aws:sts::120102300450:assumed-role/appname-username-eu-west-1-lambdaRole/appname-username-functionname is not authorized to perform: kms:GenerateDataKey on resource: arn:aws:kms:eu-west-1:120102300450:key/12d3f45c-6fff-0007-b123-5bfe5678e012 (Service: AWSKMS; Status Code: 400; Error Code: AccessDeniedException; Request ID: ...) (此处对字母数字 ID 进行了混淆处理,以免泄露真实数据)

我还尝试添加其他几个 KMS 权限,但没有帮助: - Effect: "Allow" Action: - "kms:GenerateDataKey" - "kms:GenerateDataKeyWithoutPlaintext" - "kms:CreateAlias" - "kms:CreateKey" - "kms:Decrypt" - "kms:Encrypt" - "kms:EnableKey" - "kms:UpdateAlias" Resource: "*"

因此,在这种情况下无法实现“Amazon DynamoDB Encryption Client for Java”的全部目的。

这里缺少什么?

【问题讨论】:

    标签: amazon-dynamodb serverless-framework aws-kms


    【解决方案1】:

    我找到了问题所在。我使用了默认的 KMS 密钥,并且必须使用自定义密钥。然后就成功了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-02-12
      • 2019-01-25
      • 2017-02-02
      • 1970-01-01
      • 2016-04-19
      • 1970-01-01
      • 1970-01-01
      • 2016-03-17
      相关资源
      最近更新 更多