# Безопасность **Авторизация и аутентификация** По умолчанию аутентификация на основе сертификата, но поддерживаются внешние источники. Аутентификация на основе сертификата. Авторизация RBAC (пользователь - действие - ресурс). По умолчанию запрещено все что не разрешено. Роли определяют правила, RoleBindings определяют принадлежность пользователей к ролям. Пример настройки ролей: ```yaml apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: namespace: shield name: read-deployments rules: - verbs: ["get", "watch", "list"] <<==== Allowed actions apiGroups: ["apps"] <<==== on resources resources: ["deployments"] <<==== of this type ``` Пример RoleBinding: ```yaml apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: read-deployments namespace: shield subjects: - kind: User name: sky <<==== Name of the authenticated user apiGroup: rbac.authorization.k8s.io roleRef: kind: Role name: read-deployments <<==== This is the Role to bind to the user apiGroup: rbac.authorization.k8s.io ``` Свойства правил роли: verbs \["get", "watch", "list", "create", "update", "patch", "delete"\] ApiGroups (в пределах namespace):
apiGroup | Ресурс |
"" | pods, secrets |
“storage.k8s.io” | storageclass |
“apps” | deployments |
Команда | **Доп. параметры** | Описание |
kubectl get clusterroles.rbac.authorization.k8s.io --all-namespaces | Список пользователей | |
kubectl config view | Показать текущую конфигурацию (.kube/config) | |
kubectl config current-context | Показать текущий активный контекст | |
kubectl config get-contexts | Список всех контекстов | |
kubectl config use-context cont\_name | Переключиться на контекст cont\_name | |
kubectl config set-cluster clast\_name | Добавить/изменить кластер ``` kubectl config set-cluster my-new-cluster \ --server=https://10.0.0.1:6443 \ --certificate-authority=./ca.crt ``` | |
kubectl config set-credentials | Добавить/изменить учетные данные пользователя ``` kubectl config set-credentials sergey \ --client-certificate=/root/users/sergey/.certs/sergey.crt \ --client-key=/root/users/sergey/.certs/sergey.key \ --embed-certs=true ``` | |
kubectl config set-context cont\_name | --cluster=dev-cluster \\ --user=dev-user \\ --namespace=dev-ns | Создать/изменить контекст |
kubectl config delete-context | Удалить контекст | |
kubectl config delete-cluster | Удалить кластер | |
kubectl config delete-user user\_name | Удалить пользователя | |
kubectl config rename-context | Переименовать контекст |
Параметр | Описание |
kubectl describe clusterrole role\_name | Описание роли |
kubectl get clusterrolebindings | grep role\_name | Список пользователей с такой ролью |
kubectl describe clusterrolebindings role\_name | Информация по сопоставлению |
Аналогично для ролей (clusterrolebindings -> rolebindings) |