Авторизація на Платформі

Визначення

Платформа реєстрів

OpenShift кластер зі встановленими компонентами необхідні для створення та ведення реєстрів.

Control Plane

Сукупність компонентів платформи, що забезпечує спрощення керування центральними компонентами платформи, дозволяє керувати реєстрами та агрегує посилання до всіх WEB API центральних компонентів.

Керування Платформою

Абстракція в рамках Control Plane, що дозволяє керувати центральними компонентами системи.

Центральні компоненти

Компоненти системи, що спільно використовуються усіма реєстрами та існують в єдиному екземплярі на кластері. Для доступу до них використовуються наступні інтерфейси та API:

  • OpenShift Console — для доступу до ресурсів в OpenShift

  • Control Plane Console — керування реєстрами та кластером

  • Control Plane Gerrit — доступ до конфігурацій центральних компонентів та компонентів реєстру

  • Control Plane Jenkins — доступ до пайплайнів розгортання змін до компонентів

  • Control Plane Nexus — доступ до артефактів (docker image) платформи

  • Keycloak — для доступу до керування користувачами

  • Kibana — доступ до логів

  • Grafana — доступ до моніторингу

  • Kiali — керування Service Mesh

  • Jaeger — перегляд трейсів в рамках запитів до реєстру

  • ШБО Трембіти — налаштування Трембіти (МАЄ ВЛАСНУ АВТОРИЗАЦІЮ, яку ми не контролюємо)

  • Velero CLI — cli для роботи з бекапами

  • oc — cli з кластером OpenShift

Компоненти реєстру

Компоненти, що встановлюється окремо для кожного реєстру.

Kubernetes RBAC Authorization

Механізм авторизації, який використовується в OpenShift. Більш детально тут. Для спрощення розуміння, нижче будуть використані наступні основні аспекти:

Концепція авторизації

Платформа використовує такі основні принципи авторизації
  • Усі користувачі проходять аутентифікацію у KeyCloak (realm openshift).

  • OpenShift інтегрований з KeyCloak за допомогою OpenshiftAuth.

  • Всі центральні компоненти реєстру інтегровані з KeyCloak або OpenShift Auth.

  • Авторизація дій (створення, перегляд, редагування, видалення) щодо інформації в центральних компонентах використовує один з підходів нижче. На основі можливостей конкретного компонента потрібно обирати підхід з максимальним пріоритетом:

    • авторизація на основі Kubernetes RBAC. Тобто якщо користувач має доступ до ресурсу через API Kubernetes то він може, виконувати аналогічні дії з пов’язаними ресурсами. Цей принцип найбільш характерний для OpenShift Console та Control Plane Console;

    • авторизація на основі ролей, що приходять з JWT Token;

    • авторизація на основі власних засобів інструмента.

Схема аутентифікації для центральних компонент платформи:

event

Схема авторизації в рамках Control Plane Console

За замовчуванням, після встановлення Платформи, створюються наступні користувачі:

  • cp-cluster-mgmt-admin ("Адміністратор платформи") — може створювати реєстр і додавати адміністраторів реєстру.

  • cp-registry-reader ("ReadOnly користувач") — може переглядати дашборд.

Table 1. Ролі, які створюються в OpenShift для спрощення адміністрування авторизації
Назва ролі Короткий опис Що повинна дозволяти

cp-cluster-mgmt-admin

Керує налаштуваннями центральних компонентів, переглядає ії статус

  • Бачити пункт меню "Дашборд" у Control Plane Console

  • Бачити пункт меню "Керування Платформою" у Control Plane Console

  • Бачити (не редагувати) усі проєкти (namespaces) в Openshift Console

  • Мати змогу змінювати конфігурацію центральних компонентів у Control Plane Gerrit

  • Мати змогу переглядати деталі застосовування нової конфігурації центральних компонент у Control Plane Jenkins

  • Має доступ до Openshift Realm у KeyCloak

  • Додавати реєстри й адміністраторів реєстрів

cp-registry-admin-{REGISTRY-NAME}

Може бачити та редагувати налаштування конкретного реєстру

  • Бачити пункт меню "Дашборд" у Control Plane Console

  • Бачити пункт меню "Реєстри" та конкретний реєстр

  • Видаляти реєстр

  • Редагувати реєстр (змінювати системний ключ, адмінів і так далі)

  • Мати змогу змінювати конфігурацію реєстру в Control Plane Gerrit

  • Мати змогу переглядати деталі застосовування нової конфігурації центральних компонент у Control Plane Jenkins

  • Робити бекапи

cp-registry-reader

Може переглядати дашборди

  • Бачити пункт меню "Дашборд" у Control Plane Console

  • Бачити пункт меню "Реєстри"

Table 2. Мапінг дій у Control Plane Console на доступ до об’єктів Kubernetes на основі kubectl can-i
Дія у Control Plane Дія в OpenShift В рамках якої ролі доступно

Перегляд Дашборду

list codebases, codebasebranches

clusterRole admin

cp-registry-reader

Управління інфраструктурними компонентами

list,get,create * codebases,codebasebranches

list,get,create,patch,watch,update * codebases/finalizers,codebasebranches/finalizers

get,watch,list,create,update,patch * codebases,codebasebranches,codebases/finalizers,codebasebranches/finalizers cluster-mgmt

create secrets *

get secrets gerrit-project-creator-password

cp-cluster-mgmt-admin

Адміністрування реєстру

get,list,watch * {NAMESPACE}

list codebases,codebasebranches {control-plane}

get,watch,list,create,update,patch codebases,codebasebranches {REGISTRY-NAME}

create secrets system-digital-sign-{REGISTRY-NAME}-key,system-digital-sign-{REGISTRY-NAME}-ca

create jenkinsJobRun * {control-plane}

cp-registry-admin-{REGISTRY-NAME}

cp-registry-admin-{REGISTRY-NAME}-namespace