Авторизация Кубернетов
K8s-authz это Kubernetes (k8s) RBAC & ABAC authorization middleware на основе Casbin. Этот middleware использует K8s валидацию webhook для проверки политик, определенных casbin, по каждому запросу k8s ресурсов. Эти пользовательские контроллеры доступа выполняют некоторую проверку объекта запроса, который был переслан api сервером и основан на логике, отправляет ответ на api сервер, содержащий информацию о том, разрешить или отклонить запрос. Эти контроллеры зарегистрированы в Kubernetes с помощью ValidatingAdmissionWebhook
.
Сервер K8s должен знать когда отправлять входящий запрос нашему контроллеру приёма. Со своей стороны, мы определили веб-хук для проверки подлинности, который проксирует запросы любого типа K8s ресурс/подресурса и проверил их. Пользователю будет разрешено выполнять операции по этим ресурсам, только в том случае, если он санкционирует это действие. The enforcer checks the roles of the user defined in the policies. Этот 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. You can refer the docs to get to know more about the working of these policies.
Перед установкой вы можете изменить порты в 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.
В случае любого запроса Вы можете спросить на нашем канале на канале.