Skip to content

alavret/360TextAdmin

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

29 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Yandex 360 Text Admin Console

Обзор

Консольная утилита 360_text_admin_console.py предназначена для администрирования организации Yandex 360 через API. Утилита предоставляет широкий функционал для управления пользователями, группами, настройками электронной почты и двухфакторной аутентификации.

Основные возможности

1. Управление атрибутами пользователей

  • Изменение атрибута userName через SCIM API
  • Изменение атрибута nickname через Yandex 360 API
  • Массовое обновление пользователей из CSV-файла (nickname и userName)
  • Проверка псевдонимов и алиасов
  • Удаление email адресов по шаблонам (через SCIM)

2. Получение информации о пользователях

  • Выгрузка всех пользователей в CSV-файлы (SCIM и API 360)
  • Детальная информация об атрибутах пользователя
  • Проверка существования псевдонимов

3. Управление группами

  • Просмотр атрибутов групп
  • Управление разрешениями на отправку в группы
  • Добавление/удаление пользователей в списки разрешенных отправителей
  • Работа с общими почтовыми ящиками

4. Настройки электронной почты

  • Управление настройками отправителя по умолчанию
  • Просмотр и очистка правил пересылки
  • Массовое обновление настроек из файла
  • Получение подписи пользователя в отправляемых письмах
  • Массовая установка подписей пользователям с параметризированными шаблонами

5. Двухфакторная аутентификация (2FA)

  • Выгрузка настроек 2FA для всех пользователей
  • Просмотр настроек 2FA для отдельного пользователя
  • Сброс телефона безопасности
  • Принудительный выход пользователей из системы
  • Массовый выход пользователей загружаемых из файла
  • Разлогин из Я360 пользователей с включенной 2FA без настроенного телефона

6. Управление атрибутом displayName

  • Настройка шаблона формирования displayName
  • Выгрузка текущих значений displayName для пользователей
  • Массовое обновление displayName из файла (через SCIM или API 360)

Установка

  1. Установите Python 3.7 или выше

  2. Установите зависимости:

    pip install -r requirements.txt
  3. Настройте файл окружения: Создайте файл .env в корневой директории проекта со следующими параметрами:

Параметры конфигурации

Параметр Описание Обязательный Пример
SCIM_TOKEN_ARG OAuth-токен для SCIM API Да* y0_AgAAAAAAAAAAAA
SCIM_DOMAIN_ID_ARG ID домена для SCIM API Да* 1234567
OAUTH_TOKEN_ARG OAuth-токен для Yandex 360 API Да y0_AgAAAAB0It5oAAvg
ORG_ID_ARG ID организации Yandex 360 Да 1234567
USERS_FILE_ARG Имя CSV-файла с пользователями Да users.csv
NEW_LOGIN_DEFAULT_FORMAT_ARG Шаблон нового userName Нет alias@domain.ru
DEFAULT_EMAIL_OUTPUT_FILE_ARG Файл для экспорта настроек email Нет default_email_output.csv
DEFAULT_EMAIL_INPUT_FILE_ARG Файл для импорта настроек email Нет default_email_input.csv
DEFAULT_FORWARD_RULES_OUTPUT_FILE_ARG Файл для экспорта правил пересылки Нет forward_rules_output.csv
DEFAULT_2FA_SETTINGS_OUTPUT_FILE_ARG Файл для экспорта настроек 2FA Нет users_2fa_output.csv
DEFAULT_2FA_SETTINGS_INPUT_FILE_ARG Файл для импорта настроек 2FA Нет users_2fa_input.csv
EMAIL_SIGNATURE_FILE_PREFIX_ARG НОВОЕ: Префикс для файлов, где сохраняется подпись, выгруженная из Яндекс 360 Нет signature_
EMAIL_SIGNATURE_INPUT_FILE НОВОЕ: Файл с пользователями для установки подписей Нет users_signature_input.csv
EMAIL_SIGNATURE_TEMPLATE_FILE НОВОЕ: Шаблон подписи (HTML) Нет signature_template.html
EMAIL_SIGNATURE_LANGUAGE НОВОЕ: Язык подписи Нет ru
EMAIL_SIGNATURE_IS_DEFAULT НОВОЕ: Подпись по умолчанию Нет false
EMAIL_SIGNATURE_POSITION НОВОЕ: Позиция подписи Нет bottom или under
DRY_RUN НОВОЕ: Режим тестирования (без выполнения изменений) Нет true/false
IgnoreUsernameDomain Игнорировать домен в userName Нет true/false
DN_FILE НОВОЕ: Файл для экспорта/импорта displayName Нет dn.csv

* SCIM параметры необходимы только для операций с userName

Пример файла .env:

SCIM_TOKEN_ARG=y0_AgAAAAAAAAAAAA
SCIM_DOMAIN_ID_ARG=1234567
OAUTH_TOKEN_ARG=y0_AgAAAAB0It5oAAvg
ORG_ID_ARG=1234567
USERS_FILE_ARG=users.csv
NEW_LOGIN_DEFAULT_FORMAT_ARG=alias@domain.ru
DRY_RUN=false

Запуск

Интерактивный режим

python 360_text_admin_console.py

Командная строка

# Изменение userName
python 360_text_admin_console.py old_username new_username userName yes

# Изменение nickname
python 360_text_admin_console.py old_nickname new_nickname nickname yes

Структура меню

Главное меню

  1. Работа с атрибутом SCIM userName или атрибутом API 360 nickname
  2. Получить информацию о пользователе
  3. Получить информацию о группе и управление правами отправки
  4. Работа с настройками почты
  5. Настройки 2FA
  6. Выгрузить и загрузить атрибут displayName пользователей

Подменю 1: Управление атрибутами пользователей по протоколов SCIM и API 360

  1. Установить новый формат SCIM userName (по умолчанию: alias@domain.tld)
  2. Создать файл данных SCIM для изменения на следующем шаге
  3. Использовать файл пользователей для массового изменения SCIM userName
  4. Ввести старое и новое значение userName вручную и подтвердить переименование
  5. Изменить nickname отдельного пользователя
  6. Использовать файл пользователей для массового изменения nickname
  7. Проверить значение атрибута alias у пользователей
  8. Удалить адреса электронной почты в указанных доменах из email контактов выбранных пользователей через SCIM
  9. Показать атрибуты пользователя и сохранить их в файл a. Выгрузить атрибуты всех пользователей в файл (протоколы SCIM и API)

Подменю 2: Получить Информацию о Пользователе

  1. Проверить значение атрибута alias у пользователей
  2. Загрузить атрибуты всех пользователей в файл (протоколы SCIM и API 360)
  3. Показать атрибуты выбранного пользователя и сохранить их в файл

Подменю 3: Получить Информацию о Группе

  1. Показать атрибуты группы и сохранить их в файл
  2. Показать разрешенных отправителей для группы
  3. Управление разрешенными отправителями для группы

