AWS EC2 шифрование данных пользователя

Aug 18 2020

У нас есть вариант использования ввода, который включает пароль от пользователя, и передачи его в экземпляр 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?

Ответы

1 ChrisWilliams Aug 18 2020 at 00:39

Предлагаемый подход заключается в хранении любых секретов во внешнем источнике.

В AWS есть сервис для хранения секретов Secrets Manager . Используя эту службу, вы создадите секрет, содержащий секреты, к которым вашему экземпляру потребуется доступ в своих пользовательских данных. Затем дайте своему экземпляру роль IAM с привилегиями для получения секретного значения через интерфейс командной строки AWS .

В качестве альтернативы вы также можете использовать сервис AWS SSM Parameter Store , сохраняя секреты как тип SecureString . Это будет работать аналогично диспетчеру секретов, когда вы извлекаете секрет через интерфейс командной строки AWS, а затем используете его в своем скрипте.

Существуют также сторонние решения, такие как Hashicorp Vault, которые предоставляют аналогичные функции, если вы не хотите хранить свои секреты в решении AWS.