Перейти к основному контенту

Авторизация Кубернетов

K8s-authz это Kubernetes (k8s) RBAC & ABAC authorization middleware на основе Casbin. Этот middleware использует K8s валидацию webhook для проверки политик, определенных casbin, по каждому запросу k8s ресурсов. Эти пользовательские контроллеры доступа выполняют некоторую проверку объекта запроса, который был переслан api сервером и основан на логике, отправляет ответ на api сервер, содержащий информацию о том, разрешить или отклонить запрос. Эти контроллеры зарегистрированы в Kubernetes с помощью ValidatingAdmissionWebhook.

Сервер K8s должен знать когда отправлять входящий запрос нашему контроллеру приёма. Со своей стороны, мы определили веб-хук для проверки подлинности, который проксирует запросы любого типа K8s ресурс/подресурса и проверил их. Пользователю будет разрешено выполнять операции по этим ресурсам, только в том случае, если он санкционирует это действие. Принудитель проверяет роли пользователя, определенные в политиках. Этот middleware будет развернут на кластере K8s.

Требования

Перед тем как продолжить, убедитесь, что следует

  • Запущенный k8s Cluster. Вы можете запустить кластеры через Docker, включив их на Docker Desktop или вы можете настроить полностью K8s ytem локально или на вашем сервере. Вы можете следовать подробному руководству для установки кластера k8 локально в Windows или руководству , если хотите установить для Linux.
  • Kubectl CLI Это руководство по установке на Windows и это руководство для Linux.
  • OpenSSL

Использование

  • Генерировать сертификаты и ключи для каждого пользователя, используя openssl и запустив следующий скрипт: -
./gen_cert.sh
  • Создайте образ докер из файла Dockerfile вручную, выполнив следующую команду и затем измените версию сборки здесь и в процессе установки файла, по сборкам.
 docker build -t casbin/k8s_authz:0.1 .
  • Определите политику касбина в model.conf и policy.csv. Вы можете обратиться к документации , чтобы узнать больше о работе этих политик.

  • Перед установкой вы можете изменить порты в main.go , а также в конфигурации webhook файла в зависимости от вашего использования.

  • Разверните контроллер проверки и webhook на кластере k8s путем запуска:-

кубектл применяет -f deployment.yaml
  • For a production server, we need to create a k8s secret to place the certificates for security purposes.
kubectl создать секретный общий casbin -n по умолчанию \
--from-file=key.pem=certs/casbin-key.pem \
--from-file=cert.pem=certs/casbin-crt.pem
  • Однажды, эта часть выполнена, нам нужно изменить директорию сертификатов в . o и затем в манифесте с меткой ``.

Теперь сервер должен быть запущен и готов к проверке запросов на операции с ресурсами k8.