Подподменю 3.3: Управление Разрешениями на Отправку в Группу

  1. Установить целевую группу
  2. Добавить пользователей в список разрешенных
  3. Удалить пользователей из списка разрешенных
  4. Предоставить всем пользователям разрешение на отправку
  5. Добавить/Удалить общий почтовый ящик в список разрешенных

Подменю 4: Работа с Настройками Почты

  1. Создать файл для изменения email по умолчанию
  2. Обновить email по умолчанию из файла
  3. Получить правила пересылки для отдельного пользователя
  4. Выгрузить правила пересылки для всех пользователей
  5. Очистить правила пересылки для пользователей
  6. Получить подпись email отдельного пользователя
  7. Установить подпись email

Подменю 5: Настройки 2FA

  1. Загрузить настройки 2FA для пользователей
  2. Получить настройки 2FA для отдельного пользователя
  3. Сбросить личный телефон для отдельного пользователя
  4. Разлогинить отдельного пользователя из системы
  5. Разлогинить из системы загруженных из файла пользователей
  6. Разлогинить из системы пользователей с установленным 2fa и без настроенного телефона безопасности

Подменю 6: Управление атрибутом displayName

  1. Настройка шаблона формирования displayName (текущий шаблон)
  2. Выгрузить в файл значение displayName для пользователей
  3. Загрузить displayName из файла

Подменю 4: Работа с настройками почты (детальное описание)

Опция 1: Создание файла для изменения настроек отправителя

Создает CSV файл с текущими настройками электронной почты пользователей для последующего редактирования.

Функция: default_email_create_file()

Процесс работы:

  • Загружает список всех пользователей организации
  • Для каждого пользователя получает текущие настройки почты через API
  • Сохраняет данные в CSV файл (по умолчанию default_email_output.csv)

Формат выходного CSV файла:

nickname;new_DefaultEmail;new_DisplayName;old_DefaultEmail;old_DisplayName;uid
ivan;ivan@newdomain.com;Иван Иванов;ivan@olddomain.com;Ivan;1130000069123456

Параметры конфигурации:

  • DEFAULT_EMAIL_OUTPUT_FILE_ARG - имя файла для экспорта

Применение:

  • Аудит текущих настроек почты
  • Подготовка массового изменения настроек отправителя по умолчанию
  • Резервное копирование настроек перед изменениями

Опция 2: Обновление настроек из файла

Массово обновляет настройки электронной почты пользователей из предварительно подготовленного CSV файла.

Функция: default_email_update_from_file()

Процесс работы:

  1. Читает CSV файл с новыми настройками
  2. Для каждого пользователя в файле:
    • Проверяет существование пользователя
    • Обновляет адрес отправителя по умолчанию
    • Обновляет отображаемое имя (если указано)
  3. Логирует результаты каждой операции

Формат входного CSV файла:

nickname;new_DefaultEmail;new_DisplayName;old_DefaultEmail;old_DisplayName;uid
ivan;ivan@newdomain.com;Иван Иванов;ivan@olddomain.com;Ivan;1130000069123456
petr;petr@newdomain.com;Петр Петров;petr@olddomain.com;Petr;1130000069123457

Параметры конфигурации:

  • DEFAULT_EMAIL_INPUT_FILE_ARG - имя файла для импорта
  • DRY_RUN - режим тестирования (true/false)

Поддерживаемые изменения:

  • Изменение адреса электронной почты по умолчанию
  • Изменение отображаемого имени отправителя

Применение:

  • Массовая смена доменов организации
  • Изменение отображаемых имен после реорганизации
  • Приведение настроек к корпоративному стандарту

Опция 3: Просмотр правил пересылки для пользователя

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

Функция: forward_rules_get_for_user()

Процесс работы:

  1. Запрашивает идентификатор пользователя (nickname, email, UID или фамилия)
  2. Находит пользователя в системе
  3. Получает настройки пересылки через API
  4. Отображает информацию в консоли

Отображаемые данные:

  • Список адресов для пересылки
  • Статус правила пересылки (включено/отключено)
  • Флаг сохранения копии на сервере

Применение:

  • Проверка настроек пересылки при обращениях пользователей
  • Аудит правил пересылки
  • Отладка проблем с доставкой почты

Опция 4: Выгрузка правил пересылки для всех пользователей

Создает отчет с правилами пересылки для всех пользователей организации.

Функция: forward_rules_download_for_all_users()

Процесс работы:

  1. Получает список всех пользователей организации
  2. Для каждого пользователя запрашивает правила пересылки
  3. Сохраняет результаты в CSV файл (по умолчанию forward_rules_output.csv)
  4. Отображает прогресс выполнения

Формат выходного CSV файла:

uid;nickname;displayName;forwardingAddresses;keepLocalCopy;isEnabled
1130000069123456;ivan;Иванов Иван;external@gmail.com,boss@company.com;true;true
1130000069123457;petr;Петров Петр;;false;false

Описание полей:

  • uid - уникальный идентификатор пользователя
  • nickname - логин пользователя
  • displayName - отображаемое имя
  • forwardingAddresses - список адресов для пересылки (через запятую)
  • keepLocalCopy - сохранять копию на сервере (true/false)
  • isEnabled - правило активно (true/false)

Параметры конфигурации:

  • DEFAULT_FORWARD_RULES_OUTPUT_FILE_ARG - имя файла для экспорта

Применение:

  • Аудит безопасности (выявление пересылок за пределы организации)
  • Анализ использования функции пересылки
  • Выявление устаревших правил пересылки
  • Подготовка к миграции почтовой системы

Опция 5: Очистка правил пересылки

Удаляет правила автоматической пересылки для выбранных пользователей.

Функция: forward_rules_clear_for_user()

Процесс работы:

  1. Запрашивает идентификатор пользователя (nickname, email, UID или фамилия)
  2. Находит пользователя и отображает текущие правила пересылки
  3. Запрашивает подтверждение операции
  4. Удаляет все правила пересылки для пользователя

Параметры конфигурации:

  • DRY_RUN - режим тестирования (true/false)

Безопасность:

  • Требует явного подтверждения перед удалением
  • Логирует все операции
  • Поддерживает режим DRY_RUN для тестирования

Применение:

  • Очистка устаревших правил пересылки
  • Устранение проблем безопасности (несанкционированные пересылки)
  • Восстановление стандартных настроек почты
  • Подготовка к увольнению сотрудника

Опция 6: Получение подписи пользователя

НОВОЕ: Получает текущую HTML-подпись пользователя из настроек электронной почты Yandex 360.

Функция: get_email_signature()

Процесс работы:

  1. Запрашивает идентификатор пользователя (nickname, email, UID или фамилия)
  2. Находит пользователя в системе
  3. Получает настройки подписи через API
  4. Отображает параметры подписи в консоли
  5. Сохраняет HTML-содержимое подписи в файл

Получаемые данные:

  • HTML-код подписи
  • Язык подписи (ru, en, etc.)
  • Позиция подписи (bottom, under)
  • Флаг использования по умолчанию

