This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision | ||
|
управление_доступом_в_kubernetes [2025/12/19 06:19] val [Управление доступом в Kubernetes] |
управление_доступом_в_kubernetes [2026/03/20 20:59] (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 104: | Line 111: | ||
| kube1:~/users# kubectl delete serviceaccounts admin-user | kube1:~/users# kubectl delete serviceaccounts admin-user | ||
| + | |||
| + | user1@client1:~$ rm -rf .kube/ | ||
| </code> | </code> | ||
| ===== Шаг 6. Использование Service Accounts в приложениях ===== | ===== Шаг 6. Использование Service Accounts в приложениях ===== | ||
| Line 150: | Line 159: | ||
| ===== Шаг 7. Использование OpenID Connect ===== | ===== Шаг 7. Использование OpenID Connect ===== | ||
| - | ==== Демонстрация OIDC ==== | + | * Сервис Keycloak [[Сервис Keycloak#Аутентификация пользователей WEB приложения]] |
| + | * [[Сервис Keycloak#Проверка получения токена]] и наличия в нем списка групп | ||
| + | |||
| + | * Настройка oidc в kube-apiserver (параметра client-secret нет и не требуется) | ||
| + | <code> | ||
| + | kube1:~/users# vim /etc/kubernetes/manifests/kube-apiserver.yaml | ||
| + | </code><code> | ||
| + | ... | ||
| + | spec: | ||
| + | containers: | ||
| + | - command: | ||
| + | - kube-apiserver | ||
| + | - --oidc-issuer-url=https://keycloak.corpX.un/realms/corpX | ||
| + | #- --oidc-client-id=account | ||
| + | - --oidc-client-id=any-client | ||
| + | - --oidc-username-claim=email | ||
| + | #- --oidc-username-claim=preferred_username | ||
| + | - --oidc-groups-claim=groups | ||
| + | ... | ||
| + | </code><code> | ||
| + | kube1:~# ps ax | grep kube-apiserver | ||
| + | |||
| + | kube1:~# journalctl -f | grep kube-apiserver | ||
| + | |||
| + | kube1/2:~# kubectl -n kube-system logs Pod/kube-apiserver-kube1 | ||
| + | ... | ||
| + | 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\"]]" | ||
| + | ... | ||
| + | E1218 10:36:21.105422 1 authentication.go:75] "Unable to authenticate the request" err="[invalid bearer token, oidc: email not verified]" | ||
| + | ... | ||
| + | </code> | ||
| + | |||
| + | * [[Система Kubernetes#Создание файла конфигурации kubectl]] c полученным токеном | ||
| - | * Открываем браузер | ||
| - | * Подколючемся к giltab через keycloak | ||
| <code> | <code> | ||
| + | client1:~# wget https://github.com/int128/kubelogin/releases/download/v1.35.0/kubelogin_linux_amd64.zip | ||
| + | |||
| + | client1:~# unzip kubelogin_linux_amd64.zip | ||
| + | |||
| + | client1:~# mv kubelogin /usr/local/bin/ | ||
| + | |||
| + | user1@client1:~$ cat .kube/config | ||
| + | </code><code> | ||
| + | ... | ||
| + | users: | ||
| + | - name: user1 | ||
| + | user: | ||
| + | auth-provider: | ||
| + | config: | ||
| + | client-id: any-client | ||
| + | client-secret: anystring | ||
| + | grant-type: password | ||
| + | #id-token: | ||
| + | idp-issuer-url: https://keycloak.corp13.un/realms/corp13 | ||
| + | #refresh-token: | ||
| + | name: oidc | ||
| + | </code><code> | ||
| user1@client1:~$ kubelogin | user1@client1:~$ kubelogin | ||