【问题标题】:How to disable the use of a default service account by a statefulset/deployments in kubernetes如何通过 kubernetes 中的 statefulset/deployments 禁用默认服务帐户的使用
【发布时间】:2019-03-06 02:44:03
【问题描述】:

我正在为我的应用程序设置一个名称空间,该名称空间中包含有状态集、部署和机密信息。使用 RBAC,我正在定义特定角色并将它们绑定到部署/状态集使用的服务帐户。这按预期工作。

现在,当我尝试通过不为部署分配任何服务帐户来测试机密是否安全时,它仍然会提取机密。命名空间中的默认服务帐户与不应访问机密的视图集群角色绑定。

知道这里发生了什么吗?

提前致谢。

【问题讨论】:

    标签: kubernetes rbac role-based-access-control


    【解决方案1】:

    我相信您需要将RoleBinding 分配给您命名空间中的默认服务帐户。例如:

    kubectl create rolebinding myapp-view-binding --clusterrole=view --serviceaccount=default:default --namespace=default
    

    查看角色应该阻止您阅读机密。

    【讨论】:

    • 您好@Rico 感谢您的回复。我已经在做。将视图角色与我的命名空间的默认服务帐户相关联。但仍然没有运气。 roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: view subjects: - kind: ServiceAccount name: default namespace: my-namespace
    • 您是否正在为您的命名空间使用服务帐户? (my-namespace)
    【解决方案2】:

    现在,当我尝试通过不将任何服务帐户分配给部署来测试机密是否安全时...

    如果您不为部署分配服务帐户,则将使用部署命名空间中的 default 服务帐户。

    ...它仍然揭开秘密

    尝试在 pod 上设置automountServiceAccountToken: false。这将确保服务帐户令牌不会自动挂载。所以像:

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: my-pod
    spec:
      ...
      template:
        ...
        spec:
          serviceAccountName: default
          automountServiceAccountToken: false
    

    【讨论】:

    • 是的,我正在这样做,在容器上,我没有看到安装在 /var/run/../../.. 的秘密,但 pod 仍然能够在相同的命名空间。想知道我是否必须禁用其他任何东西来避免这种情况
    猜你喜欢
    • 2019-03-30
    • 2018-08-08
    • 2020-11-03
    • 1970-01-01
    • 2023-01-19
    • 2021-12-17
    • 2021-06-01
    • 2019-06-09
    • 1970-01-01
    相关资源
    最近更新 更多