代码之家  ›  专栏  ›  技术社区  ›  DenCowboy

如何在Kubernetes中使用RBAC

  •  0
  • DenCowboy  · 技术社区  · 6 年前

    我了解RBAC,并且能够使用主题中的规则创建角色,并将它们与用户绑定。

    例如,此角色只能列出pod

    kind: Role
    apiVersion: rbac.authorization.k8s.io/v1beta1
    metadata:
      namespace: development
      name: list-pods
    rules:
    - apiGroups: [""] # "" indicates the core API group
      resources: ["pods"]
      verbs: ["get", "list"]
    

    现在我们为我们拥有的每个环境(dev、staging、prd)使用名称空间。现在,如何向不同名称空间中的用户提供此角色?我必须创建一个clusterRole并将其绑定到一个普通的rolebinding,还是必须编写上面的代码:yaml一次用于dev,一次用于uat,一次用于prd?关于如何处理这些案件有什么规定吗?

    2 回复  |  直到 6 年前
        1
  •  1
  •   mdaniel    6 年前

    现在,如何向不同名称空间中的用户提供此角色?

    如果您希望能够限制列出 Pod s代表那个 Subject 根据 Namespace 基础。例如,您可能不希望人们能够看到 豆荚 kube-system (或假设 internal-security 命名空间)。使用列表功能 豆荚 作为一个例子,s让这很难想象,但是它能够列出,或者查看,或者两者兼而有之, Secret s或 ConfigMap s可能会让这更具体。大概是 主题 可以查看 秘密 s代表他们 拥有 项目——甚至可能不是——但不适用于公司内的其他项目。那种事。

    当一个人想到 exec 变得专横 豆荚 因为这是我能想到的对集群中应用程序的安全性和机密性的最大风险。

    我需要创建一个clusterRole并将其与普通rolebinding绑定吗

    不,有人用 ClusterRoleBinding 为此目的。”“必须”不是正确的问题;这取决于您是否希望将绑定应用于当前的所有命名空间 和未来 .

    或者我必须写上面的话。yaml一次给dev,一次给uat,一次给prd?

    这也取决于那些 Namespaces 风险相同 主题 是谁进入的。

    关于如何处理这些案件有什么规定吗?

    当然不是;集群安全性不是一刀切的。这一切都取决于一个人试图降低的风险类型。

    作为考虑,您没有义务使用RBAC约束:您当然可以创建 ClusterRoleBinding公司 为每一个 主题 cluster-admin ClusterRole 再也没有权限管理了。也没有更多的保障措施,但这就是范围。

        2
  •  1
  •   monis    6 年前

    在您的特定情况下,我将创建具有所需权限的单个集群角色,然后通过角色绑定将其绑定到相关命名空间中的适当主题。