AWS EC2 шифрование данных пользователя
У нас есть вариант использования ввода, который включает пароль от пользователя, и передачи его в экземпляр EC2. В экземпляре Ec2 мы попадаем по URL -http://169.254.169.254/latest/user-data/ и получите данные пользователя и установите соответствующие пароли.
Проблема в том, что пользовательские данные видны с помощью инструмента AWS CLI:
aws ec2 describe-instance-attribute --instance-id --attribute userData --output text --query "UserData.Value" | base64 --decode
Это создает огромный риск для безопасности.
Как лучше всего отправлять конфиденциальные / секретные данные?
Я попытался создать пару ключей, которая создает закрытый ключ на локальном экземпляре и открытый ключ на EC2. Как правильно зашифровать / расшифровать с помощью PowerShell и получить обратно в EC2?
Ответы
Предлагаемый подход заключается в хранении любых секретов во внешнем источнике.
В AWS есть сервис для хранения секретов Secrets Manager . Используя эту службу, вы создадите секрет, содержащий секреты, к которым вашему экземпляру потребуется доступ в своих пользовательских данных. Затем дайте своему экземпляру роль IAM с привилегиями для получения секретного значения через интерфейс командной строки AWS .
В качестве альтернативы вы также можете использовать сервис AWS SSM Parameter Store , сохраняя секреты как тип SecureString . Это будет работать аналогично диспетчеру секретов, когда вы извлекаете секрет через интерфейс командной строки AWS, а затем используете его в своем скрипте.
Существуют также сторонние решения, такие как Hashicorp Vault, которые предоставляют аналогичные функции, если вы не хотите хранить свои секреты в решении AWS.