【问题标题】:How to change K8S default service account permissions?如何更改 K8S 默认服务帐号权限?
【发布时间】:2021-06-29 13:07:40
【问题描述】:

我的团队最近发现 default 服务帐户,由 K8S 管理并默认关联到 pod,在集群中具有完整的读写权限。我们可以列出正在运行的 pod 中的秘密,创建新的 pod....

我们觉得这很奇怪,因为我们认为default 服务帐户没有任何权限,甚至只是读取权限。因此,我们决定在集群中搜索与该服务帐户关联的角色绑定或集群角色绑定,但找不到。

在 K8S 集群中,default 服务帐户是否没有与之关联的基本角色绑定?为什么我们没有?如果我们没有任何权限,为什么服务帐户对集群拥有完全权限,而不是根本没有?最后,我们如何修改它使其在集群中没有权限?

明确一点:我们的集群中有多个命名空间,每个命名空间都有自己的default 服务帐户。但是,它们都没有与之关联的任何角色绑定,并且它们都具有完整的集群权限。

【问题讨论】:

  • 我有几个问题:1)根本没有RoleBindings或ClusterRoleBindings? 2) 您是使用托管 Kubernetes 服务还是自己安装了集群?
  • 1) 我们有 4 个跨所有命名空间的 RoleBindings 和 13 个 ClusterRoleBindings,它们都是由 K8S、我们安装的工具以及项目中以前的人手动创建的其他工具创建的。虽然没有与默认帐户相关联 2)它是我们自己的集群。它是使用 kops 设置的
  • 跟进问题 n°2:创建集群时是否启用了 RBAC 支持?默认情况下,kops 不启用 RBAC。禁用 RBAC 后,所有服务帐户都拥有不受限制的权限。
  • 是的,我们没有。我通过了kube-api-server,授权模式是AlwaysAllow。感谢您的帮助!

标签: kubernetes rbac


【解决方案1】:

显然,在默认情况下,kops 设置集群的 K8S API 服务器授权模式设置为AlwaysAllow,这意味着任何请求,只要成功验证,就具有全局管理员权限。

为了解决这个问题,我们不得不将授权模式更改为RBAC 并手动调整权限。

感谢@ArthurBusser指出!

【讨论】:

    【解决方案2】:

    您只需查看您的 RoleBindings/ClusterRoleBindings。可能某处存在默认 SA。

    遗憾的是没有内置的解决方案来搜索用户的 ClusterRoles,但您可以使用以下脚本

    function getRoles() {
        local kind="${1}"
        local name="${2}"
        local namespace="${3:-}"
    
        kubectl get clusterrolebinding -o json | jq -r "
          .items[]
          |
          select(
            .subjects[]?
            |
            select(
                .kind == \"${kind}\"
                and
                .name == \"${name}\"
                and
                (if .namespace then .namespace else \"\" end) == \"${namespace}\"
            )
          )
          |
          (.roleRef.kind + \"/\" + .roleRef.name)
        "
    }
    
    $ getRoles Group system:authenticated
    ClusterRole/system:basic-user
    ClusterRole/system:discovery
    
    $ getRoles ServiceAccount attachdetach-controller kube-system
    ClusterRole/system:controller:attachdetach-controller
    

    【讨论】:

    • 我已经做到了。现有 RoleBindings 或 ClusterRoleBindings 中没有一个与任何默认服务帐户相关联。有没有其他方法可以定义这些权限?
    猜你喜欢
    • 2020-11-03
    • 2019-09-07
    • 2019-02-13
    • 2012-10-20
    • 2020-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多