Я хочу создать автоматическое развертывание GCP для клиентов.
Для этого я открыл страницу для входа в систему с помощью Google, а затем включил IAM API и API использования сервиса.
Затем я создал служебную учетную запись, которую я хочу использовать с этого момента, чтобы включить другие необходимые API по требованию, а не все сразу.
Когда я пытаюсь включить API cloudkms, я получаю
googleapiclient.errors.HttpError: <HttpError 403 when requesting https://serviceusage.googleapis.com/v1/projects/x-y-z/services/cloudkms.googleapis.com?alt=json returned "The caller does not have permission"
Я попытался использовать учетные данные учетной записи службы (google.auth.jwt.Credentials), которые я создал в ответ на создание учетной записи службы, и добавил все необходимые разрешения. Я не хочу предоставлять владельца роли учетной записи службы, поскольку хочу, чтобы у этой учетной записи было как можно меньше разрешений.
Когда я пытаюсь получить статус API cloudkms, используя разрешения пользователя, он работает.
Я видел, как некоторые решения обращались ко мне с необходимостью создания учетных данных для учетной записи службы здесь: https://console.developers.google.com/apis/credentials, но мне действительно нужно делать это и программно.
Мой код:
credentials = jwt.Credentials.from_service_account_file(service_account_info['email'] + '.json', audience="https://www.googleapis.com/auth/cloud-platform")
# credentials = GoogleCredentials.get_application_default() - it works with this
service_usage = googleapiclient.discovery.build('serviceusage', 'v1', credentials=credentials)
service_usage.services().get(name="projects/<project_id>/services/cloudkms.googleapis.com").execute()
Ошибка была упомянута выше.