Kubernetes 容器禁用服务帐户

Kubernetes 容器禁用服务帐户,kubernetes,Kubernetes,我有一些容器将在用户代码中运行。为了加强安全性,我想阻止他们通过服务帐户机制访问kubernetes api,但不想全局关闭它。文档中说,您可以切换服务帐户名,但只能切换到另一个有效名称。有我错过的选择吗?您可以将帐户限制为具有0权限吗?你能用另一个空的卷过度装载这个卷吗?还有其他想法吗?最简单的破解方法是在可能挂载serviceAccount secret的位置上挂载一个emptyDir。比如: containers: - name: running-user-code image: so

我有一些容器将在用户代码中运行。为了加强安全性,我想阻止他们通过服务帐户机制访问kubernetes api,但不想全局关闭它。文档中说,您可以切换服务帐户名,但只能切换到另一个有效名称。有我错过的选择吗?您可以将帐户限制为具有0权限吗?你能用另一个空的卷过度装载这个卷吗?还有其他想法吗?

最简单的破解方法是在可能挂载serviceAccount secret的位置上挂载一个emptyDir。比如:

containers:
- name: running-user-code
  image: something-i-dont-trust
  volumeMounts:
  - mountPath: /var/run/secrets/kubernetes.io/serviceaccount
    name: no-api-access-please
    readOnly: true
volumes:
- name: no-api-access-please
  emptyDir: {}

Kubernetes中有更多关于潜在解决方案的讨论(这就是我偷取emptyDir示例的地方)。

服务帐户只对API进行身份验证,它们本身没有执行任何读或写API操作的授权


如果要保护群集安全,请使用AlwaysAllow以外的授权模式运行(该模式为任何经过身份验证的API用户提供完整的读/写访问权限),并有选择地向Kubernetes 1.6+中的某些服务帐户或命名空间授予权限,您可以禁用Pod上的服务帐户装载:

apiVersion: v1
kind: Pod
metadata:
  name: my-pod
spec:
  automountServiceAccountToken: false
  ...