我正在从一个自动驾驶GKE集群连接到一个AlloyDB集群。我正在部署2个容器(同一个pod),1)容器形式的AlloyDB Auth代理(gcr.io/alloydb-connectors/alloydb-auth-proxy:latest
),2)我的应用正在连接到代理以连接到AlloyDB集群。
我得到403没有alloydb.instances.get
权限错误。我没有指定任何服务帐户到GKE集群或部署,所以它必须使用任何默认值。我已经检查并添加AlloyDB Admin
角色到我的IAM中的每个服务帐户,但它仍然为我抛出403。
所以我猜GKE没有使用IAM中的任何服务帐户。它必须使用其他东西,或者不使用IAM服务帐户?我如何授予我的GKE服务访问其他Google服务的权限?在这种情况下,AlloyDB。
根据AlloyDB,查找凭据所采取的步骤顺序包括使用默认服务帐户。
1条答案
按热度按时间rqmkfv5c1#
默认情况下,您的GKE集群使用Compute Engine默认服务帐户。这是有意义的,因为集群中的节点是“简单”的Compute Engine示例。
使用Autopilot也是一样,建议在创建集群时使用自己的服务账号。
然而,即使有自定义服务帐户,拥有相同的身份也不是理想的,强制执行最小特权原则是一个更好的选择。我建议在GKE上的所有工作负载(自动驾驶或非自动驾驶)中使用Workload Identity Federation,以自定义每个工作负载的使用服务帐户。
这样,您将完全控制服务帐户的使用,并且您将能够向专用服务帐户授予正确的权限。