Что делает разрешение RBAC Kubernetes "ОБНОВЛЕНИЕ"?

Я не могу найти подробную таблицу того, что делают все глаголы Kubernetes RBAC. Единственный ресурс, я вижу людей, рекомендуя это это один, который является крайне недостаточным.

Итак, я работал над этим экспериментально.

Большинство из них пока довольно просты, за исключением UPDATE. Кажется, это не может сделать того, чего я ожидал.

Разрешения, которые я дал своему псевдониму: [ GET, UPDATE] на [ deployments] в default пространство имен.

Вещи, которые я пробовал:

  • kubectl set image deployment/hello-node echoserver=digitalocean/flask-helloworld --as user
  • kubectl edit deploy hello-node --as user
  • kubectl apply -f hello-node.yaml --as eks-user

Все это не удалось с ошибкой: deployments.apps "hello-node" is forbidden: User "user" cannot patch resource "deployments" in API group "apps" in the namespace "default"

Затем я попробовал несколько команд развертывания, например:

  • k rollout undo deploy hello-node --as user

Но они потерпели неудачу, потому что у меня не было доступа к набору реплик.


TL; DR : в чем смысл Kubernetes RBAC update глагол?

Если на то пошло, есть ли у кого-нибудь более подробный список всех глаголов RBAC?

2 ответа

После этого я обратился к документации Kubernetes REST API, в которой есть длинный список всех вызовов HTTP API, которые вы можете выполнять на REST-сервере.

Я думал, что это поможет, потому что одна (1) доступная таблица, описывающая, что могут делать разные глаголы, делала это, сравнивая их с глаголами HTTP. Итак, план был такой:

  1. Посмотрите, какой HTTP-глагол update разрешение приравнивается к.
  2. Перейдите по ссылке и найдите пример использования этой HTTP-команды в развертывании.
  3. Проверить kubectl эквивалент.

Так.

Какой HTTP-глагол соответствует update разрешение?

PUT.

Пример использования PUT для развертываний?

Заменить масштаб: заменить масштаб указанного развертывания

HTTP-запрос PUT /apis/apps/v1/namespaces/{namespace}/deployments/{name}/scale

Что эквивалент kubectl команда?

Мы масштабируем развертывание, поэтому я скажу:

       kubectl scale deployment hello-node --replicas=2

Могу я запустить эту команду?

Я расширил свои права на deployment/scale сначала, а потом запустил.

       Error from server (Forbidden): deployments.apps "hello-node" is forbidden: User "user" cannot patch resource "deployments/scale" in API group "apps" in the namespace "default"

Хорошо. Это также требует patch разрешения, казалось бы.

Несмотря на то, что используется HTTP-глагол PUT согласно документации API, и PUT эквивалентно update согласно одному (1) источнику любой информации об этих глаголах RBAC.

Так или иначе.

Мой вывод: похоже, что update действительно бесполезен, по крайней мере, для развертываний.

Сначала установка RBAC казалась многообещающей, но, честно говоря, она начинает терять свой блеск, поскольку я обнаруживаю все больше и больше крайних случаев и недокументированных загадок. Разрешения на доступ кажутся самым худшим, о чем нужно говорить нечетко, иначе ваша безопасность оказывается больше из-за неизвестности, чем из-за уверенности.

Вы можете получить дамп «разрешенных/поддерживаемых» глаголов, используя этот плагин krew.rbac-tool

      # Generate a ClusterRole with all the available permissions for core and apps api groups
$ kubectl rbac-tool show  --for-groups=,apps

Хотя он не расскажет вам точно о семантике каждого глагола, он даст вам представление о вселенной разрешений RBAC, которая есть в вашем кластере.

Другие вопросы по тегам