GKE Kubernetes RBAC привязывает роль по умолчанию к моему ограниченному - PullRequest
0 голосов
/ 03 марта 2019

Я использую GI хочу создать пользовательского пользователя, который имеет доступ только к определенному пространству имен, я использовал этот yaml:

---
apiVersion: v1
kind: ServiceAccount
metadata:
  name: develop-user
  namespace: develop

---
kind: Role
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
  name: develop-user-full-access
  namespace: develop
rules:
- apiGroups: rbac.authorization.k8s.io
  resources:
  - services
  verbs: ["get"]

---
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
  name: develop-user-view
  namespace: develop
subjects:
- kind: ServiceAccount
  name: develop-user
  namespace: develop
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: Role
  name: develop-user-full-access

, поэтому я получаю сертификат и добавляюсь в свою конфигурацию kube после того, как япереключил контекст на эту новую учетную запись службы и выяснил, что у меня все еще есть доступ ко всему: (
Почему это произошло и как это исправить?

my kubeconfig (pastebin copy: https://pastebin.com/s5Nd6Dnn):

apiVersion: v1
clusters:
- cluster:
    certificate-authority-data: %certificate-data%
    server: https://animeheaven.nyah
  name: anime-cluster-develop
contexts:
- context:
    cluster: anime-cluster-develop
    namespace: develop
    user: develop-user
  name: anime-develop
current-context: anime-develop
kind: Config
preferences: {}
users:
- name: develop-user
  user:
    client-key-data: %certdata%
    token: %tokenkey%

Ответы [ 2 ]

0 голосов
/ 11 марта 2019

https://medium.com/uptime-99/making-sense-of-kubernetes-rbac-and-iam-roles-on-gke-914131b01922
https://medium.com/@ManagedKube/kubernetes-rbac-port-forward-4c7eb3951e28

эти две статьи помогли мне наконец-то!Я почти впал в депрессию из-за этих глупостей, благодаря uptime-99 и ManagedKube я это сделал!ууу!

ключ заключается в том, чтобы создать пользователя kubernetes-viewer в gcloud, а затем создать для него роль, вот подсказка!

---
kind: Role
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  namespace: develop
  name: allow-developer-port-forward
rules:
- apiGroups: [""]
  resources: ["pods", "pods/portforward"]
  verbs: ["get", "list", "create"]
---
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: anime-developer-port-access
  namespace: develop
subjects:
- kind: User
  name: ANIMEDEVERLOP@gmail.com
  apiGroup: rbac.authorization.k8s.io
roleRef:
  kind: Role
  name: allow-developer-port-forward
  apiGroup: ""

затем

kubectly применить -f accessconfig.yaml

вот и все!
хорошего дня!

0 голосов
/ 04 марта 2019

Вот хорошая статья о том, как ее настроить: https://jeremievallee.com/2018/05/28/kubernetes-rbac-namespace-user.html.

В целом, ваша конфигурация в порядке, я изменил строку - apiGroups: rbac.authorization.k8s.io, измененную на:

- apiGroups: ["", "extensions", "apps"]

Затем применяются следующие шаги:

  1. Создать develop пространство имен
$ kubectl create namespace develop
Создание RBAC из вашей конфигурации.
$ kubectl apply -f rbac.yaml
Чтение IP-адреса кластера, токена и сертификата CA.
$ kubectl cluster-info
$ kubectl get secret develop-user-token-2wsnb -o jsonpath={.data.token} -n develop | base64 --decode
$ kubectl get secret develop-user-token-2wsnb -o "jsonpath={.data['ca\.crt']}" -n develop
Заполните файл ~/.kube/config (как описано в руководстве ) Измените контекст на develop Пользователь имеет доступ только к службам проверкив пространстве имен develop.
$ kubectl get service my-service -n mynamespace
Error from server (Forbidden): services "my-service" is forbidden: User "system:serviceaccount:develop:develop-user" cannot get services in the namespace "mynamespace"
$ kubectl get service my-service -n develop
hError from server (NotFound): services "my-service" not found
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...