我需要配置GKE节点池从同一项目中的私有GCR仓库中提取的最小权限是多少?

dip*_*ark 5 google-cloud-platform kubernetes google-kubernetes-engine

我正在尝试将我的GKE集群配置为从同一项目中的私有GCR仓库中提取.我没有使用OAuth范围,但已将最小特权服务帐户与默认节点池关联,并为其提供了roles/storage.objectViewer权限.

但是,在尝试访问此图像时,我仍然收到以下信息: Failed to pull image "eu.gcr.io/<project>/<image>": rpc error: code = Unknown desc = Error response from daemon: unauthorized: You don't have the needed permissions to perform this operation, and you may have invalid credentials. To authenticate your request, follow the steps in: https://cloud.google.com/container-registry/docs/advanced-authentication

我是否还需要配置imagePullSecretsroles/storage.objectViewer权限是否足够?

dip*_*ark 5

此问题的根本原因是未在群集实例上设置访问(OAuth)范围,从而阻止了服务帐户按预期工作。

来自有关计算服务帐户的GCP文档:

您必须在实例上设置访问范围以授权访问。

创建虚拟机实例时,不能仅在服务帐户上设置IAM角色并忽略访问范围。服务帐户具有的访问级别由访问范围和IAM角色的组合确定,因此您必须同时配置访问范围和IAM角色,服务帐户才能正常工作。

在GCR访问私有图像时所需的最小范围,可以发现这里与这些范围的意思找到这里。然后,可以按照此处的说明为群集节点创建最低特权服务帐户。

如上所述这里的替代将是唯一的授予https://www.googleapis.com/auth/cloud-platform范围,它通过IAM角色节点服务帐户授权访问所有的云平台服务,然后限制访问群集节点。

通过如上所述配置群集节点,imagePullSecrets不需要从同一项目中的GCR中提取私有映像。

  • 感谢指出有关服务帐户的 GCE 文档!我还遵循了“强化集群的安全性”步骤并在同一问题上被阻止。这个页面对访问范围和服务帐户的组合有点不清楚。 (2认同)