Каков наилучший способ хранения секретов API и ключей шифрования?

#security

#Безопасность

Вопрос:

Я использую переменные среды для хранения секретов API и ключей шифрования данных. Интересно, переменные среды являются наиболее безопасным способом хранения таких данных? Если хакер проникнет на мой сервер, сможет ли он получить доступ к переменным среды?

Ответ №1:

Это зависит от платформы, и, вероятно, это несколько самоуверенно, но в целом я думаю, что переменные среды — хороший способ хранения секретов во многих сценариях.

Если, например, ваше приложение уязвимо для внедрения SQL, включения локального файла или какой-либо другой уязвимости прикладного уровня, любой секрет, хранящийся в базе данных или в файле, может быть легко взломан. Такая же атака, вероятно, невозможна, если используются переменные среды, например, включение локального файла не может использоваться для извлечения переменных среды.

Кроме того, использование переменных среды помогает при проблемах с контролем версий, это помогает избежать проверки секретов в вашей виртуальной машине. Это может позволить вам лучше управлять секретами в разных средах, позволяя только соответствующим людям изучать эти секреты в процессе производства.

Однако в случае полной компрометации вашего сервера злоумышленник, конечно, может также проверить переменные среды. Но если ваш сервер скомпрометирован до такого уровня, вы все равно проиграли.

Вероятно, можно было бы привести примеры лучших способов хранения секретов, но они специфичны для среды и стека технологий, которые вы используете. Например, в Azure хранилище ключей иногда может быть лучше, в Amazon аналогичным средством является служба управления ключами (KMS) и т. Д.