Kubernetes-授予RBAC访问kube dns中的匿名用户的权限

时间:2019-01-11 21:14:05

标签: kubernetes kubectl kube-dns

我有一个带有主节点和工作节点的Kubernetes Cluster设置。 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
}

请让我知道如何向匿名用户授予完全访问权限。我读了https://kubernetes.io/docs/reference/access-authn-authz/rbac/中提到的RBAC 但是无法弄清楚我到底需要做什么。谢谢

1 个答案:

答案 0 :(得分:1)

您可以向匿名用户授予admin特权,但我强烈建议不要这样做。这样,群集外的任何人都可以使用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: ["*"]

希望这会有所帮助