Google cloud storage 地面军事系统从GKE吊舱内部进行写访问

Google cloud storage 地面军事系统从GKE吊舱内部进行写访问,google-cloud-storage,google-kubernetes-engine,Google Cloud Storage,Google Kubernetes Engine,我无法从GKE吊舱中获得对GCS存储桶的写访问权限 我有一个GKE吊舱在运行。我没有更改有关服务帐户的任何k8s配置。我让docker exec进入pod并安装了gcloud/gsutilgcloud auth list显示1234-compute@developer.gserviceaccount.com进入在GCS中,我添加了与存储管理员、存储遗留存储桶所有者、存储对象创建者相同的帐户(即,我刚刚尝试了一些东西)。我能够运行gsutil ls gs://bucket。但是,当运行gsutil

我无法从GKE吊舱中获得对GCS存储桶的写访问权限

我有一个GKE吊舱在运行。我没有更改有关服务帐户的任何k8s配置。我让docker exec进入pod并安装了gcloud/gsutil
gcloud auth list
显示1234-compute@developer.gserviceaccount.com进入在GCS中,我添加了与存储管理员、存储遗留存储桶所有者、存储对象创建者相同的帐户(即,我刚刚尝试了一些东西)。我能够运行
gsutil ls gs://bucket
。但是,当运行
gsutil cp文件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作为bucket的创建者和所有者,没有任何变化。我可以从我的dev机器上很好地写入bucket

当我从另一台机器上运行
gsutil acl get gs://bucket
时,它会打印与pod内
gcloud auth list
输出相同的所有者地址


要允许pod写入存储桶,我需要什么特殊的方法?

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

  • 征求
  • 设置
    GOOGLE\u应用程序\u凭据
    ,如中所述

  • 您需要为集群设置权限(如果是地形,则为特定节点设置更好的权限):


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

        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",
        ]