Я обнаружил, что AWS RDS позволяет шифровать ресурсы БД с помощью AWS KMS. Поскольку это делается внутри инфраструктуры AWS, ключ шифрования можно легко повернуть автоматически. Это круто, но это только шифрование в покое.
Я бы также хотел зашифровать некоторые конкретные столбцы в базе данных. Например SSN. Я хотел бы хранить их в зашифрованном виде и расшифровать их для отображения в моем приложении. Более того, я хотел бы иметь индивидуальный ключ для каждого пользователя.
Основная проблема, которую я заметил, - это поворот ключа. Поскольку я думаю повернуть ключ для одного пользователя, я хотел бы сделать это в своем приложении:
- получить текущий ключ шифрования от KMS
- расшифровать все данные из RDSзашифрованный с помощью текущего ключа
- сгенерировать новый ключ шифрования
- снова зашифровать все и сохранить данные в RDS
- сохранить новый ключ в KMS
Основная проблема здесь состоит в том, чтобы держать все в «транзакции» - «фиксировать», если все в порядке, и «откатывать» все, если что-то пошло не так.
Интересно, вращаются ли такие ключи дляШифрование на уровне столбцов может быть выполнено внутри инфраструктуры AWS автоматически. У вас есть идеи по этому поводу? Может быть, вы знаете какой-нибудь другой, лучший подход для такой ситуации?