User Tools

Site Tools


безопасность_в_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/10/28 10:59]
val [Безопасность в Kubernetes]
— (current)
Line 1: Line 1:
-====== Безопасность в Kubernetes ====== 
  
-  * [[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/​@ManagedKube/​kubernetes-rbac-port-forward-4c7eb3951e28|Kubernetes RBAC Port Forward]] 
- 
-===== Реклама ===== 
- 
-  * Kubernetes — это решение,​ превращающее Linux сервера в кластер,​ и, как Linux является многопользовательской,​ многозадачной операционной системой,​ так и Kubernetes позволяет множеству пользователей и приложений работать в одном кластере безопасно разделяя его ресурсы 
-  * На нашем вебинаре Вы узнаете как настраивать права доступа в Kubernetes на примерах практических,​ полезных задач 
- 
- 
-===== Техническое задание ===== 
- 
-  * Создать учетную запись пользователя с необходимыми правами и файл конфигурации для подключения младшего системного администратора к Web ресурсам Kubernetes 
-  * Создать учтённую запись для сервиса с необходимыми правами для запуска приложений в Kubernetes 
- 
-===== Запись вебинара ===== 
- 
-  * Тэги: ​ 
- 
-===== Шаг 1. Что у нас есть для начала ===== 
- 
-  * [[Система Kubernetes]] 
-  * [[Сервис Keycloak#​rancher local-path-provisioner]] и [[Сервис PostgreSQL#​CloudNativePG]] кластер PostgreSQL 
-  * Сервис Keycloak в [[Сервис Keycloak#​Kubernetes]] 
-  * Cloud native distributed block storage for Kubernetes [[Сервис Keycloak#​longhorn]] 
- 
-  * Linux [[Инсталяция системы в конфигурации Desktop]] 
-===== Шаг 2. Создание учетной записи ===== 
- 
-  * [[Управление учетными записями в Linux#​Создание тестового набора учетных записей]] 
-  * [[Пакет OpenSSL#​Создание пользовательского сертификата,​ подписанного CA]] 
- 
-<​code>​ 
-user2@server:​~$ cat user2.req | base64 -w0 
-</​code>​ 
-  * [[https://​stackoverflow.com/​questions/​75735249/​what-do-the-values-in-certificatesigningrequest-spec-usages-mean|What do the values in CertificateSigningRequest.spec.usages mean?]] 
-<​code>​ 
-kube1:​~/​users#​ kubectl explain csr.spec.usages 
- 
-kube1:​~/​users#​ cat user2.req.yaml 
-apiVersion: certificates.k8s.io/​v1 
-kind: CertificateSigningRequest 
-metadata: 
-  name: user2 
-spec: 
-  request: LS0t...S0tCg== 
-  signerName: kubernetes.io/​kube-apiserver-client 
-  expirationSeconds:​ 8640000 ​ # 100 * one day 
-  usages: 
-#  - digital signature 
-#  - key encipherment 
-  - client auth 
- 
-kube1:​~/​users#​ kubectl apply -f user2.req.yaml 
- 
-kube1:​~/​users#​ kubectl describe csr/user2 
- 
-kube1:​~/​users#​ kubectl certificate approve user2 
- 
-kube1:​~/​users#​ kubectl get csr 
- 
-kube1:​~/​users#​ kubectl get csr/user2 -o yaml 
- 
-kube1:​~/​users#​ kubectl get csr/user2 -o jsonpath="​{.status.certificate}"​ | base64 -d | tee user2.crt 
- 
- 
-user2@server:​~$ scp root@kube1:​users/​user2.crt . 
-</​code>​ 
-  * [[Система Kubernetes#​Инструмент командной строки kubectl]] 
-<​code>​ 
-user2@server:​~$ kubectl config set-cluster cluster.local --insecure-skip-tls-verify=true --server=https://​192.168.13.221:​6443 
- 
-user2@server:​~$ cat .kube/​config 
- 
-user2@server:​~$ kubectl config set-credentials user2 --client-certificate=user2.crt --client-key=user2.key --embed-certs=true 
- 
-user2@server:​~$ kubectl config set-context default-context --cluster=cluster.local --user=user2 
- 
-user2@server:​~$ kubectl config use-context default-context 
- 
-user2@server:​~$ kubectl auth whoami 
- 
-user2@server:​~$ kubectl get pods 
-Error from server (Forbidden) 
-</​code>​ 
- 
-===== Шаг 3. Предоставление доступа к services/​proxy в Namespace ===== 
-<​code>​ 
-kube1:​~/​users#​ cat lh-svc-proxy-role.yaml 
-</​code><​code>​ 
-apiVersion: rbac.authorization.k8s.io/​v1 
-kind: Role 
-metadata: 
-  namespace: longhorn-system 
-  name: lh-svc-proxy-role 
-rules: 
-- apiGroups: [""​] 
-  resources: ["​services/​proxy"​] 
-  verbs: ["​get"​] 
-</​code><​code>​ 
-kube1:​~/​users#​ cat user2-lh-svc-proxy-rolebinding.yaml 
-</​code><​code>​ 
-apiVersion: rbac.authorization.k8s.io/​v1 
-kind: RoleBinding 
-metadata: 
-  name: user2-lh-svc-proxy-rolebinding 
-  namespace: longhorn-system 
-subjects: 
-- kind: User 
-  name: user2 
-  apiGroup: rbac.authorization.k8s.io 
-roleRef: 
-  kind: Role 
-  name: lh-svc-proxy-role 
-  apiGroup: rbac.authorization.k8s.io 
-</​code><​code>​ 
-kube1:​~/​users#​ kubectl apply -f lh-svc-proxy-role.yaml,​user2-lh-svc-proxy-rolebinding.yaml 
- 
-student@client1:​~$ kubectl proxy 
- 
-student@client1:​~$ curl http://​localhost:​8001/​api/​v1/​namespaces/​longhorn-system/​services/​longhorn-frontend:​80/​proxy/​ 
-</​code>​ 
-===== Шаг 4. Предоставление доступа к services/​port-forward в Namespace ===== 
-<​code>​ 
-kube1:​~/​users#​ cat user2-pg-svc-pfw-rolebinding.yaml 
-apiVersion: rbac.authorization.k8s.io/​v1 
-kind: RoleBinding 
-metadata: 
-  name: user2-pg-svc-pfw-rolebinding 
-  namespace: my-pgcluster-ns 
-subjects: 
-- kind: User 
-  name: user2 
-  apiGroup: rbac.authorization.k8s.io 
-roleRef: 
-  kind: Role 
-  name: pg-svc-pfw-role 
-  apiGroup: rbac.authorization.k8s.io 
-kube1:​~/​users#​ cat pg-svc-pfw-role.yaml 
-apiVersion: rbac.authorization.k8s.io/​v1 
-kind: Role 
-metadata: 
-  namespace: my-pgcluster-ns 
-  name: pg-svc-pfw-role 
-rules: 
-- apiGroups: [""​] 
-  resources: ["​services"​] 
-  verbs: ["​get"​] 
-- apiGroups: [""​] 
-  resources: ["​pods"​] 
-  verbs: ["​get",​ "​list"​] 
-- apiGroups: [""​] 
-  resources: ["​pods/​portforward"​] 
-  verbs: ["​create"​] 
-</​code><​code>​ 
-kube1:​~/​users#​ kubectl apply -f pg-svc-pfw-role.yaml,​user2-pg-svc-pfw-rolebinding.yaml 
- 
-student@client1:​~$ kubectl port-forward -n my-pgcluster-ns services/​my-pgcluster-rw 5432:​5432 ​                 
- 
-student@client1:​~$ psql postgres://​keycloak:​strongpassword@127.0.0.1:​5432/​postgres 
-</​code>​ 
- 
-===== Шаг 5. Предоставление доступа к services/​port-forward в Cluster ===== 
-<​code>​ 
- 
-</​code>​ 
- 
-===== Черновик ===== 
- 
-  * https://​www.container-security.site/​security_research/​node_proxy.html 
безопасность_в_kubernetes.1761638389.txt.gz · Last modified: 2025/10/28 10:59 by val