【问题标题】:gcloud 403 permission errors with wrong project错误项目的 gcloud 403 权限错误
【发布时间】:2018-04-02 16:45:27
【问题描述】:

我曾经在一家公司工作,之前使用 gcloud initgcloud auth login 设置了我的 gcloud(我不记得是哪一个)。我们使用的是谷歌容器引擎 (GKE)。

我已经离开公司并被取消了对该项目的权限。

今天,我想为自己设置一个全新的应用引擎,与之前的公司无关。

为什么我无法运行任何命令而不会出现以下错误? gcloud initgcloud auth login 甚至 gcloud --helpgcloud config list 都显示错误。似乎它正在尝试使用gcloud container cluster 登录我以前公司的项目,但我根本没有输入该命令,而是在不同的区域并且对不同的项目感兴趣。我的 gcloud 配置在哪里获取这些默认值?

这是我需要删除我的.config/gcloud 文件夹的情况吗?仅仅登录到不同的项目似乎是一个相当极端的解决方案?

Traceback (most recent call last):
  File "/usr/local/Caskroom/google-cloud-sdk/latest/google-cloud-sdk/lib/gcloud.py", line 65, in <module>
    main()
  File "/usr/local/Caskroom/google-cloud-sdk/latest/google-cloud-sdk/lib/gcloud.py", line 61, in main
    sys.exit(googlecloudsdk.gcloud_main.main())
  File "/usr/local/Caskroom/google-cloud-sdk/latest/google-cloud-sdk/lib/googlecloudsdk/gcloud_main.py", line 130, in main
    gcloud_cli = CreateCLI([])
  File "/usr/local/Caskroom/google-cloud-sdk/latest/google-cloud-sdk/lib/googlecloudsdk/gcloud_main.py", line 119, in CreateCLI
    generated_cli = loader.Generate()
  File "/usr/local/Caskroom/google-cloud-sdk/latest/google-cloud-sdk/lib/googlecloudsdk/calliope/cli.py", line 329, in Generate
    cli = self.__MakeCLI(top_group)
  File "/usr/local/Caskroom/google-cloud-sdk/latest/google-cloud-sdk/lib/googlecloudsdk/calliope/cli.py", line 517, in __MakeCLI
    log.AddFileLogging(self.__logs_dir)
  File "/usr/local/Caskroom/google-cloud-sdk/latest/google-cloud-sdk/lib/googlecloudsdk/core/log.py", line 676, in AddFileLogging
    _log_manager.AddLogsDir(logs_dir=logs_dir)
  File "/usr/local/Caskroom/google-cloud-sdk/latest/google-cloud-sdk/lib/googlecloudsdk/core/log.py", line 365, in AddLogsDir
    self._CleanUpLogs(logs_dir)
  File "/usr/local/Caskroom/google-cloud-sdk/latest/google-cloud-sdk/lib/googlecloudsdk/core/log.py", line 386, in _CleanUpLogs
    self._CleanLogsDir(logs_dir)
  File "/usr/local/Caskroom/google-cloud-sdk/latest/google-cloud-sdk/lib/googlecloudsdk/core/log.py", line 412, in _CleanLogsDir
    os.remove(log_file_path)
OSError: [Errno 13] Permission denied: '/Users/terence/.config/gcloud/logs/2017.07.27/19.07.37.248117.log'

还有日志文件: /Users/terence/.config/gcloud/logs/2017.07.27/19.07.37.248117.log

2017-07-27 19:07:37,252 DEBUG    root            Loaded Command Group: ['gcloud', 'container']
2017-07-27 19:07:37,253 DEBUG    root            Loaded Command Group: ['gcloud', 'container', 'clusters']
2017-07-27 19:07:37,254 DEBUG    root            Loaded Command Group: ['gcloud', 'container', 'clusters', 'get_credentials']
2017-07-27 19:07:37,330 DEBUG    root            Running [gcloud.container.clusters.get-credentials] with arguments: [--project: "REMOVED_PROJECT", --zone: "DIFFERENT_ZONE", NAME: "REMOVED_CLUSTER_NAME"]
2017-07-27 19:07:37,331 INFO     ___FILE_ONLY___ Fetching cluster endpoint and auth data.

