Читать секреты внутри Redhat OpenShift онлайн?

Я получил стартовый vps-сервер Redhat OpenShift для хостинга моего дискотечного бота. Я загрузил его на github, за исключением моего токена дискординга и других ключей API, конечно:^)

Как мне заставить OpenShift использовать секреты клиента для хранения и чтения? Я использую инфраструктуру nodejs8, если это поможет.

1 ответ

Решение

Секретам нет места в сервисе хостинга контроля версий, таком как GitHub.

Что касается OpenShift, он включает в себя Secrets, кодированный файл конфигурации 64, в который вы можете вводить конфиденциальную информацию.

Но это долговременное хранилище конфиденциальной информации (которое вводится в секреты OpenShift) должно храниться в надлежащем хранилище.

Как, например, Hashicorp Vault, как описано в статье " Управление секретами в OpenShift - Vault Integration "

Остальное описывает это решение, но даже если вы не используете этот конкретный хост, общая идея (внешнее хранилище типа хранилища) остается:

  1. Контейнер инициализации (запускаемый до запуска основного контейнера модуля) запрашивает свернутый токен из контроллера хранилища по зашифрованному соединению.
    Свернутые учетные данные позволяют вам передавать учетные данные без каких-либо посредников, которые действительно должны видеть учетные данные.
  2. Контроллер хранилища получает информацию о модуле с сервера API Kubernetes.
  3. Если модуль существует и содержит аннотацию vaultproject.io/policies, контроллер Vault вызывает Vault и генерирует уникальный упакованный токен с доступом к политикам Vault, упомянутым в аннотации. Этот шаг требует доверия к автору пакета, чтобы он использовал правильные политики. Сгенерированный токен имеет настраиваемый TTL.
  4. Контроллер Vault "перезванивает" контейнер Init с использованием IP-адреса модуля, полученного из API Kubernetes через зашифрованное соединение, и доставляет его вновь созданный упакованный токен. Обратите внимание, что Vault Controller не доверяет модулю, он только доверяет главному API.
  5. Контейнер Init распаковывает токен, чтобы получить токен Vault, который разрешит доступ к учетным данным.
  6. Маркер Vault записывается в известное место на томе, совместно используемом двумя контейнерами (emptyDir), и выходы Init Container.
  7. Основной контейнер читает токен из файла токена. Теперь главный контейнер может использовать токен для извлечения всех секретов, разрешенных политиками, которые учитывались при создании токена.
  8. При необходимости основной контейнер обновляет токен, чтобы не допустить его истечения.
Другие вопросы по тегам