3

在我的本地 macOS 上,以下命令运行良好:

$ gcloud source repos clone myrepo --project=myproject

(虽然我不确定它是否有效,因为之前我遵循了该~/.gitcookies程序)

但是当我在 CE 上这样做时:

$ gcloud source repos clone myrepo --project=myproject
ERROR: (gcloud.source.repos.clone) PERMISSION_DENIED: Request had insufficient authentication scopes.

$ gcloud source repos list
ERROR: (gcloud.source.repos.list) User [<digits>-compute@developer.gserviceaccount.com] does not have permission to access project [<myproject>] (or it may not exist): Request had insufficient authentication scopes.

$ gcloud auth list
                  Credentialed Accounts
ACTIVE  ACCOUNT
*       <digits>-compute@developer.gserviceaccount.com

在 IAM 选项卡中,我看到此服务帐户具有“对所有资源的编辑权限”,但它没有帮助。即使我添加角色源存储库读+写。

UPD:我也找不到.clone角色选项卡中的角色:

在此处输入图像描述

$ gcloud help source repos

COMMANDS
    COMMAND is one of the following:

     clone
        Clone a cloud source repository.
     create
        Create a cloud source repository.
     delete
        Delete a cloud source repository.
     describe
        Describe a cloud source repository.
     get-iam-policy
        Get the IAM policy for the named cloud source repository.
     list
        List the repositories the currently active project.
     set-iam-policy
        Set the IAM policy for the named repository.

但它可能包含在.get,所以Reader我已经尝试过:

在此处输入图像描述

UPD2:sudo /usr/local/share/google/google-cloud-sdk/bin/gcloud components update没有帮助。

我现在想象的唯一两个选择是编辑

在此处输入图像描述

(这是我在互联网上发现的唯一一个似乎是解决方案的东西,但该博客文章是用某种东方语言编写的,所以我不确定)但它需要 VM 停止,这是不可接受的。

或者伪造另一个服务帐户,但我不确定在gcloudCLI 中切换它不会破坏该机器上运行的其他应用程序。或者也许我在克隆 repo 时只能使用它一次,它会坚持下去?

4

2 回答 2

1

您可以Full Access to All Cloud APIs从实例设置启用。您需要先停止 VM。只需单击实例名称,按停止,然后等待,一旦停止,按编辑并检查 API 访问的适当设置。然后启动实例。

于 2020-04-07T19:38:07.070 回答
0

如果您使用的是 Google Compute Engine 实例的服务帐户,如您在此处阅读的 [1],您需要将 Cloud Source Repositories 的访问范围授予 Full 或 Read/Write。为此,您必须停止实例。

如果您不想停止实例,您可以创建一个新的服务帐户并使用以下命令激活服务帐户:

$ gcloud auth activate-service-account --key-file=[KEY.JSON]

和这个开始使用 gcloud 工具的新服务帐户:

$ gcloud初始化

如果您在此新服务帐户中使用角色编辑器,则会出现一个已知问题,因为角色编辑器没有 source.repos.create 权限。

$ gcloud iam 角色描述角色/编辑器 | grep "source.repos"

  • 源.repos.get
  • source.repos.getIamPolicy
  • 源.repos.list
  • 源.repos.update

作为一种解决方法,为了创建云源存储库,您需要具有以下角色:“roles/source.admin”,您可以在此处阅读 [2]:“提供创建、更新、删除、列出、克隆的权限,获取和浏览存储库。还提供读取和更改 IAM 策略的权限。”

在这里[3],您可以跟踪此问题的状态,但请记住,没有 ETA 或保证可以修复。

[1] https://cloud.google.com/compute/docs/access/service-accounts#accesscopesiam

[2] https://cloud.google.com/iam/docs/understanding-roles#source_repository_roles

[3] https://issuetracker.google.com/80329938

于 2018-05-18T15:23:23.363 回答