Я играю с Minikube и создал тестового пользователя с сертификатами (mueller). Он установил CN своего сертификата на mueller и O на разработку.
Вот моя роль:
kind: Role
apiVersion: rbac.authorization.k8s.io/v1
metadata:
namespace: development
name: read-development-pods
rules:
- apiGroups: [""]
resources: ["pods"]
verbs: ["get", "list", "watch"]
и моя роль:
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: read-development-pods-rb
namespace: development
subjects:
- kind: User
name: mueller
apiGroup: rbac.authorization.k8s.io
roleRef:
kind: Role
name: read-development-pods
apiGroup: rbac.authorization.k8s.io
Также я установил свои сертификаты в файл kubeconfig. Правила работают нормально.
Теперь мой вопрос: могу ли я избавиться от привязки ролей, потому что иметь привязку ролей для каждого пользователя не очень удобно, и я думаю, что где-то читал, что Kubernetes может использовать поле O сертификата пользователя для автоматической привязки к ролям. которые написаны в этом поле.
Всякий раз, когда вы успешно подтверждаете объект объекта в рамках одного из стратегии аутентификации K8s в Kubernetes API, типичный запрос может состоять из некоторых свойств атрибут, которые определяют способ авторизации посетителя кластера с помощью одного из конкретных модули.
Согласно официальному Kubernetes документация:
As of Kubernetes 1.4, client certificates can also indicate a user’s group memberships using the certificate’s organization fields. To include multiple group memberships for a user, include multiple organization fields in the certificate.
For example, using the openssl command line tool to generate a certificate signing request:
openssl req -new -key jbeda.pem -out jbeda-csr.pem -subj "/CN=jbeda/O=app1/O=app2"
Вы можете использовать определенную группу, к которой назначен пользователь, и объявить эту группу в определении RoleBinding
.
конечно, но могу ли я избавиться от RoleBinding и позволить kubernetes использовать O-поле как группы и автоматически привязывать пользователя к этой группе?