Доступ к учетной записи службы запрещен при доступе к приложению, защищенному IAP - PullRequest
0 голосов
/ 26 марта 2019

Попытка разрешить командной строке python получить доступ к (HTTP GET) IAP-защищенному приложению.

С https://github.com/GoogleCloudPlatform/python-docs-samples/blob/master/iap/make_iap_request.py

Но возникает ошибка 403 Исключение: служебная учетная запись xxx@xxxxxxxxx-production.iam.gserviceaccount.com не имеет разрешения на доступ к приложению, защищенному IAP.

Были испробованы следующие методы, но проблема не исчезла, как указано выше 1. удалить / создать учетную запись службы
2. заново создать файл ключа json
3. предоставить проекту учетной записи службы owner разрешение

if __name__ == '__main__':
    os.environ[
        "GOOGLE_APPLICATION_CREDENTIALS"] = '/Users/foo/bar.json'

    print make_iap_request('https://foo.com/', 'xxxxtheidforthatiapservice.apps.googleusercontent.com')

1 Ответ

2 голосов
/ 26 марта 2019

Я думаю, вам нужно выполнить Аутентификацию с учетной записи службы Процедура:

Используйте токен OpenID Connect (OIDC) для аутентификации учетной записи службы к облачному IAP-защищенному ресурсу.

  1. Добавьте учетную запись службы в список доступа для проекта, защищенного облачным IAP.
  2. Создание токена доступа на основе JWT . При этом используется target_audience дополнительное требование, для которого требуется идентификатор клиента. Найти Ваш идентификатор клиента, выполните следующие действия:

    а. Перейдите на страницу Cloud IAP.

    б. Найдите ресурс, к которому вы хотите получить доступ, затем нажмите Дополнительно> Изменить Клиент OAuth .

    edit OAuth client on the More menu

    с. На появившейся странице Credentials запишите идентификатор клиента.

  3. Запрос токена OIDC для идентификатора клиента, защищенного облачным IAP.

  4. Включите токен OIDC в ​​заголовок Authorization: Bearer, чтобы сделать аутентифицированный запрос к ресурсу, защищенному облачным IAP.
...