Читать секреты внутри Redhat OpenShift онлайн?
Я получил стартовый vps-сервер Redhat OpenShift для хостинга моего дискотечного бота. Я загрузил его на github, за исключением моего токена дискординга и других ключей API, конечно:^)
Как мне заставить OpenShift использовать секреты клиента для хранения и чтения? Я использую инфраструктуру nodejs8, если это поможет.
1 ответ
Секретам нет места в сервисе хостинга контроля версий, таком как GitHub.
Что касается OpenShift, он включает в себя Secrets, кодированный файл конфигурации 64, в который вы можете вводить конфиденциальную информацию.
Но это долговременное хранилище конфиденциальной информации (которое вводится в секреты OpenShift) должно храниться в надлежащем хранилище.
Как, например, Hashicorp Vault, как описано в статье " Управление секретами в OpenShift - Vault Integration "
Остальное описывает это решение, но даже если вы не используете этот конкретный хост, общая идея (внешнее хранилище типа хранилища) остается:
- Контейнер инициализации (запускаемый до запуска основного контейнера модуля) запрашивает свернутый токен из контроллера хранилища по зашифрованному соединению.
Свернутые учетные данные позволяют вам передавать учетные данные без каких-либо посредников, которые действительно должны видеть учетные данные.- Контроллер хранилища получает информацию о модуле с сервера API Kubernetes.
- Если модуль существует и содержит аннотацию vaultproject.io/policies, контроллер Vault вызывает Vault и генерирует уникальный упакованный токен с доступом к политикам Vault, упомянутым в аннотации. Этот шаг требует доверия к автору пакета, чтобы он использовал правильные политики. Сгенерированный токен имеет настраиваемый TTL.
- Контроллер Vault "перезванивает" контейнер Init с использованием IP-адреса модуля, полученного из API Kubernetes через зашифрованное соединение, и доставляет его вновь созданный упакованный токен. Обратите внимание, что Vault Controller не доверяет модулю, он только доверяет главному API.
- Контейнер Init распаковывает токен, чтобы получить токен Vault, который разрешит доступ к учетным данным.
- Маркер Vault записывается в известное место на томе, совместно используемом двумя контейнерами (emptyDir), и выходы Init Container.
- Основной контейнер читает токен из файла токена. Теперь главный контейнер может использовать токен для извлечения всех секретов, разрешенных политиками, которые учитывались при создании токена.
- При необходимости основной контейнер обновляет токен, чтобы не допустить его истечения.