управление_правами_в_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/11/01 10:51]
val
управление_правами_в_kubernetes [2025/11/01 13:31] (current)
val [Управление правами в Kubernetes]
Line 5: Line 5:
   * [[https://​habr.com/​ru/​articles/​779190/​|Как работает аутентификация в Kubernetes: ServiceAccount и RBAC]]   * [[https://​habr.com/​ru/​articles/​779190/​|Как работает аутентификация в Kubernetes: ServiceAccount и RBAC]]
   * [[https://​medium.com/​@muppedaanvesh/​a-hand-on-guide-to-kubernetes-rbac-with-a-user-creation-%EF%B8%8F-1ad9aa3cafb1|A Hands-On Guide to Kubernetes RBAC With a User Creation]]   * [[https://​medium.com/​@muppedaanvesh/​a-hand-on-guide-to-kubernetes-rbac-with-a-user-creation-%EF%B8%8F-1ad9aa3cafb1|A Hands-On Guide to Kubernetes RBAC With a User Creation]]
 +  * [[https://​kubernetes.io/​docs/​reference/​kubectl/​generated/​kubectl_config/​kubectl_config_set-credentials/​|Kubernetes Documentation kubectl config set-credentials]]
  
   * [[https://​www.container-security.site/​security_research/​node_proxy.html|Node/​Proxy in Kubernetes RBAC]]   * [[https://​www.container-security.site/​security_research/​node_proxy.html|Node/​Proxy in Kubernetes RBAC]]
 +  * [[https://​stackoverflow.com/​questions/​60445336/​how-to-grant-access-to-specify-namespace-in-kubernetes-dashboard|How to grant access to specify namespace in kubernetes dashboard?​]]
 +  * [[https://​docs.sc.otc.t-systems.com/​cloud-container-engine/​umn/​permissions_management/​namespace_permissions_kubernetes_rbac-based.html|Namespace Permissions (Kubernetes RBAC-based)]]
   * [[https://​medium.com/​@ManagedKube/​kubernetes-rbac-port-forward-4c7eb3951e28|Kubernetes RBAC Port Forward]]   * [[https://​medium.com/​@ManagedKube/​kubernetes-rbac-port-forward-4c7eb3951e28|Kubernetes RBAC Port Forward]]
  
Line 109: Line 112:
 </​code>​ </​code>​
  
-===== Шаг 3. Использование Role и RoleBinding ​на примере предоставления доступа к services/​proxy в конкретном ​Namespace ​=====+===== Шаг 3. Использование Role и RoleBinding ​===== 
 + 
 +==== Предоставление доступа к services/​proxy в Namespace ====
  
   * Cloud native distributed block storage for Kubernetes [[Сервис Keycloak#​longhorn]]   * Cloud native distributed block storage for Kubernetes [[Сервис Keycloak#​longhorn]]
Line 149: Line 154:
  
 student@client1:​~$ curl http://​localhost:​8001/​api/​v1/​namespaces/​kubernetes-dashboard/​services/​https:​kubernetes-dashboard:/​proxy/​ student@client1:​~$ curl http://​localhost:​8001/​api/​v1/​namespaces/​kubernetes-dashboard/​services/​https:​kubernetes-dashboard:/​proxy/​
- 
-kube1:​~/​users#​ kubectl get rolebindings --all-namespaces -o=json | jq '​.items[] | select(.subjects[]?​.name == "​user1"​)'​ 
 </​code>​ </​code>​
-===== Шаг 4. Использование ClusterRole и ClusterRoleBinding на примере предоставления доступа к services/​port-forward в Cluster =====+==== Предоставление полного ​доступа к Namespace ​====
  
-Обзор и использование существующих ClusterRole и ClusterRoleBinding 
 <​code>​ <​code>​
-kube1:~/users# kubectl get clusterroles |less+</code>
  
-kube1:​~/​userskubectl get clusterrolebindings cluster-admin -o yaml +  * [[Система Kubernetes#Базовые объекты ​k8s]] 
- +==== Поиск предоставленных ролей для учетной записи ==== 
-kube1:​~/​users#​ kubectl get clusterrole view -o yaml +<​code>​ 
- +kube1:​~/​users#​ kubectl get rolebindings ​--all-namespaces ​-o=json | jq '​.items[] | select(.subjects[]?​.name == "​user1"​)'
-kube1:​~/​users#​ cat user1-view-clusterrolebinding.yaml +
-</​code><​code>​ +
-apiVersion: rbac.authorization.k8s.io/v1 +
-kind: ClusterRoleBinding +
-metadata: +
-  name: user1-view-clusterrolebinding +
-subjects: +
-- kind: User +
-  name: user1 +
-  apiGroup: rbac.authorization.k8s.io +
-roleRef: +
-  kind: ClusterRole +
-  name: view +
-  apiGroup: rbac.authorization.k8s.io +
-</​code>​<​code>​ +
-kube1:​~/​users# ​kubectl apply -f user1-view-clusterrolebinding.yaml +
- +
-student@client1:​~$ ​kubectl get pods -+
- +
-student@client1:​~$ kubectl port-forward ​-n my-pgcluster-ns services/​my-pgcluster-rw 5432:5432 +
-error: error upgrading connection: pods "​my-pgcluster-3"​ is forbidden: User "​user1" ​cannot create resource "​pods/​portforward"​ in API group ""​ in the namespace "​my-pgcluster-ns"​+
 </​code>​ </​code>​
 +===== Шаг 4. Использование ClusterRole и ClusterRoleBinding на  =====
  
-Создание ​и использование своих ClusterRole и ClusterRoleBinding+==== Предоставление ​доступа к services/​port-forward ​в Cluster ====
  
 <​code>​ <​code>​
Line 229: Line 211:
  
 student@client1:​~$ psql postgres://​keycloak:​strongpassword@127.0.0.1:​5432/​postgres student@client1:​~$ psql postgres://​keycloak:​strongpassword@127.0.0.1:​5432/​postgres
 +</​code>​
  
 +==== Предоставление полного доступа к Cluster ====
 +
 +<​code>​
 +kube1:​~/​users#​ kubectl get clusterroles |less
 +
 +kube1:​~/​users#​ kubectl get clusterrolebindings cluster-admin -o yaml
 +
 +kube1:​~/​users#​ kubectl get clusterrole view -o yaml
 +
 +kube1:​~/​users#​ cat user1-view-clusterrolebinding.yaml
 +</​code><​code>​
 +apiVersion: rbac.authorization.k8s.io/​v1
 +kind: ClusterRoleBinding
 +metadata:
 +  name: user1-view-clusterrolebinding
 +subjects:
 +- kind: User
 +  name: user1
 +  apiGroup: rbac.authorization.k8s.io
 +roleRef:
 +  kind: ClusterRole
 +  name: view
 +  apiGroup: rbac.authorization.k8s.io
 +</​code><​code>​
 +kube1:​~/​users#​ kubectl apply -f user1-view-clusterrolebinding.yaml
 +
 +student@client1:​~$ kubectl get pods -A
 +
 +student@client1:​~$ kubectl port-forward -n my-pgcluster-ns services/​my-pgcluster-rw 5432:5432
 +error: error upgrading connection: pods "​my-pgcluster-3"​ is forbidden: User "​user1"​ cannot create resource "​pods/​portforward"​ in API group ""​ in the namespace "​my-pgcluster-ns"​
 +</​code>​
 +
 +==== Поиск предоставленных кластерных ролей для учетной записи ====
 +<​code>​
 kube1:​~/​users#​ kubectl get clusterrolebindings -o=json | jq '​.items[] | select(.subjects[]?​.name == "​user1"​)'​ kube1:​~/​users#​ kubectl get clusterrolebindings -o=json | jq '​.items[] | select(.subjects[]?​.name == "​user1"​)'​
 </​code>​ </​code>​
  
-===== Шаг ​6. Использование JSON Web Token (JWT) для доступа в Kubernetes =====+===== Шаг ​5. Использование JSON Web Token (JWT) для доступа в Kubernetes =====
  
   * Возвращаемся на [[#​Вариант 2.2 Использование ServiceAccount]]   * Возвращаемся на [[#​Вариант 2.2 Использование ServiceAccount]]
Line 239: Line 256:
 ===== Вопросы?​ ===== ===== Вопросы?​ =====
  
 +===== Домашнее задание =====
  
 +  - Куда и через сколько исчезает "​kubectl get csr" после "​approve"​ ? 
управление_правами_в_kubernetes.1761983486.txt.gz · Last modified: 2025/11/01 10:51 by val