Проблемы с простым примером RBAC

Я хочу сделать очень простой пример, чтобы узнать, как использовать авторизацию RBAC в kubernetes. Поэтому я использую пример из документов:

kind: Role
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  namespace: dev
  name: dev-readpods-role
rules:
- apiGroups: [""]
  resources: ["pods"]
  verbs: ["get", "watch", "list"]
---
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: dev-tester-rolebinding
  namespace: dev
subjects:
- kind: User
  name: Tester
  apiGroup: rbac.authorization.k8s.io
roleRef:
  kind: Role
  name: dev-readpods-role
  apiGroup: rbac.authorization.k8s.io

Роль и привязка ролей созданы.

Когда я вхожу в систему с помощью Tester и пытаюсь

kubectl get pods -n dev

я получил

Error from server (Forbidden): pods is forbidden: User "<url>:<port>/oidc/endpoint/OP#Tester" cannot list pods in the namespace "dev"

Я прочитал здесь (Ошибка RBAC в Kubernetes), что API-сервер должен быть запущен с - -режим-авторизации=…,RBAC. Как я могу это проверить? Я где-то читал, что если я побегу

kubectl api-versions | findstr rbac

и найти записи RBAC должен быть активирован. Это правда?

Что я делаю не так? Есть ли хороший способ устранения неполадок?

Спасибо!

P.S. Я запускаю kubernetes внутри IBM Cloud Private.


person Fdot    schedule 24.09.2018    source источник


Ответы (2)


В ICP выглядит обнадеживающим использование Teams (я думаю, собственный термин ICP). Попробуйте начать с него. Но вам нужен сервер LDAP вне ICP. https://www.ibm.com/support/knowledgecenter/en/SSBS6K_2.1.0.3/user_management/admin.html

person Sohtaroh Satoh    schedule 25.09.2018
comment
Спасибо. Я решил это, нажав на консоль администратора. Не очень красиво, но теперь работает. - person Fdot; 25.09.2018

Вам нужно будет определить вызов apiserver, чтобы увидеть, какой флаг --authorization-mode был передан ему. Обычно это содержится в файле модуля systemd или в манифесте модуля. Я не уверен, как IBM Cloud запускает apiserver

person Jordan Liggitt    schedule 24.09.2018
comment
Я нашел другой способ (хороший спрошу у своего сисадмина, как только он вернется). пс-доп | grep apiserver И --authorization-mode=RBAC установлен, но не работает (пример). Что может быть не так? - person Fdot; 24.09.2018
comment
Обновление: когда я вхожу в систему как администратор и запускаю kubectl auth can-i list pods --namespace dev --as Tester, он отвечает да. Когда я вхожу в систему как тестер и запускаю kubectl auth can-i list pods --namespace dev, он отвечает нет. Я веду журнал с помощью kubectl config set-credentials Tester --token=... и kubectl config set-context cluster.local-context --user=Tester --namespace=undefined. Получается, что Тестер в роли — это не то же самое, что Тестер, в который я вхожу? - person Fdot; 24.09.2018