Мне было интересно узнать об уровне безопасности секретов Docker, поскольку они считаются безопасными. Когда я предоставляю службе доступ к секрету, как и ожидалось, я могу наблюдать tempfs, смонтированный по пути контейнера ( /var/lib/docker/containers/<container ID>/mounts/secrets
) на узле, где размещена задача службы. Однако мне удалось выполнить cat для файла внутри этого пути и увидеть содержимое секрета.
В тот момент я задался вопросом, что делает секреты более безопасными, чем конфигурации. Насколько мне известно, тот факт, что они хранятся на RAM-дисках, является ключевым отличием между ними и конфигурациями. И конфигурации, и секреты зашифрованы внутри raft, единственное отличие в том, что конфигурации хранятся в файлах на дисках, когда монтируются в контейнеры, в отличие от секретов, которые находятся на RAM-дисках. Но если я могу просматривать содержимое секретов, имеет ли это значение?
решение1
К сожалению,быть в безопасностине простой термин. Я бы предпочел поговорить ооценка рискаипринятие риска. Все дело в ответах на вопросы: насколько вы параноидальны; какое решение вы считаете безопасным.
Согласно документации,у нас есть:
Когда вы добавляете секрет в swarm, Docker отправляет секрет менеджеру swarm по взаимному соединению TLS. Секрет хранится в журнале Raft, который зашифрован. Весь журнал Raft реплицируется среди других менеджеров, обеспечивая те же гарантии высокой доступности для секретов, что и для остальных данных управления swarm.
Секреты доступности.За контейнерэфемерность. Вы никогда не знаете узел, где ваш контейнер запущен и работает, и вам не стоит об этом сильно беспокоиться. Сказав это, эти секреты должны быть доступны везде, где работает контейнер.
Секреты памяти.Есть своего рода статья о том, как хранить секреты в памяти,здесьПроблема в том, что... если вы не доверяете своей системе и ее управлению памятью, у вас гораздо более серьезная проблема, чем просто пароль, хранящийся в памяти.
Разница.
- Секреты в файлах обычно хранятся в открытом виде.wp-configГораздо лучше хранить их постоянно зашифрованными и не шифровать, а только в памяти.
- Секреты должны бытьповернутый.
Сказал, что можно достичьпочтито же самое, сохраняя ваш секретный файл в зашифрованном видеopenssl, расшифровать его и поместить незашифрованный контент в память. Все это вы бы сделали вручную.