从服务帐户中重新获得所有权

时间:2019-12-03 12:27:04

标签: google-sheets gcloud service-accounts

我已将我的一个Google工作表的所有权分配给我正在从事的gcloud项目的服务帐户(这不是一件聪明的事,我知道...)。如何将此工作表的所有权重新分配给我的主要用户帐户?

1 个答案:

答案 0 :(得分:1)

如果您拥有服务帐户的权限(例如,您是GCP项目的所有者),则可以使用命令行工具将其认证为服务帐户并在其中修改权限。

逐步过程(您可能已经完成了其中一些步骤):

  1. Download and install the GCP SDK
curl https://sdk.cloud.google.com | bash
exec -l $SHELL
gcloud init
  1. 在初始化期间,请按照以下步骤与GCP项目的帐户所有者进行身份验证,然后选择相关项目。您可以忽略其余步骤。
  2. Create and download a key for the service account是文件的当前所有者(在此命令中更改服务帐户):
gcloud iam service-accounts keys create key --iam-account service_account_id@project_id.iam.gserviceaccount.com
  1. 缺少SDK以包含Drive范围:
sed -i 's/\(^CLOUDSDK_SCOPES = (\)/\1"https:\/\/www.googleapis.com\/auth\/drive",/' $(dirname $(which gcloud))/../lib/googlecloudsdk/core/config.py
  1. 激活服务帐户(在此命令中更改服务帐户):
gcloud auth activate-service-account service_account_id@project_id.iam.gserviceaccount.com --key-file key
  1. 调用Drive API,以收回所有权(在此命令中更改驱动器文件ID和新的所有者电子邮件地址):
curl -H"Authorization: Bearer $(gcloud auth print-access-token)" https://www.googleapis.com/drive/v3/files/DRIVE_FILE_ID/permissions?transferOwnership=true -d '{"role":"owner","type":"user","emailAddress":"YOUR_EMAIL@example.com"}' -H'content-type:application/json'

完成这些步骤后,您的常规电子邮件帐户应为新所有者。


这是一个非常糟糕的解决方案(黑客攻击SDK等),但是它几乎只有7条bash命令,因此我认为这可能是最快/最简单的,至少在一次性情况下如此。

如果这种情况经常发生(我猜不是),那么真实的脚本可能会更有用。