====== Безопасность в 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]] ===== Реклама ===== * Kubernetes — это решение, превращающее Linux сервера в кластер, и, как Linux является многопользовательской, многозадачной операционной системой, так и Kubernetes позволяет множеству пользователей и приложений работать в одном кластере безопасно разделяя его ресурсы * На нашем вебинаре Вы узнаете как настраивать права доступа в Kubernetes на примерах практических полезных задач ===== Техническое задание ===== * Создать учетную запись пользователя с необходимыми правами и файл конфигурации для подключения младшего системного администратора к Web ресурсам Kubernetes * Создать учтённую запись для сервиса с необходимыми правами для запуска приложений в Kubernetes ===== Запись вебинара ===== * Тэги: ===== Шаг 1. Что у нас есть для начала ===== ===== Шаг 2. Создание учетной записи ===== * [[Управление учетными записями в Linux#Создание тестового набора учетных записей]] * [[Пакет OpenSSL#Создание пользовательского сертификата, подписанного CA]] user2@server:~$ cat user2.req | base64 -w0 * [[https://stackoverflow.com/questions/75735249/what-do-the-values-in-certificatesigningrequest-spec-usages-mean|What do the values in CertificateSigningRequest.spec.usages mean?]] 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 . * [[Система Kubernetes#Инструмент командной строки kubectl]] 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)