Авторизація на Платформі
Визначення
- Платформа реєстрів
-
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. Більш детально тут. Для спрощення розуміння, нижче будуть використані наступні основні аспекти:
-
Subject — user, group або serviceaccount
Концепція авторизації
- Платформа використовує такі основні принципи авторизації
-
-
Усі користувачі проходять аутентифікацію у KeyCloak (realm openshift).
-
OpenShift інтегрований з KeyCloak за допомогою OpenshiftAuth.
-
Всі центральні компоненти реєстру інтегровані з KeyCloak або OpenShift Auth.
-
Авторизація дій (створення, перегляд, редагування, видалення) щодо інформації в центральних компонентах використовує один з підходів нижче. На основі можливостей конкретного компонента потрібно обирати підхід з максимальним пріоритетом:
-
авторизація на основі Kubernetes RBAC. Тобто якщо користувач має доступ до ресурсу через API Kubernetes то він може, виконувати аналогічні дії з пов’язаними ресурсами. Цей принцип найбільш характерний для OpenShift Console та Control Plane Console;
-
авторизація на основі ролей, що приходять з JWT Token;
-
авторизація на основі власних засобів інструмента.
-
-
Схема аутентифікації для центральних компонент платформи:
Схема авторизації в рамках Control Plane Console
За замовчуванням, після встановлення Платформи, створюються наступні користувачі:
-
cp-cluster-mgmt-admin
("Адміністратор платформи") — може створювати реєстр і додавати адміністраторів реєстру. -
cp-registry-reader
("ReadOnly користувач") — може переглядати дашборд.
Назва ролі | Короткий опис | Що повинна дозволяти |
---|---|---|
|
Керує налаштуваннями центральних компонентів, переглядає ії статус |
|
|
Може бачити та редагувати налаштування конкретного реєстру |
|
|
Може переглядати дашборди |
|
Дія у 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 |