У меня есть сценарий, использующий gcloud
инструмент для создания сервисных аккаунтов для проекта.
Я хотел бы иметь возможность создавать группы Gsuite и добавлять в них учетные записи служб в том же сценарии, что и при создании учетных записей служб., поэтому мне не нужно делать это вручную в веб-интерфейсе.
Желательно, чтобы я как можно больше сделать это через CLI, включая первоначальную настройку учетных записей служб, аутентификацию gsuite и т. д.
Когда дело доходит до аутентификации между gcloud и gsuite и того, как автоматизировать задачи gsuite с помощью учетных записей служб gcloud, существует множество противоречивой информации.
Каков процесс:
Я бы предпочел выполнять любые запросы API либо с помощью инструмента CLI (например, gcloud
) или CURL. Если требуется клиентский SDK, я бы предпочел NodeJS.
Чтобы прояснить то, что я тестировал до сих пор, после просмотра тонны устаревшей документации на портале разработчиков Google, я:
owner
роль для проектаhttps://www.googleapis.com/auth/admin.directory.group
как в «Безопасность -> Управление доступом клиента API», так и в «Безопасность -> Управление API -> Делегирование в масштабах всего домена»admin.directory.group
curl --request POST 'https://www.googleapis.com/admin/directory/v1/groups' --header "$(oauth2l header --json /home/<file containing the secret for the service account> --scope admin.directory.group)" --header 'Accept: application/json' --header 'Content-Type: application/json' --data '{"email":"test@my-gsuite-domain.com"}' --compressed
Not Authorized to access this resource/api
.Во всей документации Google они советуют вам попробовать эти вещи с помощью API Explorer, которого больше не существует.
в каталог API На странице предварительных требований описана настройка API для консоли администратора. Описанные здесь параметры также не существуют.
TL: DR: Вам нужно работать с Directory API из G SUITE SDK
На Directory API: страница предварительных требований мы можем прочитать шаги, которые вам нужно выполнить, чтобы Настройте свой API:
1 Включите доступ к API из консоли администратора, чтобы делать запросы к Directory API. Чтобы включить API, войдите в свою учетную запись администратора и выберите Безопасность. Если вы не видите Безопасность в списке, выберите Больше элементов управления а потом Безопасность из вариантов, показанных в сером поле. Выберите ссылку API, а затем установите флажок, чтобы Включить API доступ. Сохраните изменения.
2 Создайте новый проект в Консоль API Google и активируйте сервис Admin SDK для этого проекта
На Directory API: запросы авторизации вы можете узнать больше о процессе Авторизация запросов с помощью OAuth 2.0 и необходимые вам прицелы. Поскольку вы хотите управлять только группами, вам необходимо добавить область «Области для групп, псевдонимов групп и членов группы». Вам необходимо добавить:
Объем: https://www.googleapis.com/auth/admin.directory.group
Смысл: Глобальная область доступа ко всем групповым операциям, включая псевдонимы и членов группы.
Поскольку вы будете взаимодействовать с API с помощью BASH, вам нужно будет выполнять запросы к API с помощью CURL. Итак, все примеры, которые я опубликую, используют CURL.
На Directory API: группы вы можете прочитать, какие операции вы можете выполнять, и как их выполнять.
Так, например, если вы хотите создать группу, вам потребуется выполнить операцию POST, чтобы "https://www.googleapis.com/admin/directory/v1/groups"с полезной нагрузкой JSON в следующем формате:
{
"email": "sales_group@example.com",
"name": "Sales Group",
"description": "This is the Sales group."
}
Итак, команда CURL будет выглядеть так:
curl --request POST \
--header "Content-Type: application/json" \
--header "Authorization: Bearer <ACCESS TOKEN>" \
--data '{"email":"sales_group@example.com","name":"Sales Group","description":"This is the Sales group."}' \ https://www.googleapis.com/admin/directory/v1/groups
Успешный ответ возвращает код состояния HTTP 201. Вместе с кодом состояния ответ возвращает свойства новой группы.
Если у вас возникли проблемы с получением токенов, вы можете узнать больше о том, как получить токены OAUTH 2.0:
https://stackoverflow.com/questions/28593022/list-google-drive-files-with-curl https://stackoverflow.com/questions/44063975/get-access-token-of-google-api https://developers.google.com/google-ads/api/docs/concepts/curl-example https://www.jhanley.com/google-oauth-2-0-testing-with-curl/