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?


person user1035864    schedule 17.08.2020    source источник


Ответы (1)


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

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

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

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

person Chris Williams    schedule 17.08.2020