上下文
通过Google Cloud IAM功能管理对Google Cloud(GKE)kubernetes群集的访问;
管理员邀请新用户(使用他们的Google帐户/登录信息)并为其分配角色.
下面的示例角色是"Container Engine Viewer",它允许用户访问kubernetes集群并运行所有"视图"操作.
用户可以gcloud auth login在其本地计算机上使用,然后gcloud container clusters get-credentials对Google IAM进行身份验证,并让该gcloud工具将其写入kubernetes配置文件,准备使用群集.
然后,用户可以使用它kubectl来访问群集.通过上面的例子,读取工作...写入/更改不; 都好!
问题
GKE kubernetes集群的IAM角色非常简单,"Admin,Read/Write,Read".
为了对kubernetes集群进行更细粒度的控制,应在集群中使用Kubernetes RBAC ,允许我将用户限制为单个命名空间,单个API端点,单个操作等.
但是,没有为用户指定IAM角色; 用户无法对群集进行身份验证(RBAC是授权,而不是身份验证).
然而,我可以设置的最低权限IAM角色是"Container Engine Viewer",因此无论我使用Kubernetes RBAC实施的限制如何,我的所有用户仍然具有完全读取权限.
题
有没有人找到一种方法来确保GKE中的所有权限来自RBAC,基本上取消了IAM的权限?
google-compute-engine kubernetes google-kubernetes-engine google-iam kubernetes-security
CONTEXT
使用Google Cloud Endpoints(Python)创建了一个API,许多低功耗设备将使用这些API获取/发布数据.
与API的唯一通信将来自这些自定义设备(我拥有通信的两端).
研究
查看身份验证,希望它就像使用SSL/TLS客户端证书一样简单:
但是,似乎只支持oauth2; 我正在寻找一种"干净"的方式来实现"手动"身份验证,理想情况下利用客户端设备上已有的客户端SSL证书.
我已经调查了创建"服务"oauth2帐户,但是因为我想要防止欺骗另一台设备的设备(一组所有的凭据都是不可接受的),我需要为每个客户端设备生成一个服务帐户,这将是在API端保持庞大和可怕.
似乎我迫不及待需要在我的代码中为每种API方法添加一层身份验证,这在某种程度上忽略了利用Google云终端服务的重点.
问题......最后
有没有人有经验验证"手动关闭"机器到大规模机器设备对谷歌的云端点?
有没有人知道在Oceuth2认证过程中使用客户端证书的方式是否会得到GCE支持的方式?
根据POST/GET标头中的一些加密数据,我唯一的选择是在API方法中进行自定义身份验证.(或者只是转向使用Apache/NGINX和client-cert auth托管API?)
问候,马特
authentication ssl google-app-engine client-certificates google-cloud-endpoints