首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Google :无意中删除了默认服务帐户,"projects.serviceAccounts.undelete“权限在哪里?

Google :无意中删除了默认服务帐户,"projects.serviceAccounts.undelete“权限在哪里?
EN

Stack Overflow用户
提问于 2020-04-06 13:59:36
回答 2查看 1.8K关注 0票数 1

我在整个项目中都有业主的角色。我意外地删除了一个默认服务帐户,现在我无法启动任何VM实例。

我了解到可以使用gcloud alpha iam service-accounts undelete <ID>命令或类似的curl命令curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" "https://iam.googleapis.com/v1/projects/<project_id>/serviceAccounts/<ID>:undelete"取消删除服务帐户,但两者都给出了以下错误:

代码语言:javascript
复制
PERMISSION_DENIED: Permission iam.serviceAccounts.undelete is required to perform this operation on service account

我在任何地方都找不到iam.serviceAccounts.undelete许可。所有者角色(我拥有)具有所有其他iam.serviceAccounts权限(创建、删除、更新.)但这次不行。

我怎么能运行这个命令?

编辑:我错了,我一直在使用错误的serviceAccount ID,当我复制/粘贴时,我错过了最后一个数字.但是,错误信息仍然很奇怪。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-04-06 16:07:11

好吧,以下几点对我来说是有效的:

代码语言:javascript
复制
gcloud projects create ${PROJECT}
gcloud iam service-accounts create ${ROBOT} --project=${PROJECT}

ID=$(\
  gcloud iam service-accounts describe \
  ${ROBOT}@${PROJECT}.iam.gserviceaccount.com \
  --project=${PROJECT} \
  --format="value(uniqueId)") && echo ${ID}

gcloud iam service-accounts delete ${ROBOT}@${PROJECT}.iam.gserviceaccount.com \
--project=${PROJECT}

gcloud alpha iam service-accounts undelete ${ID} --project=${PROJECT}

产量:

代码语言:javascript
复制
restoredAccount:
  email: ${ROBOT}@${PROJECT}.iam.gserviceaccount.com
  etag: ...
  name: projects/${PROJECT}/serviceAccounts/${ROBOT}@${PROJECT}.iam.gserviceaccount.com
  oauth2ClientId: '${ID}'
  projectId: ${PROJECT}
  uniqueId: '${ID}'

我也在默认的Compute Engine帐户上尝试了这一点,认为这可能会有不同的行为,但它也会删除:

代码语言:javascript
复制
NUM=$(gcloud projects describe ${PROJECT} \
--format="value(projectNumber)")

ID=$(\
  gcloud iam service-accounts describe \
  ${NUM}-compute@developer.gserviceaccount.com \
  --project=${PROJECT} \
  --format="value(uniqueId)") && echo ${ID}

gcloud iam service-accounts delete ${NUM}-compute@developer.gserviceaccount.com \
--project=${PROJECT}

gcloud alpha iam service-accounts undelete ${ID} --project=${PROJECT}

向谷歌的问题追踪者提交了一份FR文件,因为看起来没有办法(!?)若要枚举已删除的服务帐户,请在删除帐户后查找uniqueId。

票数 4
EN

Stack Overflow用户

发布于 2020-06-02 06:18:42

在@halfer的回答上展开,您可以通过查看活动日志来找到已删除的唯一id。利用时间应该缩小指数。查找Delete service account,然后将其显示为${IAM account} deleted ${unique id}

链接:https://console.cloud.google.com/home/activity?project=${project}

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61061542

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档