Формат сохранения:

  • Файл: {EMAIL_SIGNATURE_FILE_PREFIX_ARG}{nickname}.txt
  • Пример: signature_ivan.txt

Параметры конфигурации:

  • EMAIL_SIGNATURE_FILE_PREFIX_ARG - префикс для имени файла (по умолчанию: signature_)

Применение:

  • Резервное копирование подписей пользователей
  • Проверка корректности установленных подписей
  • Создание шаблонов на основе существующих подписей
  • Аудит использования корпоративных подписей

Особенности:

  • Подпись сохраняется в формате HTML с корректной кодировкой UTF-8
  • Поддерживает сложные HTML-структуры с изображениями и стилями
  • Сохраняет все параметры подписи для возможного восстановления

Опция 7: Массовая установка подписей пользователям

НОВОЕ: Устанавливает HTML-подписи пользователям на основе параметризированного шаблона с автоматической подстановкой данных.

Функция: set_email_signature()

Процесс работы:

  1. Читает список пользователей из файла
  2. Загружает HTML-шаблон подписи
  3. Для каждого пользователя:
    • Получает данные профиля (имя, должность, контакты, отдел)
    • Подставляет данные в шаблон
    • Очищает пустые переменные и HTML-элементы
    • Устанавливает подпись через API
  4. Логирует результаты каждой операции

Параметры конфигурации:

  • EMAIL_SIGNATURE_INPUT_FILE - файл со списком пользователей (по умолчанию: users_signature_input.csv)
  • EMAIL_SIGNATURE_TEMPLATE_FILE - HTML-шаблон подписи (по умолчанию: signature_template.html)
  • EMAIL_SIGNATURE_LANGUAGE - язык подписи (по умолчанию: ru)
  • EMAIL_SIGNATURE_IS_DEFAULT - использовать по умолчанию (по умолчанию: false)
  • EMAIL_SIGNATURE_POSITION - позиция подписи: bottom или under (по умолчанию: bottom)
  • DRY_RUN - режим тестирования (true/false)

Для установки подписей необходимо передать в файле список пользователей. По умолчанию это файл, который определен в .env файле в параметре EMAIL_SIGNATURE_INPUT_FILE, который по умолчанию имеет значение users_signature_input.csv.

Формат файла со списком пользователей (EMAIL_SIGNATURE_INPUT_FILE):

# Строки, начинающиеся с #, игнорируются
# В каждой строке: алиас, email, id или фамилия пользователя
alavret
ivan.petrov
user@company.com
1130000000000001
Петров

Поддерживаемые переменные в шаблоне:

Переменная Описание Источник данных
{{last}} Фамилия user.name.last
{{first}} Имя user.name.first
{{middle}} Отчество user.name.middle
{{name}} Полное имя user.name.first + user.name.middle + user.name.last
{{position}} Должность user.position
{{mail}} Email адрес Основной email пользователя
{{telephone}} Рабочий телефон Из контактов пользователя
{{mobile}} Мобильный телефон Из контактов пользователя
{{department}} Отдел Название подразделения

Пример HTML-шаблона:

<div>-- </div>
<div><em>С Уважением,</em></div>
<div> </div>
<div><span style="font-family:'comic sans ms' , sans-serif;font-size:16px;line-height:normal"><strong>{{name}}</strong></span></div>
<div><blockquote><div><span style="color:#4b0082">email</span>: <a href="mailto:{{mail}}" rel="noopener noreferrer">{{mail}}</a></div></blockquote></div>
<div><blockquote><div>Телефон: {{telephone}}</div></blockquote></div>
<div><blockquote><div>мобильный: {{mobile}}</div></blockquote></div>
<div><blockquote><div>Должность: {{position}}, {{department}}</div></blockquote></div>
<div><a href="https://360.yandex.ru">site</a></div>

Автоматическая обработка пустых полей:

  • HTML-элементы с пустыми переменными автоматически удаляются
  • Если у пользователя нет мобильного телефона, строка <div>мобильный: {{mobile}}</div> будет удалена
  • Если у пользователя нет должности, соответствующий блок будет скрыт
  • Пустые строки и теги автоматически очищаются

Позиции подписи:

  • bottom - подпись добавляется в конец письма
  • under - подпись добавляется под цитируемым текстом при ответе

Применение:

  • Массовое внедрение корпоративных подписей
  • Обновление подписей после ребрендинга
  • Стандартизация оформления подписей
  • Автоматизация создания подписей для новых сотрудников
  • Обновление контактной информации в подписях

Безопасность и проверка:

  • Режим DRY_RUN позволяет просмотреть результат без применения изменений
  • Все операции логируются
  • Валидация HTML-шаблона перед применением
  • Обработка ошибок при получении данных пользователя

Примеры использования:

# Тестирование установки подписей
# Установить DRY_RUN=true в .env файле
python 360_text_admin_console.py
# Выбрать: 4 -> 7

# Реальная установка подписей
# Установить DRY_RUN=false в .env файле
python 360_text_admin_console.py
# Выбрать: 4 -> 7

Подменю 5: Настройки 2FA

  1. Выгрузка настроек 2FA для всех пользователей
  2. Просмотр настроек 2FA для пользователя
  3. Сброс телефона безопасности
  4. Принудительный выход пользователя
  5. Принудительный выход пользователей из файла
  6. Выход пользователей с 2FA без телефона

Подменю 6: Управление атрибутом displayName (детальное описание)

Подменю 6 предназначено для управления атрибутом displayName (отображаемое имя) пользователей в Yandex 360. Этот функционал позволяет массово обновлять отображаемые имена на основе шаблонов и формировать единый формат представления имен сотрудников.

Опция 1: Настройка шаблона формирования displayName

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

Функция: generate_new_dn(pattern, first, last, middle)

Шаблон формирования:

Шаблон состоит из следующих элементов:

  • Ф - фамилия пользователя
  • И - имя пользователя
  • О - отчество пользователя
  • Цифра после буквы (необязательно) - количество символов для вывода (например, И1 - первая буква имени)
  • Точка после буквы (необязательно) - добавляет точку после значения (например, И1. - первая буква имени с точкой)
  • Пробелы - для разделения элементов

Примеры шаблонов:

Шаблон Пример результата (Иванов Иван Петрович) Описание
ФИО Иванов Иван Петрович Полное ФИО без сокращений
Ф И О Иванов Иван Петрович Полное ФИО с пробелами
Ф И Иванов Иван Фамилия и имя
Ф И1 Иванов И Фамилия и первая буква имени
Ф И1. Иванов И. Фамилия и первая буква имени с точкой
Ф И1. О1. Иванов И. П. Фамилия и инициалы с точками
И Ф Иван Иванов Имя и фамилия
И1. Ф И. Иванов Инициал имени и фамилия

Особенности работы шаблона:

  • Если у пользователя отсутствует отчество, элемент О автоматически удаляется из результата
  • Лишние пробелы между элементами автоматически удаляются
  • Допустимые символы в шаблоне: Ф, И, О, цифры 0-9, точка ., пробел
  • Шаблон по умолчанию: ФИО

