управление_доступом_в_kubernetes

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
управление_доступом_в_kubernetes [2025/12/19 05:50]
val
управление_доступом_в_kubernetes [2026/03/20 20:59] (current)
val [Шаг 7. Использование OpenID Connect]
Line 15: Line 15:
   * [[https://​medium.com/​@subhampradhan966/​implementing-and-verifying-kubernetes-service-accounts-a-step-by-step-guide-c43b727260b2|Implementing and Verifying Kubernetes Service Accounts: A Step-by-Step Guide]]   * [[https://​medium.com/​@subhampradhan966/​implementing-and-verifying-kubernetes-service-accounts-a-step-by-step-guide-c43b727260b2|Implementing and Verifying Kubernetes Service Accounts: A Step-by-Step Guide]]
  
- +  * [[https://​medium.com/​@amirhosseineidy/​kubernetes-authentication-with-keycloak-oidc-63571eaeed61|Kubernetes authentication with keycloak oidc]] 
 +  * [[https://​vlasov.pro/​ru/​p/​kubernetes-oidc/​|Kubernetes авторизация через OIDC]] 
 +  * [[https://​timeweb.cloud/​docs/​k8s/​connect-oidc-provider-to-cluster|Подключение OIDC-провайдера к кластеру]] 
 +  * [[https://​www.talkingquickly.co.uk/​setting-up-oidc-login-kubernetes-kubectl-with-keycloak|OIDC Login to Kubernetes and Kubectl with Keycloak]] 
 +  * [[https://​github.com/​int128/​kubelogin|kubelogin - This is a kubectl plugin for Kubernetes OpenID Connect]]
  
 ===== Реклама ===== ===== Реклама =====
Line 44: 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 63: 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 94: 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 101: 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 145: Line 157:
 </​code>​ </​code>​
  
-===== Вопросы?​ ===== +===== Шаг 7. Использование ​OpenID Connect ​=====
- +
-===== Домашнее задание ===== +
- +
-  - Куда и через ​сколько исчезает "​kubectl get csr" после "​approve"​ ?  +
- +
-===== Перезапуск ​вебинара ===== +
-<​code>​ +
-user1@client1:​~$ rm -v user1* +
- +
-user1@client1:​~$ rm -rfv .kube/ +
- +
-kube1:~# rm -rfv users/ +
-</​code>​ +
- +
-===== Дополнительные материалы ​===== +
- +
-==== Демонстрация OIDC ==== +
- +
-<​code>​ +
-user1@client1:​~$ cp -rv .kube.iodc/ .kube/ +
-</​code>​+
  
-  * Открываем браузер +  * Сервис Keycloak [[Сервис Keycloak#Аутентификация пользователей WEB приложения]] 
-  * Подколючемся к giltab ​через keycloak+  * [[Сервис Keycloak#Проверка получения токена]] и наличия в нем списка групп 
 +  
 +  * Настройка oidc в kube-apiserver (параметра client-secret нет и не требуется)
 <​code>​ <​code>​
-user1@client1:​~$ kubelogin 
- 
-user1@client1:​~$ kubectl auth whoami 
-</​code>​ 
- 
-  * [[Система Kubernetes#​Предоставление полного доступа к Kubernetes Cluster]] 
- 
- 
-==== Черновик OIDC ==== 
-<​code>​ 
-https://​medium.com/​@amirhosseineidy/​kubernetes-authentication-with-keycloak-oidc-63571eaeed61 
- 
-https://​vlasov.pro/​ru/​p/​kubernetes-oidc/​ 
- 
-https://​github.com/​int128/​kubelogin 
- 
-https://​timeweb.cloud/​docs/​k8s/​connect-oidc-provider-to-cluster 
- 
-? https://​www.talkingquickly.co.uk/​setting-up-oidc-login-kubernetes-kubectl-with-keycloak 
- 
-Email verified 
- 
 kube1:​~/​users#​ vim /​etc/​kubernetes/​manifests/​kube-apiserver.yaml kube1:​~/​users#​ vim /​etc/​kubernetes/​manifests/​kube-apiserver.yaml
 +</​code><​code>​
 ... ...
 spec: spec:
Line 199: Line 171:
   - command:   - command:
     - kube-apiserver     - kube-apiserver
-    - --oidc-issuer-url=https://​keycloak.corp13.un/realms/corp13+    - --oidc-issuer-url=https://​keycloak.corpX.un/realms/corpX
     #- --oidc-client-id=account     #- --oidc-client-id=account
     - --oidc-client-id=any-client     - --oidc-client-id=any-client
Line 206: Line 178:
     - --oidc-groups-claim=groups     - --oidc-groups-claim=groups
 ... ...
 +</​code><​code>​
 kube1:~# ps ax | grep kube-apiserver kube1:~# ps ax | grep kube-apiserver
  
-kube1:~/users# kubectl -n kube-system logs Pod/​kube-apiserver-kube1+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\"​]]"​ 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 полученным токеном
 +
 +<​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 user1@client1:​~$ cat .kube/​config
-apiVersion: v1 +</​code><​code>​ 
-clusters: +...
-- cluster: +
-    certificate-authority-data: ​... +
-    server: https://​192.168.13.221:​6443 +
-  name: cluster.local +
-contexts: +
-- context: +
-    cluster: cluster.local +
-    user: user1 +
-  name: default-context +
-current-context:​ default-context +
-kind: Config +
-preferences:​ {}+
 users: users:
 - name: user1 - name: user1
Line 241: Line 217:
         #​refresh-token: ​         #​refresh-token: ​
       name: oidc       name: oidc
 +</​code><​code>​
 +user1@client1:​~$ kubelogin
  
 +user1@client1:​~$ kubectl auth whoami
 </​code>​ </​code>​
 +
 +  * [[Система Kubernetes#​Предоставление полного доступа к Kubernetes Cluster]]
 +
 +===== Вопросы?​ =====
 +
 +===== Домашнее задание =====
 +
 +  - Куда и через сколько исчезает "​kubectl get csr" после "​approve"​ ? 
 +
 +===== Перезапуск вебинара =====
 +<​code>​
 +user1@client1:​~$ rm -v user1*
 +
 +user1@client1:​~$ rm -rfv .kube/
 +
 +kube1:~# rm -rfv users/
 +</​code>​
 +
 +===== Дополнительные материалы =====
 +
 ==== Черновик Auditing ==== ==== Черновик Auditing ====
 <​code>​ <​code>​
управление_доступом_в_kubernetes.1766112614.txt.gz · Last modified: 2025/12/19 05:50 by val