Выдал права через AuthorizationRule, а kubectl всё равно отвечает Forbidden

Viewed 28

Создал AuthorizationRule в своём пространстве имён, в subjects указал kind: User и имя ресурса User. Пользователь всё равно получает Forbidden.

1 Answers

В subjects[].name для kind: User указывают email пользователя в нижнем регистре, как в токене, а не metadata.name ресурса User. Проверить:

d8 k auth whoami                                                      # под пользователем
d8 k auth can-i list pods -n <ns> --as=<email>                        # под админом
d8 k auth can-i list pods -n <ns> --as=<email> --as-group=<группа>    # если права через группу

То же для Project: в spec.parameters.administrators для subject: User в name указывается email, для subject: Group имя группы.

Ещё три момента:

  • ClusterAuthorizationRule в CE выдаёт права на весь кластер: ограничения namespaceSelector и limitNamespaces в CE недоступны. Для прав в одном пространстве имён используйте AuthorizationRule.
  • Права из нескольких правил (по email и по группам) суммируются, поэтому лишнее правило с высоким accessLevel перекроет более узкие.
  • Для групп проверьте, что пользователь в них действительно состоит: группы видны в логе dex при входе (login successful ... groups).

Подробнее в документации: кастомные ресурсы модуля user-authz.

Related