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