从服务帐户中重新获得所有权
Retake ownership from service account
我已将我的 google sheet 之一的所有权分配给我正在从事的 gcloud 项目的服务帐户(这不是一件明智的事情,我知道... ).如何将此 sheet 的所有权重新分配给我的主用户帐户?
如果您拥有服务帐户的权限(例如,您是 GCP 项目的所有者),则可以使用命令行工具验证为服务帐户并在那里修改权限。
分步过程(您可能已经完成了其中一些步骤):
curl https://sdk.cloud.google.com | bash
exec -l $SHELL
gcloud init
- 在初始化期间,按照步骤向 GCP 项目的帐户所有者和 select 相关项目进行身份验证。您可以忽略其余步骤。
- 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
- 破解 SDK 以包含驱动器范围:
sed -i 's/\(^CLOUDSDK_SCOPES = (\)/"https:\/\/www.googleapis.com\/auth\/drive",/' $(gcloud info --format 'value(installation.sdk_root)')/lib/googlecloudsdk/core/config.py
- 激活服务帐户(在此命令中更改服务帐户):
gcloud auth activate-service-account service_account_id@project_id.iam.gserviceaccount.com --key-file key
- 调用驱动器 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 命令,所以我认为它可能是 fastest/simplest 个,至少对于一个-关闭情况。
如果这种情况经常发生(我猜不会),那么真实的脚本可能会更有用。
我已将我的 google sheet 之一的所有权分配给我正在从事的 gcloud 项目的服务帐户(这不是一件明智的事情,我知道... ).如何将此 sheet 的所有权重新分配给我的主用户帐户?
如果您拥有服务帐户的权限(例如,您是 GCP 项目的所有者),则可以使用命令行工具验证为服务帐户并在那里修改权限。
分步过程(您可能已经完成了其中一些步骤):
curl https://sdk.cloud.google.com | bash
exec -l $SHELL
gcloud init
- 在初始化期间,按照步骤向 GCP 项目的帐户所有者和 select 相关项目进行身份验证。您可以忽略其余步骤。
- 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
- 破解 SDK 以包含驱动器范围:
sed -i 's/\(^CLOUDSDK_SCOPES = (\)/"https:\/\/www.googleapis.com\/auth\/drive",/' $(gcloud info --format 'value(installation.sdk_root)')/lib/googlecloudsdk/core/config.py
- 激活服务帐户(在此命令中更改服务帐户):
gcloud auth activate-service-account service_account_id@project_id.iam.gserviceaccount.com --key-file key
- 调用驱动器 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 命令,所以我认为它可能是 fastest/simplest 个,至少对于一个-关闭情况。
如果这种情况经常发生(我猜不会),那么真实的脚本可能会更有用。