Skip to main content

Безопасность & API

Безопасность

По умолчанию аутентификация на основе сертификата, но поддерживаются внешние источники. 

Аутентификация на основе сертификата.

Файл ~/.kube/config Блоки файла: 

  • Clusters - список кластеров
  • Users - пользователи
  • Contexts - объединение пользователя и кластера
  • Current-context

Авторизация RBAC (пользователь - действие - ресурс). По умолчанию запрещено все что не разрешено. Роли определяют правила, RoleBindings определяют принадлежность пользователей к ролям. Пример настройки ролей: 

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: 

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

Полный список API ресурсов: 

kubectl api-resources --sort-by name -o wide

Можно использовать звездочку. 

Все роли используются только в контексте namespace!

Кластерные роли и привязки

ClusterRoleBindings используется для создания шаблонов ролей и привязки их к конкретным ролям. 

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole <<==== Cluster-scoped role
metadata:
  name: read-deployments
rules:
- verbs: ["get", "watch", "list"]
  apiGroups: ["apps"]
  resources: ["deployments"]

Основные команды

Параметр Описание
 kubectl describe clusterrole role_name Описание роли
kubectl get clusterrolebindings | grep role_name Список пользователей с такой ролью
kubectl describe clusterrolebindings role_name Информация по сопоставлению