Применение:

  • Унификация формата отображаемых имен в организации
  • Создание сокращенных форм для списков рассылки
  • Формирование имен для подписей и визитных карточек
  • Приведение к корпоративному стандарту представления имен

Опция 2: Выгрузка значений displayName для пользователей

Создает CSV файл с текущими значениями displayName пользователей и автоматически генерирует новые значения на основе шаблона.

Функция: submenu_6_export_dn(settings)

Процесс работы:

  1. Выбор пользователей через интерактивный поиск (поиск по критериям, из файла CSV, или все пользователи)
  2. Сбор информации о выбранных пользователях (ID, nickname, имя, фамилия, отчество, текущий displayName)
  3. Автоматическая генерация нового значения displayName на основе заданного шаблона
  4. Сохранение данных в CSV файл

Формат выходного CSV файла:

id;nickname;last;first;middle;dn;new_dn
1130000012345678;ivanov;Иванов;Иван;;Иванов Иван;Иванов И.
1130000012345679;petrov;Петров;Петр;Петрович;Петр Петров;Петров П. П.

Описание полей:

  • id - уникальный идентификатор пользователя в Yandex 360
  • nickname - логин пользователя (часть до @ в email)
  • last - фамилия пользователя
  • first - имя пользователя
  • middle - отчество пользователя (может быть пустым)
  • dn - текущее значение displayName
  • new_dn - автоматически сгенерированное новое значение displayName на основе шаблона

Параметры конфигурации:

  • DN_FILE - имя файла для экспорта/импорта (по умолчанию: dn.csv)

Применение:

  • Аудит текущих отображаемых имен пользователей
  • Подготовка к массовому изменению displayName
  • Проверка корректности генерации имен по шаблону
  • Резервное копирование текущих значений перед изменениями

Опция 3: Загрузка displayName из файла

Массово обновляет атрибут displayName пользователей из предварительно подготовленного CSV файла.

Функции:

  • submenu_6_import_dn(settings) - основная функция импорта
  • update_user_dn_scim(user_id, new_dn, settings) - обновление через SCIM API
  • update_user_dn(user_id, new_dn, settings) - обновление через Yandex 360 API

Процесс работы:

  1. Чтение CSV файла с новыми значениями displayName
  2. Валидация формата файла (проверка обязательных полей)
  3. Запрос подтверждения операции
  4. Для каждого пользователя в файле:
    • Обновление displayName через SCIM API (если доступен) или через Yandex 360 API
    • Логирование результата операции
  5. Отображение сводки результатов

Формат входного CSV файла:

Обязательные поля:

  • id - уникальный идентификатор пользователя (обязательно)
  • new_dn - новое значение displayName (обязательно)

Необязательные поля:

  • nickname - логин пользователя (используется для информационных сообщений)
  • last - фамилия пользователя (используется для информационных сообщений)
  • first - имя пользователя (используется для информационных сообщений)
  • middle - отчество пользователя (используется для информационных сообщений)
  • dn - текущее значение displayName (используется для информационных сообщений)

Пример файла:

id;nickname;last;first;middle;dn;new_dn
1130000012345678;ivanov;Иванов;Иван;;Иванов Иван;Иванов И.
1130000012345679;petrov;Петров;Петр;Петрович;Петр Петров;Петров П. П.

Минимальный формат файла:

id;new_dn
1130000012345678;Иванов И.
1130000012345679;Петров П. П.

Поддержка комментариев:

В CSV файле можно использовать комментарии - строки, начинающиеся с символа #, будут проигнорированы при обработке:

# Это комментарий - строка будет проигнорирована
# Файл для обновления displayName пользователей
# Подготовлен 2026-04-13
id;nickname;last;first;middle;dn;new_dn
# Следующая строка обновит displayName для пользователя romans
1130000012345678;ivanov;Иванов;Иван;;Иванов Иван;Иванов И.
# Обновление для администратора
1130000012345679;petrov;Петров;Петр;Петрович;Петр Петров;Петров П. П.

Особенности:

  • Разделитель полей — точка с запятой (;)
  • Кодировка файла — UTF-8
  • Если new_dn пустое, пользователь пропускается с предупреждением
  • Приоритет использования API: SCIM API (если доступен) → Yandex 360 API
  • Проверка обязательных полей перед началом обновления
  • Проверка на наличие некорректных полей в заголовке
  • Все операции логируются в файл 360_text_admin_console.log

Параметры конфигурации:

  • DN_FILE - имя файла для импорта (по умолчанию: dn.csv)
  • DRY_RUN - режим тестирования (true/false)
  • SCIM_TOKEN_ARG - токен для SCIM API (если используется)
  • OAUTH_TOKEN_ARG - токен для Yandex 360 API

Применение:

  • Массовое изменение отображаемых имен после реорганизации
  • Приведение имен к единому корпоративному стандарту
  • Исправление ошибок в отображаемых именах
  • Обновление имен после изменения формата представления

Безопасность:

  • Требует подтверждения перед выполнением операции
  • Поддерживает режим DRY_RUN для тестирования без применения изменений
  • Детальное логирование всех операций
  • Отображение результата каждой операции в консоли

Пример использования:

# 1. Выгрузить текущие значения displayName
python 360_text_admin_console.py
# Выбрать: 6 -> 2
# Выбрать пользователей

# 2. Отредактировать файл dn.csv (изменить колонку new_dn)

# 3. Протестировать изменения (установить DRY_RUN=true в .env)
python 360_text_admin_console.py
# Выбрать: 6 -> 3

# 4. Применить изменения (установить DRY_RUN=false в .env)
python 360_text_admin_console.py
# Выбрать: 6 -> 3

Массовое переименование nickname и userName из файла

Утилита позволяет массово изменять атрибуты nickname (через API 360) и userName (через SCIM API) для списка пользователей, загружая данные из CSV-файла.

Массовое изменение nickname (API 360)

Пункт меню: 1 -> 6

Функция: change_nickname_from_file()

Загружает список пользователей из CSV-файла и последовательно меняет их nickname.

Формат CSV-файла для изменения nickname

Поле Тип Обязательное Описание
old_nickname String Да Текущий nickname пользователя
new_nickname String Да Новый nickname для пользователя
(другие поля) - Нет Любые другие колонки игнорируются

Пример файла:

old_nickname;new_nickname
ivan.petrov;i.petrov
petr.sidorov;p.sidorov
anna.smirnova;a.smirnova

Особенности:

  • Разделитель полей — точка с запятой (;)
  • Регистр названий колонок не важен (old_nickname, OLD_NICKNAME, Old_Nickname — эквивалентны)
  • Строки с одинаковыми старым и новым nickname пропускаются
  • Строки с пустыми значениями пропускаются
  • Перед применением изменений запрашивается подтверждение
  • Поддерживается режим DRY_RUN для тестирования

Пример использования:

