我有一些容器将运行在用户代码中。为了加强安全性,我想阻止他们通过服务帐户机制访问kubernetes api,但不想在全球范围内关闭它。该文件说您可以切换服务帐户名称,但只能切换到另一个有效的名称。是否有我错过的替代品?你可以限制帐户有0个权限吗?你可以用另外一个空的空间超过音量吗?任何其他想法?容器禁用服务帐户
Q
容器禁用服务帐户
3
A
回答
3
最简单的方法是将一个emptyDir安装在serviceAccount密钥已装载的位置上。喜欢的东西:
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 Issue #16779更多的讨论(而这也正是我偷了emptyDir例子)。
2
服务帐户只对API进行身份验证,它们本身不具有执行任何读取或写入API操作的权限。
如果你想保护您的集群,比AlwaysAllow(可提供任何身份验证的API用户完整的读/写访问)等的授权模式下运行,并有选择地将权限授予特定的服务帐户或命名空间
2
在Kubernetes 1.6+,您可以禁用服务帐户安装在吊舱:
apiVersion: v1
kind: Pod
metadata:
name: my-pod
spec:
automountServiceAccountToken: false
...
见https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/