Kubernetes - Предоставление доступа RBAC анонимным пользователям в kube dns - PullRequest
0 голосов
/ 12 января 2019

У меня есть настройка кластера Kubernetes с главным и рабочим узлом. Kubectl cluster-info показывает, что kubernetes-master и kube-dns успешно работают.

Я пытаюсь получить доступ к указанному ниже URL-адресу, и поскольку он является внутренним для моей организации, указанный ниже URL-адрес не виден внешнему миру.

https://10.118.3.22:6443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy

Но я получаю сообщение об ошибке ниже при доступе к нему -

{
  "kind": "Status",
  "apiVersion": "v1",
  "metadata": {

  },
  "status": "Failure",
  "message": "services \"kube-dns:dns\" is forbidden: User \"system:anonymous\" cannot get resource \"services/proxy\" in API group \"\" in the namespace \"kube-system\"",
  "reason": "Forbidden",
  "details": {
    "name": "kube-dns:dns",
    "kind": "services"
  },
  "code": 403
}

Пожалуйста, дайте мне знать, как предоставить полный доступ анонимному пользователю. Я прочитал RBAC, упомянутый в https://kubernetes.io/docs/reference/access-authn-authz/rbac/ Но не могу понять, что именно мне нужно сделать. Спасибо

1 Ответ

0 голосов
/ 12 января 2019

Вы можете предоставить права администратора анонимному пользователю, но я настоятельно не рекомендую это делать. Это даст любому, кто находится за пределами кластера, доступ к службам по URL-адресу.

Даже после этого вы решили предоставить весь доступ анонимному пользователю, вы можете сделать это следующим образом:

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: anonymous-role
rules:
- apiGroups: [""]
  resources: ["services/proxy"]
  verbs: ["*"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: anonymous-binding
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: anonymous-role
subjects:
- apiGroup: rbac.authorization.k8s.io
  kind: User
  name: system:anonymous

Это даст анонимный пользователь: прокси для ваших сервисов, а не для всех ресурсов. Если вы хотите это для всех ресурсов, вам нужно предоставить resources: ["*"] в роли anonymous.

Надеюсь, это поможет

...