Читать секреты внутри Redhat OpenShift онлайн? - PullRequest
0 голосов
/ 09 декабря 2018

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

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

1 Ответ

0 голосов
/ 09 декабря 2018

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

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

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

Как, например, Хашикорп Хранилище , как описано в статье " Управление секретами в OpenShift - интеграция с хранилищем "

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

https://i2.wp.com/blog.openshift.com/wp-content/uploads/vault-1.png?w=1486&ssl=1

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