Доступ к SDK администратора Google Workspace без делегирования домена?

Я пытаюсь написать серверное приложение, используя NodeJS, которое обращается к Admin-SDK нашей учетной записи Google Workspaces (G-Suite). Все руководства, которые я нашел до сих пор, описывают следующий процесс:

  1. Настройте проект в консоли и включите нужные API, например Admin SDK API.
  2. Создайте сервисный аккаунт в проекте GCP.
  3. Включение делегирования G Suite на уровне домена для служебного аккаунта
  4. Создайте учетную запись администратора G-Suite. Назовем это [email protected]
  5. Используйте учетную запись службы, чтобы выдавать себя за учетную запись администратора при выполнении запросов к 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.


person Eric Anastas    schedule 18.12.2020    source источник
comment
Когда вы выдаете себя за учетную запись администратора (в отношении вашего принципа наименьших привилегий), это не имеет никакого значения ... иначе используйте эти области: developers.google.com/gsuite/add-ons/concepts/gsuite-scopes   -  person Martin Zeitler    schedule 18.12.2020


Ответы (2)


Учетная запись службы имеет доступ только к тому, что совместно используется с учетной записью, в соответствии с Делегированием полномочий на уровне домена учетной записи службы:

администратор домена G Suite может разрешить приложению доступ к пользовательским данным от имени пользователей в домене G Suite.

Это означает, что учетная запись службы только имеет доступ к данным из учетной записи, которую олицетворяет приложение.

Вы несете ответственность за свою учетную запись безопасности

Вы можете, например, реализовать проверку, позволяющую выдавать себя за учетные записи для определенной организационной единицы, но все эти проверки должны выполняться на уровне приложения.

С помощью своей учетной записи службы вы можете, например, проверить, к какому организационному подразделению принадлежит выдает себя за учетную запись. Если проверка прошла успешно, вы можете перейти к олицетворению этой учетной записи с делегированной учетной записью службы всего домена и выполнить необходимое действие.

В одиночку делегирование на уровне домена - действительно очень мощная функция, которая позволяет приложениям получать доступ к данным пользователей во всей учетной записи G Suite вашей организации. Вы, как учетная запись суперадминистратора, обязаны управлять этим должным образом и безопасно.

использованная литература

Делегирование полномочий на уровне домена

Управление делегированием домена

person Alessandro    schedule 18.12.2020

Принцип наименьших привилегий частично реализуется, когда суперадминистратор включает области по отдельности.

Но, как вы уже догадались, это недопустимо для пользовательских данных, потому что приложение имеет доступ и может выдавать себя за любого пользователя. Итак, ответ - нет, вы не можете ограничить его одним электронным письмом.

Это кажется мне излишним, потому что некоторые электронные письма настолько чувствительны, что вы не можете выдавать себя за них.

person SA-    schedule 26.01.2021
comment
Привет и добро пожаловать в SO! Прочтите тур и Как сделать Пишу хороший ответ? Например можно добавить сиппет кода. - person Tomer Shetah; 26.01.2021