# 1. Подготовьте CSV-файл (по умолчанию users.csv, задаётся в USERS_FILE_ARG)
# 2. Запустите утилиту
python 360_text_admin_console.py
# 3. Выберите: 1 -> 6
# 4. Подтвердите операцию

Массовое изменение userName (SCIM API)

Пункт меню: 1 -> 3

Функция: update_users_from_SCIM_userName_file()

Загружает список пользователей из CSV-файла и изменяет их атрибут userName через SCIM API.

Формат CSV-файла для изменения userName

Поле Тип Обязательное Описание
uid String Да Уникальный идентификатор пользователя (числовая строка, например 1130000069123456)
old_userName String Да Текущий userName пользователя (используется для отображения и логирования)
new_userName String Да Новый userName для пользователя (формат: alias@domain.tld)
displayName String Нет Отображаемое имя пользователя (используется только для логирования)

Пример файла:

uid;displayName;old_userName;new_userName
1130000069123456;Иванов Иван;ivan@contoso.com;ivan@contoso.ru
1130000069123457;Петров Петр;petr@contoso.com;petr@contoso.ru
1130000069123458;Сидорова Анна;anna@contoso.com;anna@contoso.ru

Особенности:

  • Разделитель полей — точка с запятой (;)
  • Регистр названий колонок не важен
  • Поле uid должно содержать только цифры
  • Строки с одинаковыми старым и новым userName пропускаются
  • Строки с отсутствующим uid или new_userName пропускаются
  • Перед применением изменений запрашивается подтверждение
  • Поддерживается режим DRY_RUN для тестирования
  • Требуется настроенный SCIM-токен (SCIM_TOKEN_ARG)

Создание файла с данными:

Утилита может автоматически создать файл с текущими данными пользователей:

python 360_text_admin_console.py
# Выбрать: 1 -> 2 (Создание файла данных SCIM для модификации)

Будет создан файл users.csv с заполненными полями uid, displayName, old_userName и new_userName (на основе шаблона NEW_LOGIN_DEFAULT_FORMAT_ARG).

Пример использования:

# 1. Создайте файл с данными пользователей (опция 1 -> 2) или подготовьте вручную
# 2. Отредактируйте колонку new_userName
# 3. Запустите утилиту
python 360_text_admin_console.py
# 4. Выберите: 1 -> 3
# 5. Подтвердите операцию

Сравнение форматов файлов

Операция Обязательные поля Необязательные поля Пункт меню
Изменение nickname old_nickname, new_nickname любые другие 1 -> 6
Изменение userName uid, old_userName, new_userName displayName 1 -> 3
Изменение displayName id, new_dn nickname, last, first, middle, dn 6 -> 3

Форматы файлов

CSV-файл пользователей (users.csv)

uid;displayName;old_userName;new_userName
1130000069123456;Иванов Иван;ivan@contoso.com;ivan@contoso.ru
1130000069123457;Петров Петр;petr@contoso.com;petr@contoso.ru

CSV-файл настроек email

nickname;new_DefaultEmail;new_DisplayName;old_DefaultEmail;old_DisplayName;uid
ivan;ivan@newdomain.com;Иван Иванов;ivan@olddomain.com;Ivan;1130000069123456

CSV-файл настроек 2FA

uid;nickname;displayName;isEnabled;isAdmin;domain2FAEnabled;hasSecurityPhone;personal2FAEnabled;global2FAEnabled;global2FADuration;global2FAPolicy
1130000069123456;ivan;Иванов Иван;true;false;true;false;false;true;86400;all_users

CSV-файл для управления displayName (dn.csv)

# Комментарии в файле начинаются с символа #
# Обязательные поля: id, new_dn
id;nickname;last;first;middle;dn;new_dn
1130000066913874;romans;Сергеев;Роман;;Роман Сергеев;Сергеев Р.
1130000070057004;alavret;Лаврецкий;Андрей;Геннадьевич;Андрей Лаврецкий;Лаврецкий А. Г.

Описание полей:

  • id - уникальный идентификатор пользователя (обязательно)
  • nickname - логин пользователя (необязательно, для информации)
  • last - фамилия (необязательно, для информации)
  • first - имя (необязательно, для информации)
  • middle - отчество (необязательно, для информации)
  • dn - текущий displayName (необязательно, для информации)
  • new_dn - новый displayName (обязательно)

Поддержка комментариев: Строки, начинающиеся с #, игнорируются при обработке.

CSV-файл пользователей для установки подписей

# Пример входного файла для установки подписей
# Строки, начинающиеся с #, игнорируются
# В каждой строке: алиас, email, id или фамилия пользователя
alavret
ivan.petrov
user@company.com
1130000000000001
Петров

Создание параметризированного шаблона подписи

Поддерживаемые переменные

В шаблоне подписи можно использовать следующие переменные в двойных фигурных скобках:

Переменная Описание Источник данных
{{last}} Имя user.name.last
{{first}} Имя user.name.first
{{middle}} Отчество user.name.middle
{{name}} Полное имя user.name.first + user.name.middle + user.name.last
{{position}} Должность user.position
{{mail}} Email адрес Основной email пользователя (который установлен в Web Почте)
{{telephone}} Рабочий телефон Из контактов пользователя
{{mobile}} Мобильный телефон Из контактов пользователя
{{department}} Отдел Название подразделения

Пример HTML шаблона

<div>-- </div>
<div><em>С Уважением,</em></div>
<div> </div>
<div><span style="font-family:'comic sans ms' , sans-serif;font-size:16px;line-height:normal"><strong>{{name}}</strong></span></div>
<div><blockquote><div><span style="color:#4b0082">email</span>: <a href="mailto:{{mail}}" rel="noopener noreferrer">{{mail}}</a></div></blockquote></div>
<div><blockquote><div>Телефон: {{telephone}}</div></blockquote></div>
<div><blockquote><div>мобильный: {{mobile}}</div></blockquote></div>
<div><blockquote><div>Должность: {{position}}, {{department}}</div></blockquote></div>
<div><a href="https://360.yandex.ru">site</a></div>
<div> </div>
<div><img src="https://avatars.mds.yandex.net/get-yapic/36689/ibZ4wLaL4Vrw5rZRmobgBL2fu0-1/islands-200" /></div>

Автоматическое удаление пустых полей

Система автоматически удаляет HTML элементы, содержащие пустые переменные:

  • Если у пользователя нет мобильного телефона, строка <div>мобильный: {{mobile}}</div> будет удалена
  • Если у пользователя нет должности, соответствующий блок будет скрыт
  • Пустые строки и теги автоматически очищаются

Создание шаблона

  1. Создайте HTML файл с расширением .html
  2. Используйте переменные в формате {{variable_name}}
  3. Добавьте стили для красивого оформления
  4. Протестируйте с разными пользователями

Примеры шаблонов

Простой шаблон

<div><strong>{{name}}</strong></div>
<div>Email: {{mail}}</div>
<div>Телефон: {{telephone}}</div>
<div>Должность: {{position}}</div>

