我有一些容器将在其中运行用户代码。为了加强安全性,我想阻止他们通过服务帐户机制访问kubernetes api,但不想全局关闭它。文档说您可以切换服务帐户名称,但只能切换到另一个有效名称。有没有我错过的替代方案?您可以限制帐户具有 0 权限吗?你能用另一个空的卷来超载吗?还有其他想法吗?
最简单的破解方法是在 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 示例的地方)。
在 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/
| 归档时间: |
|
| 查看次数: |
1376 次 |
| 最近记录: |