Я пытаюсь написать серверное приложение, используя NodeJS, которое обращается к Admin-SDK нашей учетной записи Google Workspaces (G-Suite). Все руководства, которые я нашел до сих пор, описывают следующий процесс:
- Настройте проект в консоли и включите нужные API, например Admin SDK API.
- Создайте сервисный аккаунт в проекте GCP.
- Включение делегирования G Suite на уровне домена для служебного аккаунта
- Создайте учетную запись администратора G-Suite. Назовем это
[email protected]
- Используйте учетную запись службы, чтобы выдавать себя за учетную запись администратора при выполнении запросов к API.
Таким образом, доступ к Directory API может выглядеть примерно так:
const serviceAccountEmail = "[email protected]";
const privateKey = "-----BEGIN PRIVATE KEY-----....";
const scopes = ['https://www.googleapis.com/auth/admin.directory.group'];
const adminEmail = "[email protected]";
const auth = new google.auth.JWT(
serviceAccountEmail,
null,
privateKey,
scopes,
adminEmail,
);
const admin = await google.admin({
version: 'directory_v1',
auth,
});
Следующее примечание отображается рядом с флажком Enable G Suite Domain-wide Delegation
в учетной записи службы:
Позволяет этому сервисному аккаунту получать доступ к данным всех пользователей в домене G Suite без ›авторизации вручную с их стороны. Учить больше
Может быть, я неправильно это понимаю, но разве это не слишком снисходительно и не является серьезным нарушением принципа наименьших привилегий? Я понимаю, что моему приложению необходимо пройти аутентификацию в качестве [email protected]
учетной записи администратора, но есть ли способ ограничить его только этой учетной записью, а не данными всех пользователей в домене G Suite.