Облако Google: случайно удалил учетную запись службы по умолчанию, где разрешение "projects.serviceAccounts.undelete"? - PullRequest
0 голосов
/ 06 апреля 2020

У меня есть роль владельца всего проекта. Я случайно удалил учетную запись службы по умолчанию и теперь не могу запустить ни один экземпляр виртуальной машины.

Я узнал, что могу восстановить учетную запись службы с помощью команды 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", но оба дают мне следующую ошибку:

PERMISSION_DENIED: Permission iam.serviceAccounts.undelete is required to perform this operation on service account

Я нигде не могу найти разрешение iam.serviceAccounts.undelete. Роль владельца (которая у меня есть) имеет все остальные разрешения iam.serviceAccounts (создание, удаление, обновление ...), но не это.

Как выполнить эту команду?

Редактировать: Мое плохое, я все время использовал неправильный идентификатор учетной записи службы, я пропустил последний ди git, когда я сделал копирование / вставку ... Тем не менее сообщение об ошибке странно.

1 Ответ

0 голосов
/ 06 апреля 2020

ОК, у меня сработало следующее:

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}

выход:

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 по умолчанию, думая, что она может вести себя по-другому, но это Также восстанавливается:

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 с помощью средства отслеживания проблем Google, поскольку, как представляется, нет способа (!?) перечислить удаленные учетные записи служб, чтобы найти уникальный идентификатор после удаление учетной записи.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...