Как получить ключ Publi c для учетной записи управляемой службы в облачной платформе Google - PullRequest
0 голосов
/ 29 января 2020

Я использую Google Cloud Scheduler для вызова внешнего приложения. Google Cloud Scheduler использует аутентификацию OID C и использует служебную учетную запись. Я мог получить только закрытый ключ учетной записи службы со страницы консоли пользовательского интерфейса учетных записей служб Google. Как получить publi c этой учетной записи управляемой службы пользователя?

Я нашел ключ publi c этой учетной записи службы, вставив токен Bearer здесь: https://jwt.io/

Но разве это единственный способ получить ключ c служебной учетной записи? Есть ли другой способ получить это? (как библиотеки, и т. д. c)? Есть ли способ получить это из утилит Google, gcloud или консоли Google?

На одном из сайтов было упомянуто, что ключ publi c может быть широко распространен, так что каждый потребитель токена может проверить его целостность. " . Так где же распространяется ключ publi c этой учетной записи службы Google? есть ли сервер / место, где хранятся все ключи учетной записи службы Google publi c?

Также есть возможность встроить ключ publi c как часть токена jwt. Если я получу токен на предъявителя из облачного планировщика Google, как узнать, есть ли у него встроенный ключ publi c или нет? или он распространяется ключом publi c?

Заранее благодарим за любую поддержку!

С уважением

PS: я прочитал это, но не очень полезно:

1. Получение ключей разработчика для учетных записей облачной службы Google 2. https://www.pingidentity.com/fr/company/blog/posts/2019/the-hard-parts-of-jwt-security-nobody-talks-about.html

1 Ответ

1 голос
/ 29 января 2020

Согласно официальной документации:

Создание ключей учетной записи службы и управление ими

Google гарантирует, что все публичные c ключи для всех учетных записей службы общедоступный для всех и доступен для проверки подписей, созданных с помощью закрытого ключа. Ключ publi c общедоступен по следующим URL-адресам:

1.x.509 сертификат: https://www.googleapis.com/service_accounts/v1/metadata/x509/ [SA-NAME] @ [PROJECT-ID] .iam.gserviceaccount.com

2. JSON веб-ключ (JWK): https://www.googleapis.com/service_accounts/v1/jwk/ [SA-NAME] @ [PROJECT-ID] .iam.gserviceaccount.com

3. Конечная точка Raw: https://www.googleapis.com/service_accounts/v1/metadata/raw/ [SA-NAME] @ [PROJECT-ID] .iam.gserviceaccount.com

Я использовал curl для доступа к URL-адресам:

  curl -i  https://www.googleapis.com/service_accounts/v1/jwk/[SA-NAME]@[PROJECT-ID].iam.gserviceaccount.com
{
"keys": [
  {
    "e": "xxxx",
    "kty": "xxx",
    "alg": "xxxx",
    "n": "xxxxxxxxxxxxxxxxxxxxxxxxxxx",
    "use": "xxx",
    "kid": "xxxxxxxxxxxxxxxx"
  }
]
}

Или для доступа к необработанной конечной точке:

     curl -i https://www.googleapis.com/service_accounts/v1/metadata/raw/[SA-NAME]@[PROJECT-ID].iam.gserviceaccount.com
   {
 "keyvalues": [
   {
     "exponent": "xxx",
     "keyid": "xxxxxxxxxxx",
     "modulus": "xxxxxxxxxxx",
     "algorithm": "xxx"
   }
 ]
}
...