Что делает разрешение 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. Итак, план был такой:
- Посмотрите, какой HTTP-глагол
update
разрешение приравнивается к. - Перейдите по ссылке и найдите пример использования этой HTTP-команды в развертывании.
- Проверить
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, которая есть в вашем кластере.