Режим Kubernetes ABAC не работает

Я нашел несколько человек, которые пытались решить эту проблему, только слегка релевантные сообщения the-kubernetes-api">здесь и здесь но не решает это для меня.

Проблема: я хочу создать пользователя только для чтения для своего кластера, используя политику ABAC. В моем кластере 3 мастера и 3 рабочих, версия 1.4.7 размещена на AWS.

Я отредактировал свои manifests/apiserver.yml так на всех 3-х мастерах (добавил эти 3 строки - в нижней части файла, конечно же, я установил соответствующие пути и т. д.):

  • --token-auth-file=/etc/kubernetes/policy/user-tokens.csv
  • --авторизация-режим = ABAC
  • --authorization-policy-file=/etc/kubernetes/policy/apiusers.yml

мой apiuser.yml выглядит так:

{"apiVersion": "abac.authorization.kubernetes.io/v1beta1", "kind": "Policy", "spec": {"group": "system:authenticated", "readonly": true, "nonResourcePath": "*", "namespace": "*", "resource": "*", "apiGroup": "*"}}

Мои пользователи-token.csv выглядят так:

tdU0ynyO3wG6UAzwWP0DO7wvF2tH8pbH,bob,bob

В моем файле kubeconfig есть это:

users:
- name: bob
  user:
    token: tdU0ynyO3wG6UAzwWP0DO7wvF2tH8pbH

Когда я пытаюсь kubectl get nodes, это терпит неудачу, я могу распечатать вывод с --v=8, если это уместно, но в основном это говорит Forbidden(403). Мне кажется, я упускаю здесь что-то принципиальное, политика действует и блокирует все и всех, хотя она должна разрешать аутентифицированным пользователям права только на чтение.

Любая помощь или предложения будут высоко оценены.


person Naim Salameh    schedule 20.02.2017    source источник


Ответы (1)


группа system:authenticated была добавлена ​​в 1.5

до 1.5 вы можете использовать "user":"*"

person Jordan Liggitt    schedule 20.02.2017
comment
Ах, Джордан, я как раз читал другие ваши посты... удивительно, вот чего мне не хватало. У меня недостаточно кредитов, чтобы проголосовать за вас, но это точно правильное решение для моей конкретной ситуации. - person Naim Salameh; 20.02.2017
comment
еще один вопрос, если я хочу, чтобы другой пользователь был администратором, это было бы: spec: {user: core-admin, nonResourcePath: , пространство имен:, ресурс: , apiGroup:}} ? а затем в моем kubeconfig я бы установил другой контекст для того же кластера (и добавил имя пользователя и т. д.)? или есть лучший способ сделать это? - person Naim Salameh; 20.02.2017
comment
Сам себе ответил.. правильно написал выше, там важно появление объекта политики, т.е. админ должен быть первой строкой. - person Naim Salameh; 20.02.2017