小编Mat*_*son的帖子

Google Cloud容器引擎(GKE)上的IAM和RBAC冲突

上下文

通过Google Cloud IAM功能管理对Google Cloud(GKE)kubernetes群集的访问;

  1. 管理员邀请新用户(使用他们的Google帐户/登录信息)并为其分配角色.

    下面的示例角色是"Container Engine Viewer",它允许用户访问kubernetes集群并运行所有"视图"操作.

  2. 用户可以gcloud auth login在其本地计算机上使用,然后gcloud container clusters get-credentials对Google IAM进行身份验证,并让该gcloud工具将其写入kubernetes配置文件,准备使用群集.

  3. 然后,用户可以使用它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

7
推荐指数
1
解决办法
1192
查看次数

使用Google Cloud Endpoints进行机器到机器身份验证

CONTEXT

使用Google Cloud Endpoints(Python)创建了一个API,许多低功耗设备将使用这些API获取/发布数据.

与API的唯一通信将来自这些自定义设备(我拥有通信的两端).

研究

查看身份验证,希望它就像使用SSL/TLS客户端证书一样简单:

  • 无论如何,每个远程设备都将拥有由单个项目CA签名的客户端证书.
  • Google云终端要求使用SSL.

但是,似乎只支持oauth2; 我正在寻找一种"干净"的方式来实现"手动"身份验证,理想情况下利用客户端设备上已有的客户端SSL证书.

我已经调查了创建"服务"oauth2帐户,但是因为我想要防止欺骗另一台设备的设备(一组所有的凭据都是不可接受的),我需要为每个客户端设备生成一个服务帐户,这将是在API端保持庞大和可怕.

似乎我迫不及待需要在我的代码中为每种API方法添加一层身份验证,这在某种程度上忽略了利用Google云终端服务的重点.

问题......最后

  1. 有没有人有经验验证"手动关闭"机器到大规模机器设备对谷歌的云端点?

  2. 有没有人知道在Oceuth2认证过程中使用客户端证书的方式是否会得到GCE支持的方式?

  3. 根据POST/GET标头中的一些加密数据,我唯一的选择是在API方法中进行自定义身份验证.(或者只是转向使用Apache/NGINX和client-cert auth托管API?)

问候,马特

authentication ssl google-app-engine client-certificates google-cloud-endpoints

2
推荐指数
1
解决办法
785
查看次数