【问题标题】:GCS write access from inside a GKE pod从 GKE pod 内部进行 GCS 写访问
【发布时间】:2017-09-29 21:16:12
【问题描述】:

我无法从 GKE pod 中获得对 GCS 存储桶的写入权限。

我有一个 GKE pod 正在运行。我没有更改任何关于服务帐户的 k8s 配置。我有 docker exec'd 进入 pod 并安装了 gcloud/gsutil。 gcloud auth list 显示 1234-compute@developer.gserviceaccount.com 条目。在 GCS 中,我添加了与存储管理员、存储旧存储桶所有者、存储对象创建者相同的帐户(即,我刚刚尝试了一堆东西)。我可以运行gsutil ls gs://bucket。然而,当运行gsutil cp file gs://bucket 时,它会打印:

AccessDeniedException: 403 Insufficient OAuth2 scope to perform this operation. 
Acceptable scopes: https://www.googleapis.com/auth/cloud-platform

gsutil acl get gs://bucket 打印:

AccessDeniedException: Access denied. Please ensure you have OWNER permission on gs://bucket

我尝试过的其他事情是将 allUsers 和 allAuthenticatedUsers 添加为存储桶的创建者和所有者,没有任何变化。我可以从我的开发机器写入存储桶。

当我在另一台机器上运行 gsutil acl get gs://bucket 时,它会打印与 OWNER 相同的地址作为来自 pod 内的 gcloud auth list 的输出。

我需要什么特殊的酱料才能让 pod 写入存储桶?

【问题讨论】:

    标签: google-cloud-storage google-kubernetes-engine


    【解决方案1】:

    GKE 集群是使用默认权限创建的,只有 GCS 的读取范围。解决方案:

    1. 应用来自Changing Permissions of Google Container Engine Cluster的建议
    2. 按照https://developers.google.com/identity/protocols/application-default-credentials 中的描述设置GOOGLE_APPLICATION_CREDENTIALS

    【讨论】:

      【解决方案2】:

      您需要为集群设置权限(或者在 Terraform 的情况下为特定节点设置更好的权限):

          oauth_scopes = [
            "https://www.googleapis.com/auth/devstorage.read_write", // 'ere we go!
            "https://www.googleapis.com/auth/logging.write",
            "https://www.googleapis.com/auth/monitoring",
            "https://www.googleapis.com/auth/service.management.readonly",
            "https://www.googleapis.com/auth/servicecontrol",
            "https://www.googleapis.com/auth/trace.append",
            "https://www.googleapis.com/auth/compute",
          ]
      

      【讨论】:

        【解决方案3】:

        遇到同样的问题,我必须使用自定义安全配置重新创建一个节点池才能获得该访问权限。 此外,在我的 pod 中,我安装了一个秘密提供的 SA (default-token-XXXXX) 然后,一旦 gcloud 安装在 pod 中(通过 docker 文件),就会像魅力一样工作。 关键是节点池配置和安装 SA。

        【讨论】:

          猜你喜欢
          • 2016-02-25
          • 1970-01-01
          • 1970-01-01
          • 2018-11-16
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-06-26
          • 2022-01-09
          相关资源
          最近更新 更多