У меня есть набор систем (в AWS), которым всем нужен беспарольный SSH-доступ друг к другу. Я написал состояние Salt, которое копирует пару ключей (открытые / частные ключи SSH-RSA, которые я ранее сгенерировал) и добавляет соответствующую запись в файл authorized_keys пользователя.
Сейчас я храню открытый и закрытый ключи в виде файлов в состоянии Salt и использую их в своем определении состояния. Однако я заметил в salt.states.file.managed () документация что они предоставляют пример, который хранит закрытый ключ в Pillar, а затем использует contents_pillar
чтобы получить содержимое закрытого ключа.
Есть ли причина, по которой я могу захотеть хранить содержимое моего личного (или даже открытого) ключа в Pillar, а не просто файл в каталоге состояния? Я не уверен, есть ли там преимущество в безопасности, поскольку содержимое в любом случае попадет в каждую систему. Я использовал Pillar для нескольких других целей, но не был уверен, есть ли хороший случай, чтобы использовать его здесь.
Все состояния доступны для чтения всеми миньонами, чтобы кто-то (с соответствующими разрешениями), вошедший в систему, мог прочитать секретные ключи, которые вы храните в состояниях.
Данные столба могут быть ограничены соответствующими миньонами.. Здесь вы храните все, что является конфиденциальным для одного или только нескольких миньонов.
Вам следует прочитать страницу документации по столбу: http://docs.saltstack.com/en/latest/topics/pillar/index.html
Вот это примечание:
Хранение конфиденциальных данных
В отличие от дерева состояний, данные столба доступны только для целевого миньона, указанного типом сопоставления. Это делает его полезным для хранения конфиденциальных данных, относящихся к конкретному миньону.