Корпоративный шаблон

<div style="font-family: Arial, sans-serif; font-size: 12px; color: #333;">
    <div><strong>{{name}}</strong></div>
    <div>{{position}}</div>
    <div>{{department}}</div>
    <div>Email: <a href="mailto:{{mail}}" style="color: #0066cc;">{{mail}}</a></div>
    <div>Телефон: {{telephone}}</div>
    <div>Мобильный: {{mobile}}</div>
</div>

Проверка валидности доменных имен

Функция validate_domain_name

Утилита включает функцию проверки валидности доменных имен, которая соответствует стандартам RFC 1123 и RFC 952.

Поддерживаемые проверки:

  • Длина домена: от 1 до 253 символов
  • Длина частей: каждая часть домена не более 63 символов
  • Минимальное количество частей: 2 (например, example.com)
  • Допустимые символы: буквы (a-z, A-Z), цифры (0-9), дефисы (-)
  • Ограничения на дефисы: не могут быть в начале или конце домена/части
  • Обязательные буквы: домен должен содержать хотя бы одну букву

Примеры использования:

# Валидные домены
validate_domain_name("example.com")        # True
validate_domain_name("subdomain.example.com")  # True
validate_domain_name("my-site.ru")        # True
validate_domain_name("company.co.uk")     # True

# Невалидные домены
validate_domain_name("invalid")           # False (только одна часть)
validate_domain_name(".com")              # False (начинается с точки)
validate_domain_name("example.")          # False (заканчивается точкой)
validate_domain_name("-example.com")      # False (начинается с дефиса)
validate_domain_name("example-.com")      # False (заканчивается дефисом)
validate_domain_name("example@com")       # False (недопустимый символ)

Интеграция в скрипт:

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

Удаление несвязанных доменов в SCIM

Функция remove_unlinked_domains_in_scim_emails_for_all_users

Утилита включает функцию для удаления email адресов с указанными доменами из SCIM пользователей.

Возможности:

  • Массовое удаление: Удаление email адресов с указанными доменами у всех пользователей
  • Валидация доменов: Проверка корректности введенных доменных имен
  • Безопасность: Подтверждение операции перед выполнением
  • Режим тестирования: Возможность просмотра изменений без их применения (DRY_RUN)

Процесс работы:

  1. Ввод доменов: Пользователь вводит домены для удаления (через запятую)
  2. Валидация: Проверка корректности каждого домена
  3. Подтверждение: Запрос подтверждения операции
  4. Выполнение: Удаление email адресов с указанными доменами

Примеры использования:

# Удаление одного домена
olddomain.com

# Удаление нескольких доменов
olddomain.com, anotherdomain.org, legacy-domain.net

Режим тестирования:

Установите DRY_RUN=true в файле .env для просмотра изменений без их применения:

DRY_RUN=true

В этом режиме утилита покажет, какие изменения будут выполнены, но не применит их.

Удаление email адресов по шаблонам для выбранных пользователей (SCIM)

Функция remove_emails_matching_templates_in_scim

Эта функция предназначена для точечного удаления email адресов, которые соответствуют заданным шаблонам, у заранее выбранных пользователей. Операция доступна через пункт меню 1 -> 7 и поддерживает оба режима — предпросмотр (только поиск) и фактическое удаление.

Возможности

  • Выбор целевых пользователей: через интерактивный поиск
  • Шаблоны с подстановками: поддержка * в локальной части и домене
  • Предпросмотр: вывод всех совпадений перед удалением (режим show only)
  • Интеграция с DRY_RUN: логирование предполагаемых изменений без модификации данных

Синтаксис шаблонов

  • *@domain.com — все адреса в домене domain.com
  • *.legacy.org — адреса в любом поддомене legacy.org
  • user@* — любой домен для локальной части user
  • sale*@corp.ru — все алиасы, начинающиеся с sale, в домене corp.ru
  • *@mail.*.corp.ru — адреса во вложенных поддоменах mail.*.corp.ru

Используйте * в любой части шаблона; он соответствует любой последовательности символов, включая пустую строку. Можно вводить несколько шаблонов одновременно, разделяя их пробелами, запятыми или точками с запятой. Сопоставление не чувствительно к регистру. Допустимые символы: буквы, цифры, ., -, @, *.

Режим тестирования (DRY_RUN)

Описание

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

  • Проверки изменений перед их применением
  • Отладки скриптов и конфигураций
  • Обучения пользователей без риска изменения данных
  • Валидации входных данных

Настройка

Установите DRY_RUN=true в файле .env:

DRY_RUN=true

Поведение в режиме DRY_RUN

Операции с пользователями:

  • Просмотр всех изменений в логах
  • Не выполняется изменение userName через SCIM
  • Не выполняется изменение nickname через API 360
  • Не выполняется удаление алиасов
  • Не выполняется удаление email адресов

Операции с подписями:

  • Просмотр шаблонов и подстановки переменных
  • Не выполняется установка подписей пользователям

Операции с группами:

  • Просмотр изменений разрешений
  • Не выполняется изменение настроек групп

Примеры использования

Тестирование изменения nickname:

# В .env установить DRY_RUN=true
python 360_text_admin_console.py
# Выбрать: 1 -> 5
# Ввести старый и новый nickname
# В логах будет: "Dry run: Would change nickname of user old_nick to new_nick"

Тестирование удаления доменов:

# В .env установить DRY_RUN=true
python 360_text_admin_console.py
# Выбрать: 1 -> 7
# Ввести домены для удаления
# В логах будет: "Dry run: Would remove email with domains olddomain.com from user 123456"

Логирование

В режиме DRY_RUN все потенциальные изменения записываются в лог с префиксом "Dry run:":

INFO: Dry run: Would change nickname of user old_nick to new_nick
INFO: Dry run: Would remove alias test@domain.com in _API360_ user 1130000000000001
INFO: Dry run: Would remove email with domains olddomain.com from email contacts in _SCIM_ user 1130000000000001

Отключение режима

Для выполнения реальных изменений установите:

DRY_RUN=false

или удалите строку DRY_RUN из файла .env.

Управление двухфакторной аутентификацией (2FA)

Обзор функций 2FA

Утилита предоставляет комплексный набор инструментов для управления настройками двухфакторной аутентификации в организации Yandex 360.

Доступные операции

1. Выгрузка настроек 2FA для всех пользователей

  • Назначение: Получение полного отчета о настройках 2FA всех пользователей
  • Формат вывода: CSV файл с детальной информацией
  • Параметры: DEFAULT_2FA_SETTINGS_OUTPUT_FILE_ARG

2. Просмотр настроек 2FA для пользователя

  • Назначение: Детальная информация о настройках 2FA конкретного пользователя
  • Поиск: По логину, email, UID или фамилии
  • Отображение: Консольный вывод с форматированием

3. Сброс телефона безопасности

  • Назначение: Удаление настроенного телефона безопасности у пользователя
  • Применение: При потере доступа к телефону или смене номера
  • Безопасность: Требует подтверждения операции

