Корзина S3 использует приложения NodeJS для загрузки, скачивания и удаления файлов. Шифрование - очень важная часть при загрузке файлов. Шифрование конвертов AWS с использованием ключа KMS обеспечивает безопасность данных. Эта статья в основном посвящена загрузке файлов с зашифрованным содержимым в корзину S3.

Шаги по отправке и скачиванию зашифрованных файлов в AWS S3:

  1. Создание корзины и папки S3 с помощью консоли AWS. Создание папки внутри корзины и предоставление политики доступа. (Создание пользователя, группы пользователей и идентификатора пула пользователей не рассматривается, потому что это другая тема и будет рассмотрена в другой статье)
  2. Создание ключей KMS с помощью консоли AWS. Ключи KMS очень важны и необходимы для шифрования содержимого файлов.
  3. Выгрузка и загрузка зашифрованных файлов с использованием ключей KMS в NodeJS.

Консоль AWS

  1. Создание корзины и папки S3 с помощью консоли AWS: создайте логин в консоли AWS. Зайдите в сервисы AWS, выберите S3 в консоли AWS.

Создайте новую корзину S3 и выберите регион.

Заблокировать публичный доступ

Создайте папку и выберите тип шифрования, в этом примере мы выбрали AES-256.

2. Создание ключей KMS с помощью консоли AWS:

Теперь создайте пользователя с помощью Пользовательской консоли AWS IM. Выберите программный доступ, чтобы сгенерировать ключи доступа. После создания пользователя и настройки пула пользователей. Сгенерируйте ключи KMS с помощью консоли AWS KMS.

  • Для региона выберите соответствующий регион AWS. Не используйте переключатель региона на панели навигации (в правом верхнем углу).
  • Выберите, чтобы сгенерировать CMK ключ (главные ключи клиента). Введите псевдоним для CMK. Псевдоним не может начинаться с AWS. Псевдонимы, начинающиеся с AWS, зарезервированы Amazon Web Services для представления управляемых AWS CMK в вашей учетной записи.
  • Псевдоним - это отображаемое имя, которое можно использовать для идентификации CMK. Рекомендуемая настройка - выбрать псевдоним, который указывает тип данных, которые вы планируете защищать, или приложение, которое вы планируете использовать с CMK. Выберите описание, хотя это необязательно, но хорошо, если есть функции. Описание должно содержать информацию о типе шифрования и приложении, для которого используется этот ключ.

  • Нажмите «Далее» и введите ключ тега и необязательное значение тега. Чтобы добавить в CMK несколько тегов, выберите Добавить тег. Пометка всегда необязательна. Выберите пользователей IAM и роли, которые могут администрировать CMK.
  • По умолчанию учетная запись AWS (пользователь root) имеет полные разрешения по умолчанию. В результате любые пользователи и роли IAM, чьи присоединенные политики разрешают соответствующие разрешения, также могут администрировать CMK. Чтобы пользователи и роли IAM, выбранные вами на предыдущем шаге, не могли удалить этот CMK, снимите флажок в нижней части страницы для Разрешить администраторам ключей удалять этот ключ.
  • Теперь следующим шагом является выбор пользователей IAM и ролей, которые могут использовать CMK для шифрования и дешифрования данных с помощью AWS KMS API.
  • Учетная запись AWS (пользователь root) по умолчанию имеет полные разрешения. В результате любые пользователи и роли IAM, чьи присоединенные политики разрешают соответствующие разрешения, также могут использовать CMK.
  • Это необязательный шаг, на котором вы можете использовать элементы управления внизу страницы, чтобы указать другие учетные записи AWS, которые могут использовать этот CMK для шифрования и дешифрования данных. Для этого выберите Добавить внешнюю учетную запись, а затем введите предполагаемый идентификатор учетной записи AWS. При необходимости повторите, чтобы добавить более одной внешней учетной записи.
  • Администраторы внешних учетных записей также должны разрешить доступ к CMK, создав политики IAM для своих пользователей. Дополнительные сведения см. В разделе Разрешение внешним учетным записям AWS доступ к CMK. Теперь выберите Далее и завершите этап создания ключа.

Наша корзина для S3 готова. Мы также создали пользователей, идентификатор пула пользователей и ключи CMK для шифрования конвертов.

3. Загрузка и скачивание зашифрованных файлов с помощью ключей KMS в Node.

  • Установите модуль зависимостей AWS SDK и шифрования файлов.
#Install aws sdk and file encryptor module
npm install aws-sdk
npm install file-encryptor
npm install file-system --save
  • AWS SDK и модуль шифрования файлов будут доступны для NodeJS
//to encrypt files
var encryptor = require('file-encryptor');
//to read the file
var fs = require('fs');
//to upload, delete and download from s3 bucket
var AWS = require(‘aws-sdk/dist/aws-sdk-react-native’);
  • Когда зависимости готовы, создайте aws-sdk.config.json в исходной папке приложения узла. Предупреждение: не создавайте aws-sdk.config.json в корневом каталоге, потому что после того, как вы запустите команду docker, докер не будет включать файл конфигурации корневого каталога.

  • В этой конфигурации мы сохраняем только данные о регионе. Остальные ключи передаются из командной строки или файла dot-env.
  • Теперь создайте файл encryption.js в утилитах и ​​используйте следующий код для шифрования и дешифрования. Этот файл зашифрует и расшифрует содержимое корзины S3 перед загрузкой и скачиванием.
  • Создайте файл upload.js, который отвечает за загрузку файла в корзину S3. Этот файл будет использовать указанный выше файл encryption.js для шифрования и дешифрования содержимого.

В строке 2 мы загружаем AWS SDK и проверяем регион. Строка 16 export.putObject вызывает файл encryption.j, шифрует данные и загружает их в корзину S3.

Затем напишите последнюю функцию для загрузки файла в корзину S3 uploadFilesins3BucketHandler. Эта функция использует узел fs module для чтения файла. См. Блок кода ниже.

Далее мы загрузим файл. Для загрузки сначала нам нужно расшифровать, используя ту же настройку шифрования.

Удалить файл очень просто, просто передайте информацию о корзине и файле.

Вывод. Мы научились создавать корзины и папки S3 с помощью консоли S3, создания ключа KMS или наших собственных ключей CMK. Мы также увидели, как зашифровать данные файла и загрузить их в корзину S3. Ниже приведены полезные ссылки и документация.

Использованная литература:

Https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#master_keys

Https://docs.aws.amazon.com/kms/latest/developerguide/key-policy-modifying.html#key-policy-modifying-external-accounts