Вы можете сохранить учетные данные на машине (или передать, использовать, а затем удалить их).
Вы можете передавать учетные данные по безопасному каналу (например, используя scp
с неинтерактивной аутентификацией, например, с парой ключей), так что вам не нужно будет выполнять какое-либо пользовательское шифрование (только убедитесь, что разрешения правильно установлены на 0400
в файле ключа всегда, например, установите разрешения для мастер-файлов и используйте scp -p
)
Если вышеупомянутое не отвечает на ваш вопрос, пожалуйста, предоставьте более подробную информацию повторно. каковы ваши настройки и чего вы пытаетесь достичь. Должны ли действия EC2 быть инициированы на нескольких узлах из центрального местоположения? Доступен ли SSH между несколькими узлами и центральным местоположением? И т.д.
EDIT
Рассматривали ли вы параметризацию вашего AMI , требуя, чтобы те, кто создает экземпляр вашего AMI, сначала заполнили пользовательские данные (ec2-run-instances -f user-data-file
) своими ключами AWS? Затем ваш AMI может динамически извлекать эти параметры для каждого экземпляра из http://169.254.169.254/1.0/user-data
.
UPDATE
ОК, здесь идет сравнение различных подходов, обсужденных до сих пор с точки зрения безопасности:
- Безопасность данных при сохранении в AMI
user-data
в незашифрованном виде
- низкий
- данные открытого текста доступны для любого пользователя, которому удается войти в систему AMI и который имеет доступ к
telnet
, curl
, wget
и т. Д. (Может получить доступ к тексту http://169.254.169.254/1.0/user-data
)
- вы уязвимы для атак через прокси-сервер (например, злоумышленник спрашивает Apache, который может или не может работать на AMI, чтобы получить и переслать открытый текст
http://169.254.169.254/1.0/user-data
)
- Безопасность данных, когда хранится в AMI
user-data
и шифруется (или расшифровывается) с помощью легкодоступного ключа
- низкий
- легкодоступный ключ (пароль) может включать в себя:
- ключ, жестко запрограммированный в скрипте внутри ABI (где ABI может быть получен злоумышленником)
- ключ жестко запрограммирован в скрипте на самом AMI, где скрипт может быть прочитан любым пользователем, которому удается войти в AMI
- любая другая легко доступная информация, такая как открытые ключи и т. Д.
- любой закрытый ключ (его открытый ключ можно легко получить)
- при наличии легко доступного ключа (пароля) применяются те же проблемы, что указаны в пункте 1, а именно:
- расшифрованные данные доступны для любого пользователя, которому удается войти в систему AMI и который имеет доступ к
telnet
, curl
, wget
и т. Д. (Может получить доступ к тексту http://169.254.169.254/1.0/user-data
)
- вы уязвимы для атак через прокси-сервер (например, злоумышленник спрашивает Apache, который может или не может работать на AMI, чтобы получить и переслать зашифрованный
http://169.254.169.254/1.0/user-data
, внешне расшифрованный с помощью легко получаемого ключа)
- Безопасность данных, когда хранится в AMI
user-data
и шифруется с помощью нелегко получаемого ключа
- средний
- зашифрованные данные доступны для любого пользователя, которому удается войти в систему AMI и который имеет доступ к
telnet
, curl
, wget
и т. Д. (Может получить доступ к зашифрованному http://169.254.169.254/1.0/user-data
)
- попытка расшифровать зашифрованные данные может быть предпринята с помощью атаки методом грубой силы
- Безопасность данных, когда хранится в AMI, в защищенном месте (нет необходимости в шифровании)
- выше
- данные доступны только одному пользователю, пользователю, которому необходимы данные для работы
- например. файл принадлежит пользователю: пользователь с маской 0600 или 0400
- злоумышленник должен иметь возможность выдавать себя за конкретного пользователя, чтобы получить доступ к данным
- дополнительные уровни безопасности, такие как отказ в прямом входе пользователя в систему (необходимость проходить через
root
для интерактивного олицетворения), повышают безопасность
Таким образом, любой метод с использованием AMI user-data
не является наиболее безопасным, поскольку получение доступа к любому пользователю на машине (самая слабая точка) ставит под угрозу данные.
Это может быть смягчено, если учетные данные S3 требовались только в течение ограниченного периода времени (т. Е. Только во время процесса развертывания), , если AWS позволил вам перезаписать или удалить содержимое user-data
, когда сделано с этим (но это, кажется, не имеет место.) Альтернативой было бы создание временных учетных данных S3 для продолжительности процесса развертывания, если это возможно (скомпрометировать эти учетные данные, начиная с user-data
, после того, как процесс развертывания завершено и учетные данные были аннулированы с помощью AWS, больше не представляет угрозы безопасности.)
Если вышеприведенное не применимо (например, учетные данные S3, необходимые для развернутых узлов на неопределенный срок) или невозможно (например, невозможно выдать временные учетные данные S3 только для развертывания), тогда лучшим способом остается прикусить пулю и scp
учетные данные различные узлы, возможно, параллельно, с правильным владельцем и правами доступа.