This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision | ||
|
управление_доступом_в_kubernetes [2026/01/13 09:10] val [Шаг 7. Использование OpenID Connect] |
управление_доступом_в_kubernetes [2026/06/15 14:46] (current) val [Шаг 7. Использование OpenID Connect] |
||
|---|---|---|---|
| Line 47: | Line 47: | ||
| * Linux [[Инсталяция системы в конфигурации Desktop]] и [[Решение FreeIPA#Установка и инициализация клиента]] FreeIPA | * Linux [[Инсталяция системы в конфигурации Desktop]] и [[Решение FreeIPA#Установка и инициализация клиента]] FreeIPA | ||
| + | |||
| + | * [[Система Kubernetes#Oбзор ресурсов кластера и действий над ними]] | ||
| ===== Шаг 2. Создание учетной записи ===== | ===== Шаг 2. Создание учетной записи ===== | ||
| - | ==== Вариант 2.1 Использование сертификатов ==== | + | === Вариант 2.1 Использование сертификатов === |
| + | * Изучаем файл конфигурации | ||
| <code> | <code> | ||
| kube1:~# cat ~/.kube/config | kube1:~# cat ~/.kube/config | ||
| Line 66: | Line 69: | ||
| * [[Система Kubernetes#Использование сертификатов]] | * [[Система Kubernetes#Использование сертификатов]] | ||
| - | ==== Вариант 2.2 Использование ServiceAccount ==== | + | === Вариант 2.2 Использование ServiceAccount === |
| - | * Для примера можно использовать ServiceAccout из темы [[Система Kubernetes#Kubernetes Dashboard]] в Namespace default | + | * Для примера, можно использовать ServiceAccout из темы [[Система Kubernetes#Kubernetes Dashboard]] в Namespace default, создавая файлы в каталоге users |
| - | * Показать временные и long-lived Bearer Token для ServiceAccount | + | * Показать временные и long-lived Bearer Token из ServiceAccount |
| ==== Шаг 2.3 Создание файла конфигурации kubectl ==== | ==== Шаг 2.3 Создание файла конфигурации kubectl ==== | ||
| Line 97: | Line 100: | ||
| ===== Шаг 5. Использование JSON Web Token (JWT) для доступа в Kubernetes ===== | ===== Шаг 5. Использование JSON Web Token (JWT) для доступа в Kubernetes ===== | ||
| + | |||
| + | <code> | ||
| + | user1@client1:~$ rm -rf .kube/ | ||
| + | </code> | ||
| * Возвращаемся на [[#Вариант 2.2 Использование ServiceAccount]] | * Возвращаемся на [[#Вариант 2.2 Использование ServiceAccount]] | ||
| Line 152: | Line 159: | ||
| ===== Шаг 7. Использование OpenID Connect ===== | ===== Шаг 7. Использование OpenID Connect ===== | ||
| - | * Сервис Keycloak [[Сервис Keycloak#Аутентификация пользователей WEB приложения]] | + | * Подключение к Keycloak групп из [[Сервис Keycloak#FreeIPA]] через LDAP |
| - | * !!! client-secret не нужен !!! | + | * Настройка в Keycloak [[Сервис Keycloak#Аутентификация пользователей WEB приложения]] с передачей списка групп в токене |
| + | * [[Сервис Keycloak#Проверка получения токена]] и наличия в нем списка групп и aud any-client | ||
| + | |||
| + | * Настройка oidc в kube-apiserver (параметра client-secret нет и не требуется) | ||
| <code> | <code> | ||
| kube1:~/users# vim /etc/kubernetes/manifests/kube-apiserver.yaml | kube1:~/users# vim /etc/kubernetes/manifests/kube-apiserver.yaml | ||
| Line 170: | Line 180: | ||
| ... | ... | ||
| </code><code> | </code><code> | ||
| - | kube1:~# ps ax | grep kube-apiserver | + | kube1:~# ps ax | grep kube-apiserver # |grep keycloak |
| kube1:~# journalctl -f | grep kube-apiserver | kube1:~# journalctl -f | grep kube-apiserver | ||
| Line 178: | Line 188: | ||
| Error: unknown flag: --oidc-client-secret | Error: unknown flag: --oidc-client-secret | ||
| ... | ... | ||
| - | E1203 05:22:46.412571 1 authentication.go:73] "Unable to authenticate the request" err="[invalid bearer token, oidc: verify token: oidc: expected audience \"any-client\" got [\"account\"]]" | + | E1203 05:22:46.412571 1 authentication.go:73] "Unable to authenticate the request" |
| + | err="[invalid bearer token, oidc: verify token: oidc: expected audience \"any-client\" got [\"account\"]]" | ||
| ... | ... | ||
| - | E1218 10:36:21.105422 1 authentication.go:75] "Unable to authenticate the request" err="[invalid bearer token, oidc: email not verified]" | + | E1218 10:36:21.105422 1 authentication.go:75] "Unable to authenticate the request" |
| + | err="[invalid bearer token, oidc: email not verified]" | ||
| ... | ... | ||
| </code> | </code> | ||
| - | * [[Сервис Keycloak#Проверка получения токена]] Keycloak | ||
| * [[Система Kubernetes#Создание файла конфигурации kubectl]] c полученным токеном | * [[Система Kubernetes#Создание файла конфигурации kubectl]] c полученным токеном | ||
| Line 198: | Line 209: | ||
| ... | ... | ||
| users: | users: | ||
| - | - name: user1 | + | #... |
| + | - name: user1-token | ||
| user: | user: | ||
| auth-provider: | auth-provider: | ||
| Line 206: | Line 218: | ||
| grant-type: password | grant-type: password | ||
| #id-token: | #id-token: | ||
| - | idp-issuer-url: https://keycloak.corp13.un/realms/corp13 | + | idp-issuer-url: https://keycloak.corpX.un/realms/corpX |
| #refresh-token: | #refresh-token: | ||
| name: oidc | name: oidc | ||
| </code><code> | </code><code> | ||
| - | user1@client1:~$ kubelogin | + | user1@client1:~$ kubelogin # при первом подключении Ctrl-C |
| user1@client1:~$ kubectl auth whoami | user1@client1:~$ kubectl auth whoami | ||
| </code> | </code> | ||
| + | * В FreeIPA cоздаем группу freeipa-kube-admin, синхронизируем (лучше настроить Periodic sync) в Keycloak | ||
| * [[Система Kubernetes#Предоставление полного доступа к Kubernetes Cluster]] | * [[Система Kubernetes#Предоставление полного доступа к Kubernetes Cluster]] | ||