У меня есть архитектура обработки заданий на основе AWS, которая требует запросов экземпляров EC2 S3 и SQS. Чтобы запускать экземпляры для доступа к API, учетные данные отправляются как пользовательские данные (-f) в форме оболочки с кодировкой base64 script. Например:
$ cat ec2.sh
...
export AWS_ACCOUNT_NUMBER='1111-1111-1111'
export AWS_ACCESS_KEY_ID='0x0x0x0x0x0x0x0x0x0'
...
$ zip -P 'secret-password' ec2.sh
$ openssl enc -base64 -in ec2.zip
Запущено множество экземпляров...
$ ec2run ami-a83fabc0 -n 20 -f ec2.zip
Каждый экземпляр декодирует и расшифровывает ec2.zip с помощью "секретного пароля", который жестко закодирован в init script. Хотя он работает, у меня есть два вопроса с моим подходом.
- 'zip -P' не очень безопасен
- Пароль жестко закодирован в экземпляре (он всегда "секретный пароль" )
Метод очень похож на описанный здесь
Есть ли более элегантный или приемлемый подход? Использование gpg для шифрования учетных данных и хранения закрытого ключа в экземпляре для дешифрования - это подход, который я рассматриваю сейчас, но я не знаю никаких оговорок. Могу ли я напрямую использовать клавиши AWS? Не хватает ли какой-либо сверх очевидной части API?