This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision | ||
|
управление_доступом_в_kubernetes [2026/03/20 15:25] val [Шаг 5. Использование JSON Web Token (JWT) для доступа в Kubernetes] |
управление_доступом_в_kubernetes [2026/06/15 14:46] (current) val [Шаг 7. Использование OpenID Connect] |
||
|---|---|---|---|
| Line 71: | Line 71: | ||
| === Вариант 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 159: | Line 159: | ||
| ===== Шаг 7. Использование OpenID Connect ===== | ===== Шаг 7. Использование OpenID Connect ===== | ||
| - | * Сервис Keycloak [[Сервис Keycloak#Аутентификация пользователей WEB приложения]] | + | * Подключение к Keycloak групп из [[Сервис Keycloak#FreeIPA]] через LDAP |
| - | * !!! в конфигурации kube-apiserver параметра 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 177: | 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 185: | 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 205: | Line 209: | ||
| ... | ... | ||
| users: | users: | ||
| - | - name: user1 | + | #... |
| + | - name: user1-token | ||
| user: | user: | ||
| auth-provider: | auth-provider: | ||
| Line 213: | 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]] | ||