2017-07-27 19:07:37,591 DEBUG    root            (gcloud.container.clusters.get-credentials) ResponseError: code=403, message=Required "container.clusters.get" permission for "projects/REMOVED_PROJECT/zones/DIFFERENT_ZONE/clusters/REMOVED_CLUSTER_NAME".
Traceback (most recent call last):
  File "/usr/local/Caskroom/google-cloud-sdk/latest/google-cloud-sdk/lib/googlecloudsdk/calliope/cli.py", line 712, in Execute
    resources = args.calliope_command.Run(cli=self, args=args)
  File "/usr/local/Caskroom/google-cloud-sdk/latest/google-cloud-sdk/lib/googlecloudsdk/calliope/backend.py", line 871, in Run
    resources = command_instance.Run(args)
  File "/usr/local/Caskroom/google-cloud-sdk/latest/google-cloud-sdk/lib/surface/container/clusters/get_credentials.py", line 69, in Run
    cluster = adapter.GetCluster(cluster_ref)
  File "/usr/local/Caskroom/google-cloud-sdk/latest/google-cloud-sdk/lib/googlecloudsdk/api_lib/container/api_adapter.py", line 213, in GetCluster
    raise api_error
HttpException: ResponseError: code=403, message=Required "container.clusters.get" permission for "projects/REMOVED_PROJECT/zones/DIFFERENT_ZONE/clusters/REMOVED_CLUSTER_NAME".
2017-07-27 19:07:37,596 ERROR    root            (gcloud.container.clusters.get-credentials) ResponseError: code=403, message=Required "container.clusters.get" permission for "projects/REMOVED_PROJECT/zones/DIFFERENT_ZONE/clusters/REMOVED_CLUSTER_NAME".

【问题讨论】:

  • 第二次在SO上看到这种问题,莫名其妙,可惜找不到其他问题看看有没有回答。
  • 您已经从控制台创建了一个项目,该项目在控制台中被选中然后您打开外壳?尝试从隐身窗口执行所有这些操作,看看是否会发生同样的事情。只需自行运行 gcloud。
  • 我不得不删除我的.config/gcloud。如果我尝试在 shell 中创建它并不重要。关键是我根本无法在我的 shell 中运行任何 gcloud 命令。
  • 您是否尝试仅删除与旧项目相关的部分 gcloud 文件夹?
  • @Oliver 我没有,但老实说,我为什么要费力找出需要删除的文件。 gcloud 应该明白,如果我的默认帐户的权限是 403,那么它应该允许我执行其他操作,例如选择其他帐户...

标签: google-cloud-platform gcloud


【解决方案1】:

我不得不删除我的.config/gcloud 才能完成这项工作,尽管我不认为这是一个好的“解决方案”。

【讨论】:

  • 如上所述,删除 ./config/gcloud 并再次运行“gcloud init”。这不是最好的解决方案,但有时你只需要核对它。
【解决方案2】:

好的,所以不确定事情是否发生了变化,但遇到了类似的问题。请在对您的配置进行核对之前尝试一下。

gcloud 支持多个帐户,您可以通过运行gcloud auth list 查看哪个帐户处于活动状态。

ACTIVE  ACCOUNT
*        Work-Email@company.com
         Personal-Email@gmail.com

如果你不正确,你可以这样做

$ gcloud config set account Personal-Email@gmail.com

它会设置正确的帐户。再次运行 gcloud auth list 应该会在您的个人上显示 ACTIVE now。

如果您尚未验证您的个人信息,则需要登录。你可以运行gcloud auth login Personal-Email@gmail.com 并从那里跟随流程然后返回到上面。

确保设置 PROJECT_ID 或切换时可能需要的任何内容。

现在从那里我发现您仍然可能没有正确地进行身份验证。我认为为此,您可能需要重新启动终端会话,甚至只需执行 source ~/.bash_profile 就足够了。 (也许我需要这样做来刷新 GOOGLE_APPLICATION_CREDENTIALS 环境变量,但我不确定)。

希望这会有所帮助。核弹前试试这个

【讨论】:

    【解决方案3】:

    重命名/删除 config/gcloud/logs 文件夹并尝试而不是删除 .config/gcloud 文件夹。

    这个解决方案对我有用:)

    【讨论】:

      猜你喜欢
      • 2020-11-23
      • 1970-01-01
      • 1970-01-01
      • 2019-10-01
      • 2018-11-16
      • 1970-01-01
      • 2021-04-06
      • 2016-04-21
      • 2021-06-16
      相关资源
      最近更新 更多