【问题标题】:Kubernetes - dynamic namespaces / securityKubernetes - 动态命名空间/安全
【发布时间】:2018-10-05 15:57:34
【问题描述】:

user1 和 user2 在 K8s 集群中被分配了“admin”角色,他们只能在分配给他们的命名空间内工作。在下面的例子中,分别是ns1和ns2

user1 --> 分配的命名空间 ns1

user2 --> 分配命名空间 ns2

user3 --> 分配了命名空间 ns3 并且还分配了命名空间管理员角色。 命名空间管理员角色 (user3) 应该能够在命名空间 ns3 中创建任何资源以及他在集群中创建的任何新命名空间。这个角色应该能够动态地创建新的命名空间。但是 user3 不应该有权访问不是由用户“user3”创建的 ns1 或 ns2 命名空间。

user3 将动态创建新的命名空间并在这些命名空间中部署工作负载。

这可以解决吗?这类似于 Openshift 的“项目”概念。

【问题讨论】:

    标签: security dynamic kubernetes namespaces


    【解决方案1】:

    是的,您可以限制 user3 仅在命名空间 ns3 中创建/删除资源,使用 Role 将该角色绑定到 user3。

    然后你可以使用ClusterRole 只访问namespaces 资源并允许它访问create, delete, etc

    类似这样的:

    kind: Role
    apiVersion: rbac.authorization.k8s.io/v1
    metadata:
      namespace: my-namespace
      name: user-namespace-role
    rules:
    - apiGroups: [""]
      resources: ["services", "endpoints", "pods"] # etc...
      verbs: ["get", "list", "create"] # etc
    

    然后:

    kubectl create rolebinding user-namespace-binding --role=user-namespace-role --user=user3 --namespace=my-namespace
    

    然后:

    kind: ClusterRole
    apiVersion: rbac.authorization.k8s.io/v1
    metadata:
      name: cluster-role-all-namespaces
    rules:
    - apiGroups: [""]
      resources: ["namespaces"]
      verbs: ["get", "list", "watch", "create", "update", "patch", "delete"] # etc
    

    然后:

    kubectl create clusterrolebinding all-namespaces-binding --clusterrole=cluster-role-all-namespaces --user=user3
    

    对于 user1 和 user2,您可以为其独特的命名空间创建 RoleRoleBinding

    【讨论】:

    • 谢谢。我会试一试。但是,动词:[“get”、“list”、“watch”、“create”、“update”、“patch”、“delete”] # 等也会授予 user3 看到其他命名空间的权限,对吗?例如:user3 可以看到分别为用户 1 和用户 2 创建和专用的命名空间 ns1 和 ns2
    • 是的,应该可以。 # etc 是注释顺便说一句
    【解决方案2】:

    user3 应该能够在命名空间 ns3 中创建任何资源以及他在集群中创建的任何新命名空间。

    要实现动态权限,您需要一个组件在他们创建的命名空间中授予用户 3 权限(这是 openshift 项目 API 处理程序所做的)

    【讨论】:

    • 没错。我正在寻找一个模型来在 vanila kubernetes 中实现 Openshift“项目”的概念。对此有什么想法吗?
    猜你喜欢
    • 2021-05-16
    • 1970-01-01
    • 1970-01-01
    • 2022-01-15
    • 1970-01-01
    • 2012-10-20
    • 1970-01-01
    • 1970-01-01
    • 2017-09-23
    相关资源
    最近更新 更多