4. Принудительный выход пользователя

  • Назначение: Завершение всех активных сессий конкретного пользователя
  • Применение: При подозрении на компрометацию аккаунта
  • Результат: Пользователь должен будет войти заново

5. Массовый выход пользователей из файла

  • Назначение: Завершение сессий для списка пользователей из CSV файла
  • Формат ввода: CSV файл с пользователями
  • Параметры: DEFAULT_2FA_SETTINGS_INPUT_FILE_ARG

6. Выход пользователей с 2FA без телефона

  • Назначение: Завершение сессий пользователей с включенной 2FA, но без настроенного телефона
  • Применение: При проблемах с доступом к 2FA
  • Автоматизация: Поиск и обработка всех подходящих пользователей

Формат CSV файла настроек 2FA

Структура файла

uid;nickname;displayName;isEnabled;isAdmin;domain2FAEnabled;hasSecurityPhone;personal2FAEnabled;global2FAEnabled;global2FADuration;global2FAPolicy;email;department
1130000069123456;ivan;Иванов Иван;true;false;true;false;false;true;86400;per_user;ivan@company.com;Продажи/Москва
1130000069123457;petr;Петров Петр;true;false;true;true;true;true;86400;per_user;petr@company.com;ИТ/Поддержка

Описание полей

Поле Тип Описание Возможные значения
uid String Уникальный идентификатор пользователя в Yandex 360 Числовая строка (например: 1130000069123456)
nickname String Логин пользователя (часть до @ в email) Строка (например: ivan, petr)
displayName String Отображаемое имя пользователя Полное имя (например: Иванов Иван)
isEnabled Boolean Статус аккаунта пользователя true - активен, false - заблокирован
isAdmin Boolean Является ли пользователь администратором true - администратор, false - обычный пользователь
domain2FAEnabled Boolean Включена ли 2FA на уровне домена (старая модель 2FA) true - включена, false - отключена
hasSecurityPhone Boolean Настроен ли телефон безопасности у пользователя true - настроен, false - не настроен
personal2FAEnabled Boolean Включена ли персональная 2FA у пользователя true - включена, false - отключена
global2FAEnabled Boolean Включена ли глобальная 2FA ([Новая модель 2FA (https://yandex.ru/dev/api360/doc/ru/ref/Domain2FAV2Service/)]) true - включена, false - отключена
global2FADuration Integer Длительность сессии при включенной 2FA (в секундах) в новой модели 2FA Число (например: 86400 = 24 часа)
global2FAPolicy String Политика применения 2FA в новой модели per_domain - для всех, per_user - по по пользователям
email String Основной email пользователя Строка (например: ivan@company.com)
department String Путь до подразделения пользователя `Департамент

Примеры значений

Активный пользователь с полной настройкой 2FA:

1130000069123456;ivan;Иванов Иван;true;false;true;true;true;true;86400;per_domain;ivan@company.com;Продажи|Москва

Заблокированный пользователь:

1130000069123457;petr;Петров Петр;false;false;true;false;false;true;86400;per_domain;petr@company.com;ИТ|Поддержка

Администратор с минимальной 2FA:

1130000069123458;admin;Администратор;true;true;true;false;false;true;3600;per_domain;admin@company.com;Администрирование

Пользователь без настроенного телефона безопасности:

1130000069123459;user;Пользователь;true;false;true;false;false;true;86400;per_user;user@company.com;Бухгалтерия|Регион

Интерпретация комбинаций полей

Состояние domain2FAEnabled hasSecurityPhone personal2FAEnabled global2FAEnabled Описание
Полная 2FA false true true true Пользователь имеет полную защиту 2FA
Частичная 2FA false false true true 2FA включена, но телефон не настроен
Отключенная 2FA false true false false 2FA отключена для пользователя
Доменная 2FA true true false false Только доменная 2FA, без персональной

Практические рекомендации

Анализ проблемных пользователей:

  • Пользователи с hasSecurityPhone=false и (global2FAEnabled=true или domain2FAEnabled=true) - требуют настройки телефона
  • Пользователи с isEnabled=false - заблокированные аккаунты
  • Пользователи с domain2FAEnabled=false - 2FA отключена на уровне домена (старая модель, для всех пользователей)

Фильтрация данных:

# Найти пользователей без телефона безопасности
grep "false;false;true" users_2fa_output.csv

# Найти администраторов
grep "true" users_2fa_output.csv | grep "true;"

# Найти заблокированных пользователей
grep "false;" users_2fa_output.csv

Импорт пользователей для массовых операций: Создайте файл users_2fa_input.csv с колонкой uid для операций:

uid
1130000069123456
1130000069123457
1130000069123458

Параметры конфигурации для 2FA

Параметр Описание Обязательный Пример
DEFAULT_2FA_SETTINGS_OUTPUT_FILE_ARG Файл для экспорта настроек 2FA Нет users_2fa_output.csv
DEFAULT_2FA_SETTINGS_INPUT_FILE_ARG Файл для импорта настроек 2FA Нет users_2fa_input.csv

Примеры использования

Выгрузка настроек 2FA

python 360_text_admin_console.py
# Выбрать: 5 -> 1
# Настройки будут сохранены в файл, указанный в DEFAULT_2FA_SETTINGS_OUTPUT_FILE_ARG

Сброс телефона безопасности

python 360_text_admin_console.py
# Выбрать: 5 -> 3
# Ввести логин, email, UID или фамилию пользователя
# Подтвердить операцию

Массовый выход пользователей

python 360_text_admin_console.py
# Выбрать: 5 -> 5
# Указать путь к CSV файлу с пользователями
# Подтвердить операцию

Выход пользователей с проблемной 2FA

python 360_text_admin_console.py
# Выбрать: 5 -> 6
# Система автоматически найдет и выйдет всех пользователей с включенной 2FA без телефона

Безопасность и ограничения

  • Права доступа: Требуются административные права в организации
  • Подтверждение: Критические операции требуют подтверждения
  • Логирование: Все операции детально логируются
  • Режим тестирования: Поддерживается DRY_RUN для безопасного тестирования

Необходимые разрешения API

Для работы с функциями 2FA требуются следующие разрешения OAuth приложения:

  • ya360_security:domain_2fa_write - Управление настройками 2FA
  • ya360_security:domain_sessions_read - Управление сессиями пользователей

Получение токенов

SCIM API токен

Если у вас для организации настроен SSO режим

  1. Скопируйте SCIM
  2. Создайте приложение с разрешением passport:scim-api.all
  3. Получите токен через client_credentials

Yandex 360 API токен

Настройка OAuth приложения

  1. Для использования приложения необходимо сгенерировать OAuth токен для аутентификации в Yandex 360 API. Токен должен содержать необходимые права для выполнения операций управления ресурсами в организации Yandex 360. Документация - Создание приложения.

Последовательность шагов для создания токена:

  • перейдите на https://oauth.yandex.ru/client/new/. Аутентифицируйтесь от имени администратора организации Yandex 360
  • В предлагаемом окне выберите "Для доступа к API или отладке" и нажмите "Перейти к созданию".

  • заполните поля в форме создания приложения:

    • поле "Название вашего сервиса" - любое название
    • проверьте почту для связи
  • добавьте разрешения для токена. Для этого в разделе "Доступ к данным" найдите и добавьте следующие разрешения:

Название разрешения Что можно делать
directory:read_users читать пользователей
directory:write записывать информацию о пользователях
directory:read_groups читать группы
directory:write_groups записывать информацию о группах
ya360_admin:mail_read_mail_list_permissions читать список разрешений на отправку в группу
ya360_admin:mail_write_mail_list_permissions изменять список разрешений на отправку в группу
ya360_admin:mail_read_shared_mailbox_inventory читать общие ящики
ya360_security:domain_2fa_write читать данные о 2FA
ya360_security:domain_sessions_read разлогинить пользователей
ya360_admin:mail_read_user_settings Читать настройки почты пользователей
ya360_admin:mail_write_user_settings Менять настройки почты пользователей
directory:read_departments Чтение информации о подразделениях
directory:write_departments Запись информации о подразделениях

  • нажмите кнопку "Создать приложение"
  • закройте окно с предложением пройти верификацию через Госуслуги
  • в новом окне "Мои приложения" отображаются свойства созданного приложения. Найдите раздел с ID созданного приложения и скопируйте строку из поля "ClientID":

  • в текстовом редакторе создайте строку вида https://oauth.yandex.ru/authorize?response_type=token&client_id=<ID приложения> и вставьте скопированное значение ClientID из предыдущего шага вместо <ID приложения>

Вставьте получившуюся ссылку в браузер и нажмите "Enter".

  • в окне браузера появляется запрос на подтверждение прав токена. Подтверждение должно выполняться с аккаунта администратора организации (если это сделать от имени обычного пользователя, токен не получит запрашиваемые права из-за отсутствия необходимых разрешений у данного пользовательского аккаунта). Нажмите "Войти как" и получите необходимый токен доступа.

Warning

Скопируйте токен и сохраните его в безопасном месте.

  1. Получите ID организации в Yandex 360. Для этого перейдите в консоль администрирования и в левом нижнем углу интерфейса будет необходимый номер.

  1. Запишите полученные на предыдущем шаге OAuth токен и Org ID в соответствующие переменные в файле .env в том же каталоге, что и сами скрипты.

Подробные инструкции по получению токенов см. в документации Yandex 360.

Автоматическая проверка токенов при запуске

  • SCIM токен: валидируется запросом к /scim/v2/Users; при ошибке SCIM-функции пропускаются, остальные операции продолжают работу.
  • OAuth токен: проверяется — валидность, принадлежность к ORG_ID_ARG и наличие необходимых scopes из таблицы разрешений. При критической ошибке выполнение прекращается, при нехватке прав выводится предупреждение и работа продолжается с ограничениями.

Логирование

  • Консоль: Сообщения уровня INFO
  • Файл: 360_text_admin_console.log с ротацией (10 МБ, 5 копий)
  • Уровень: DEBUG для файла, INFO для консоли

Примеры использования

Массовое изменение userName

# 1. Создать файл с данными пользователей
python 360_text_admin_console.py
# Выбрать: 1 -> 2

# 2. Отредактировать users.csv
# 3. Применить изменения
python 360_text_admin_console.py
# Выбрать: 1 -> 3

Управление разрешениями группы

python 360_text_admin_console.py
# Выбрать: 3 -> 3 -> 1 (установить целевую группу)
# Затем: 3 -> 3 -> 2 (добавить пользователей)

Выгрузка настроек 2FA

python 360_text_admin_console.py
# Выбрать: 5 -> 1
# Настройки будут сохранены в файл users_2fa_output.csv

Управление сессиями пользователей

python 360_text_admin_console.py
# Выбрать: 5 -> 4 (выход одного пользователя)
# Или: 5 -> 5 (массовый выход из файла)
# Или: 5 -> 6 (выход пользователей с проблемной 2FA)

Массовое обновление displayName

# 1. Настроить шаблон формирования displayName
python 360_text_admin_console.py
# Выбрать: 6 -> 1
# Ввести шаблон, например: Ф И1. О1.

# 2. Выгрузить текущие значения displayName
python 360_text_admin_console.py
# Выбрать: 6 -> 2
# Выбрать пользователей для выгрузки
# Файл dn.csv будет создан с текущими и предлагаемыми значениями

# 3. Отредактировать файл dn.csv (при необходимости изменить колонку new_dn)

# 4. Протестировать изменения (установить DRY_RUN=true в .env файле)
python 360_text_admin_console.py
# Выбрать: 6 -> 3

# 5. Применить изменения (установить DRY_RUN=false в .env файле)
python 360_text_admin_console.py
# Выбрать: 6 -> 3

Удаление email адресов в контактной информации пользователя (с помощью SCIM)

python 360_text_admin_console.py
# Выбрать: 1 -> 7
# Указать шаблоны для поиска и удаления email адресов (например: *@olddomain.com, *.legacy.org, sales@*)

Перед подтверждением операции утилита позволяет выбрать конкретных пользователей (поиск, фильтрация из CSV, ручной ввод) и прогнать проверку в режиме предпросмотра.

Поддерживаемые шаблоны

  • Доменные выражения: domain.com, sub.domain.com, *.domain.com
  • Локальная часть: user@*, *@domain.com, sale*@legacy.org
  • Комбинированные выражения: info@legacy.*, *@*.deprecated.net, *@mail.*.corp.ru

Символ * заменяет любое количество символов (включая отсутствие символов) и может использоваться как в локальной части, так и в доменах. Вводите несколько выражений через пробел, запятую или точку с запятой — каждое из них проверяется независимо и регистр при сравнении не учитывается. Допустимые символы: латиница, цифры, точки, дефисы, @ и *.

Тестирование операций в режиме DRY_RUN

# Установить DRY_RUN=true в .env файле
python 360_text_admin_console.py
# Выполнить любую операцию - изменения будут показаны в логах, но не применены

Ограничения и особенности

  • Поддерживаются только пользователи с ID, начинающимся с "113"
  • SCIM API требует отдельного токена и настройки
  • Некоторые операции требуют административных прав
  • Массовые операции могут занимать значительное время
  • Рекомендуется остановить службу SCIM перед изменением userName
  • НОВОЕ: Режим DRY_RUN позволяет тестировать операции без применения изменений

Обработка ошибок

  • Автоматические повторы запросов (до 3 попыток)
  • Детальное логирование ошибок
  • Валидация входных данных
  • Проверка токенов при запуске

Требования

  • Python 3.7+
  • Библиотеки из requirements.txt
  • Действующие токены Yandex 360 API
  • Права администратора организации

Поддержка

Для получения поддержки обратитесь к документации Yandex 360 API или создайте issue в репозитории проекта.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors