DynamoDB, не может сохранять зашифрованные данные, «не разрешено выполнять: kms: GenerateDataKey на ресурсе» - PullRequest
0 голосов
/ 15 апреля 2019

Я пытаюсь сохранить зашифрованные данные в DynamoDB с помощью «Amazon DynamoDB Encryption Client для Java». Я также использую Serverless Framework для развертывания моего приложения (некоторые функции Lamdba используют DynamoDB). Функции AWS Lamdba написаны на Kotlin.

У меня есть это в моем serverless.yml в разделе iamRoleStatements (в разделе 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: ...) (буквенно-цифровые идентификаторы здесь скрыты, чтобы не раскрывать реальные данные)

Я также попытался добавить несколько других разрешений KMS, но это не помогло: - Effect: "Allow" Action: - "kms:GenerateDataKey" - "kms:GenerateDataKeyWithoutPlaintext" - "kms:CreateAlias" - "kms:CreateKey" - "kms:Decrypt" - "kms:Encrypt" - "kms:EnableKey" - "kms:UpdateAlias" Resource: "*"

Таким образом, в этом случае невозможно достичь цели «клиента шифрования Amazon DynamoDB для Java».

Чего здесь не хватает?

1 Ответ

0 голосов
/ 16 апреля 2019

Я нашел в чем проблема.Я использовал ключ KMS по умолчанию, и мне пришлось использовать пользовательский ключ.Тогда это сработало.

...