容器禁用服务帐户

Kev*_*Fox 4 kubernetes

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

CJ *_*len 5

最简单的破解方法是在 serviceAccount 密钥本来要安装的位置上安装一个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: {}
Run Code Online (Sandbox Code Playgroud)

Kubernetes Issue #16779中对潜在的解决方案进行了更多讨论(这就是我从中窃取了 emptyDir 示例的地方)。


Raj*_*ani 5

在 Kubernetes 1.6+ 中,您可以在 Pod 上禁用服务帐户挂载:

apiVersion: v1
kind: Pod
metadata:
  name: my-pod
spec:
  automountServiceAccountToken: false
  ...
Run Code Online (Sandbox Code Playgroud)

请参阅https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/