2016-07-22 95 views
3

我有一些容器将运行在用户代码中。为了加强安全性,我想阻止他们通过服务帐户机制访问kubernetes api,但不想在全球范围内关闭它。该文件说您可以切换服务帐户名称,但只能切换到另一个有效的名称。是否有我错过的替代品?你可以限制帐户有0个权限吗?你可以用另外一个空的空间超过音量吗?任何其他想法?容器禁用服务帐户

回答

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用户完整的读/写访问)等的授权模式下运行,并有选择地将权限授予特定的服务帐户或命名空间