【问题标题】:Kubernetes admin segregationKubernetes 管理员隔离
【发布时间】:2019-07-01 17:42:18
【问题描述】:

大多数 kubernetes 操作员都需要能够创建集群角色、集群角色绑定和 crd。

我想要一个适当的 rbac 隔离,并且我想避免将部署服务帐户直接作为管理员。

但如果我只给它集群角色编辑权限,似乎它允许它把自己放在最后。

处理这个问题的正确方法是什么? (如果有的话)。

【问题讨论】:

  • 您可以拥有命名空间和服务帐户,它们只能访问您想要的特定资源和 apiGroups。

标签: kubernetes kubernetes-operator


【解决方案1】:

您可以拥有命名空间,并拥有只能访问您想要的特定资源和 apiGroups 的服务帐户。

apiVersion: v1
kind: ServiceAccount
metadata:
  name: gitlab-tez-dev # account name
  namespace: tez-dev #namespace

---
kind: Role
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
  name: tez-dev-full-access #role
  namespace: tez-dev
rules:
  - apiGroups: ["", "extensions", "apps"]
    resources: ["deployments", "replicasets", "pods", "services"] #resources to which permissions are granted
    verbs: ["*"] # what actions are allowed
---
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
  name: tez-dev-view
  namespace: tez-dev
subjects:
  - kind: ServiceAccount
    name: gitlab-tez-dev
    namespace: tez-dev
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: Role
  name: tez-dev-full-access

因此,上述角色没有集群访问权限,如果仅限于定义的命名空间以及指定的特定资源和操作,则它的访问权限。

然后您可以使用它在定义的命名空间中进行部署。

【讨论】:

  • 我知道 :),我担心的是,对于像大使这样的东西,我需要创建不在命名空间范围内的集群角色和集群角色绑定..
  • 您在问题中没有提到这一点。像大使这样的东西需要集群角色绑定,因为它跨越命名空间。而且我认为没有任何办法解决这个问题。如果我错了,其他人可能会纠正我。
【解决方案2】:

你有没有看到 prometheus-operator 的情况是如何完成的?
它避免为部署服务帐户授予完整的管理员权限,尤其是让它控制对“rbac.authorization.k8s.io”API 组中的角色或集群角色资源执行“创建/绑定”操作的权限。
我认为您可以将其用作一个很好的参考方案,为运行的 App 和 App-Operator 设置单独的 RBAC 规则。

【讨论】:

    猜你喜欢
    • 2020-06-05
    • 1970-01-01
    • 2017-09-23
    • 1970-01-01
    • 2021-09-19
    • 1970-01-01
    • 2018-06-18
    • 2022-06-14
    • 2018-08-15
    相关资源
    最近更新 更多