Невозможно поместить данные / объект в корзину S3 с помощью Glue Job, когда включено шифрование KMS

У меня есть задание Glue, которое извлекает данные из одной корзины s3 и передает / помещает их в другую. Моя работа работает правильно, если я отключаю шифрование KMS, но не работаю с включенным шифрованием KMS.

Ошибка: произошла ошибка при вызове o79.pyWriteDynamicFrame. Доступ запрещен (Сервис: Amazon S3; Код состояния: 403; Код ошибки: AccessDenied)

Я также добавил эту политику

    {
          "Effect": "Allow",
          "Action": [
            "kms:Decrypt"
          ],
          "Resource": [
            "arn:aws:kms:region:account-name:key/kms-encryptionkey"
          ]
    }

Предложите, как я могу передавать данные между корзинами s3, используя Glue с включенным шифрованием KMS.

2 ответа

Решение

Сначала необходимо проверить, разрешает ли политика ключей KMS доступ к роли IAM, используемой Glue, поскольку недостаточно только разрешения IAM. Вы также можете включить роль IAM в ключевую политику, и это будет одним из подходов.

Если вы хотите дать разрешение KMS через политику IAM, добавьте следующие действия API:

1> Чтобы положить объект и зашифровать его, добавьте "kms:GenerateDataKey" с идентификатором ключа в качестве ресурса.

2> Для GetObject (и расшифровать его), "kms:Decrypt" (что у вас есть)

Включение шифрования в задании Glue означает, что вы хотите писать объекты с использованием ключа KMS, поэтому вам необходимо разрешить действие "kms:Encrypt".

Действие "kms:Decrypt" необходимо, если только ваши входные данные зашифрованы SSE с помощью KMS:

Если вы планируете получить доступ к источникам и целям Amazon S3, которые зашифрованы с помощью SSE-KMS, то прикрепите политику, которая позволяет сканерам AWS Glue, заданиям и конечным точкам разработки расшифровывать данные.

Другие вопросы по тегам