У меня есть AS2 ASG на AWS, и я заинтересован в хранении оболочки script, которая использовалась для создания экземпляра любого экземпляра в ведре S3, и он загружался и запускался при создании экземпляра, но все это чувствует себя немного шатким даже хотя я использую IAM Instance Role, передавая через HTTPS и шифруя сам script, находясь в состоянии покоя в ведре <3 > с помощью KMS, используя S3 Server Side Encryption (потому что метод KMS выбрал ошибку "Неизвестно" ).
Настройка
-  Создан 
IAM Instance Role, который присваивается любому экземпляру в моей ASG после создания экземпляра, в результате мои AWS-кредиты запекаются в экземпляр какENVvars -  Загружено и зашифровано my 
Instance-Init.shscript до S3, что приводит к частной конечной точке, например: https://s3.amazonaws.com/super-secret-bucket/Instance-Init.sh 
  В поле User-Data
Я ввожу следующее в поле User Data при создании Launch Configuration Я хочу, чтобы моя ASG использовала:
#!/bin/bash
apt-get update
apt-get -y install python-pip
apt-get -y install awscli
cd /home/ubuntu
aws s3 cp s3://super-secret-bucket/Instance-Init.sh . --region us-east-1
chmod +x Instance-Init.sh
. Instance-Init.sh
shred -u -z -n 27 Instance-Init.sh
Вышеописанное делает следующее:
- Списки пакетов обновлений
 -  Устанавливает Python (требуется для запуска 
aws-cli) -  Устанавливает 
aws-cli -  Изменения в каталоге 
/home/ubuntu -  Использует 
aws-cliдля загрузки файлаInstance-Init.shизS3. Из-заIAM Role, назначенного моему экземпляру, мои AWS-кредиты автоматически обнаруживаютсяaws-cli.IAM Roleтакже предоставляет моему экземпляру разрешения, необходимые для дешифрования файла. - Делает его исполняемым
 - Запускает script
 -  Удаляет script после его завершения.
 
  Instance-Init.sh script
 script сам будет делать такие вещи, как установка ENV vars и docker run контейнеров, которые мне нужно развернуть на моем экземпляре. Своего рода:
#!/bin/bash
export MONGO_USER='MyMongoUserName'
export MONGO_PASS='Top-Secret-Dont-Tell-Anyone'
docker login -u <username> -p <password> -e <email>
docker run - e MONGO_USER=${MONGO_USER} -e MONGO_PASS=${MONGO_PASS} --name MyContainerName quay.io/myQuayNameSpace/MyAppName:latest
 
Очень удобно
Это создает очень удобный способ обновления сценариев User-Data без необходимости создавать новый Launch Config каждый раз, когда вам нужно внести незначительные изменения. И он отлично справляется с получением ENV vars из вашей кодовой базы и в узкое контролируемое пространство (сам Instance-Init.sh script).
Но все это чувствует себя немного неуверенно. Идея поместить мои master DB файлы в файл на S3 вызывает беспокойство, если не сказать больше.
Вопросы
- Является ли это обычной практикой или я вижу здесь плохую идею?
 - Является ли факт, что файл загружен и хранится (хотя и ненадолго) в новом экземпляре, является уязвимостью вообще?
 - Есть ли лучший способ для удаления файла более безопасным способом?
 -  Неважно, удаляется ли файл после его запуска? Учитывая, что секреты передаются в 
ENVvars, кажется почти излишним удалить файлInstance-Init.sh. -  Есть ли что-то, что мне не хватает в мои зарождающиеся дни?
 
Спасибо за любую помощь заранее.