Обновление секретов

Ручная ротация SSH-ключей

Для смены SSH-ключей сервисов keystone, nova и neutron выполните следующие действия:

  1. Войдите в хранилище секретов Vault и перейдите в директорию secret_v2 / deployments / <LCM FQDN> / <имя региона> / passwords_yml.

  2. Обновите значение private_key и public_key для параметров:

    • keystone_ssh_key,

    • neutron_ssh_key,

    • nova_ssh_key.

  3. Запустите пайплайн с тегом -t keystone,nova,neutron в параметре KOLLA_ARGS.

Автоматическая ротация пользователей и паролей

Автоматическая ротация пользователей и паролей может использоваться для подключения LDAP и/или SMTP.

Настройка автоматической ротации состоит из следующих шагов:

  1. Настройка переменных для ротации в Vault и конфигурационном файле региона:

  2. Настройка переменных ротации в GitLab.

  3. Создание расписания автоматической ротации.

Настройка основных параметров ротации для подключения LDAP

Важно

Для интеграции с LDAP требуется подготовить две ТУЗ, одна из которых будет использоваться для региона, а другая — для LCM-узла.

Предварительные требования:

  • В HashiСorp Vault должен быть включён и настроен Secrets Engine ldap с созданной в нём парой ролей для пользователей и паролей.

  • На этапе установки LCM должна быть включена интеграция с каталогами LDAP (опция auth LDAP for GitLab and NetBox), а также настроена ролевая модель в OpenStack.

Для настройки основных параметров автоматической ротации для подключения LDAP выполните следующие действия:

  1. Зайдите в Vault в файл паролей региона secret_v2 / deployments / <LCM FQDN> / <имя региона> / passwords_yml.

  2. Создайте новую версию passwords_yml и измените в файле значения для следующих параметров:

    • ldap_user — пользователь из LDAP для настройки ролевой модели в OpenStack в формате ldap-ro;

    • ldap_password — пароль для пользователя ldap_user.

    Сохраните изменения для новой версии.

  3. Откройте веб-интерфейс развёрнутого GitLab и перейдите в репозиторий project_k / deployments / <имя региона>.

  4. Перейдите в конфигурационный файл региона (по умолчанию это globals.d/REGION.yml) и добавьте в него строки:

    ldap_roles:
      - <название первой роли в Vault Secrets Engine ldap в формате ldap-ro1>
      - <название второй роли в Vault Secrets Engine ldap в формате ldap-ro2>
    

Также вы можете настроить регулярное выполнение задач rotate-sa с помощью Pipeline Schedules. Для этого выполните следующие действия:

  1. Перейдите в раздел Build > Pipeline Schedules и создайте новое расписание, нажав на кнопку New schedule.

  2. В поле Description введите название расписания, например, Rotate Vault AD/LDAP.

  3. Задайте часовой пояс в поле Cron timezone.

  4. В поле Interval Pattern выберите необходимую периодичность выполнения задачи rotate-sa, например, Every month. Чтобы задать собственный интервал запуска, выберите вариант Custom и введите cron-выражение. Например:

    • 0 4 * * * — ежедневный запуск в 04:00;

    • 0 4 * * 1 — еженедельный запуск по понедельникам в 04:00;

    • 0 4 1 * * — ежемесячный запуск первого числа в 04:00.

  5. В поле Variables добавьте переменную SCHEDULE_TASK со значением rotate-sa.

  6. Убедитесь, что чек-бокс Activated включен, чтобы планировщик был сразу запущен согласно заданному расписанию.

  7. Нажмите кнопку Create pipeline schedule.

Создание расписания для ротации сервисных аккаунтов

Создание расписания для ротации сервисных аккаунтов

Настройка основных параметров ротации для подключения SMTP

Предварительные требования:

Для настройки основных параметров автоматической ротации для подключения SMTP выполните следующие действия:

  1. Зайдите в Vault в файл паролей региона secret_v2 / deployments / <LCM FQDN> / <имя региона> / passwords_yml.

  2. Создайте новую версию passwords_yml и измените в файле значения для следующих параметров:

    • smtp_user — пользователь из LDAP для шаблона почтового уведомления об алертах в формате ldap-ro;

    • smtp_password — пароль для пользователя smtp_user.

    Сохраните изменения для новой версии.

  3. Откройте веб-интерфейс развёрнутого GitLab и перейдите в репозиторий project_k / deployments / <имя региона>.

  4. Перейдите в конфигурационный файл региона (по умолчанию это globals.d/REGION.yml) и добавьте в него строки:

    smtp_fqdn: "<название почтового домена, например, cloud.itkey.com>"
    smtp_roles:
      - <название первой роли в Vault ldap в формате smtp1>
      - <название второй роли в Vault ldap в формате smtp2>
    

Настройка переменных ротации в GitLab

После задания параметров ротации в Vault и globals.d/REGION.yml необходимо добавить в GitLab переменную vault_ldap_mount, которая используется для автоматизации обращения к секретам внутри Vault. Для этого:

  1. Откройте веб-интерфейс развёрнутого GitLab и перейдите в репозиторий project_k / deployments / <имя региона>.

  2. Перейдите в раздел Settings > CI/CD > Variables и создайте новую переменную с именем vault_ldap_mount и значением, указывающим на название Vault Secrets Engine ldap (например, ldap).

Также в Variables можно добавить опциональные переменные:

  • EXP_THRESHOLD_DAYS — количество дней до окончания TTL (Time to Live) роли, по умолчанию 30;

  • EXP_THRESHOLD_SECONDS — количество секунд до окончания TTL роли, вычисляется автоматически как EXP_THRESHOLD_DAYS * 86400.

Создание расписания автоматической ротации

Для создания и настройки расписания автоматической ротации выполните следующие действия:

  1. Откройте веб-интерфейс развёрнутого GitLab и перейдите в репозиторий project_k / deployments / <имя региона>.

  2. Перейдите в раздел Build > Pipeline Schedules и создайте новое расписание, нажав на кнопку New schedule.

    1. В поле Description введите название расписания, например, Rotate Vault AD/LDAP.

    2. Задайте часовой пояс в поле Cron timezone.

    3. В поле Interval Pattern выберите Every month.

    4. В поле Variables добавьте переменную SCHEDULE_TASK со значением rotate-sa.

    5. Нажмите на чек-бокс Activated, чтобы планировщик был сразу запущен согласно заданному расписанию.

    6. Нажмите кнопку Create pipeline schedule.

Ротация паролей сервисов OpenStack

Для получения информации о ротации паролей для сервисов OpenStack обратитесь к документации OpenStack.

Смена пароля УЗ администратора NetBox

  1. Сгенерируйте новый пароль для УЗ администратора системы управления инфраструктурой NetBox.

    Важно

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

  2. Войдите в интерфейс системы управления инфраструктурой NetBox https://netbox.<имя домена> с действующими учётными данными администратора.

  3. Перейдите в раздел Admin > Users.

  4. Нажмите на кнопку ✏️ напротив пользователя admin.

  5. Введите новый пароль в поля Password и Confirm password и нажмите Save.

  6. Повторно пройдите аутентификацию с обновлённым паролем.

  7. Войдите в интерфейс хранилища секретов https://vault.<имя домена>.

  8. Перейдите в директорию secret_v2 / deployments/ <LCM FQDN> / secrets / accounts, откройте вкладку Secrets и выберите действие Create New Version +.

  9. Замените значение переменной netbox_admin_password на новый пароль и нажмите Save.

Замена токена NetBox

  1. Войдите в интерфейс системы управления инфраструктурой NetBox https://netbox.<имя домена> с учётными данными администратора.

  2. Перейдите в раздел Admin > API Tokens и выберите действие + Add.

  3. Выберите пользователя в графе User.

  4. При необходимости укажите дату истечения токена в поле Expires в формате ГГГГ-ММ-ДД ЧЧ:ММ:СС.

  5. При необходимости укажите описание токена в поле Description.

  6. При необходимости укажите разрешённые сети в поле Allowed IPs в формате «адрес сети/маска».

  7. Выберите действие Create.

  8. Отметьте чекбокс старого токена и нажмите Delete Selected.

  9. Подтвердите удаление нажатием Delete 1 tokens.

  10. Скопируйте новый токен в буфер обмена.

  11. Войдите в интерфейс хранилища секретов https://vault.<имя домена>.

  12. Перейдите в директорию secret_v2 / deployments/ <LCM FQDN> / secrets / accounts, откройте вкладку Secrets и выберите действие Create New Version +.

  13. Замените значение переменной NETBOX_TOKEN и нажмите Save.

Смена пароля УЗ администратора Nexus

  1. Сгенерируйте новый пароль для УЗ администратора платформы для хранения артефактов сборки Nexus.

    Важно

    Рекомендуемая длина пароля от 16 символов, допускается содержание заглавных и строчных букв, цифр и спецсимволов.

  2. Войдите в интерфейс платформы для хранения артефактов сборки Nexus https://nexus.<имя домена> с действующими учётными данными администратора.

  3. Перейдите на страницу администратора admin.

  4. Введите текущий пароль в поле Current Password и новый пароль в поля New Password и New Password (Confirm) и нажмите Save.

  5. Войдите в интерфейс хранилища секретов https://vault.<имя домена>.

  6. Перейдите в директорию secret_v2 / deployments/ <LCM FQDN> / secrets / accounts, откройте вкладку Secrets и выберите действие Create New Version +.

  7. Замените значение переменной nexus_admin_password на новый пароль и нажмите Save.

Замена пароля Nexus в контейнере GitLab-runner

  1. Подключитесь к LCM-узлу по SSH с привилегиями пользователя root.

  2. Подключитесь к контейнеру gitlab-runner, введя команду:

    $ docker exec -it gitlab-runner bash
    
  3. Выполните команду:

    $ echo 'admin:<nexus_admin_password>' | base64
    

    Где <nexus_admin_password> — сгенерированный пароль для УЗ администратора платформы для хранения артефактов сборки Nexus. Значение доступно для просмотра в хранилище секретов.

  4. Полученное значение скопируйте и вставьте в файл /root/.docker/config.json.

  5. Выйдите из контейнера gitlab-runner.

Смена паролей доступа к связанным системам и службам

  1. Сгенерируйте новый пароль для базы данных netbox_db_password.

  2. Сгенерируйте новый пароль для брокера задач netbox_redis_password.

  3. Сгенерируйте новый пароль для кеширования данных netbox_redis_cache_password.

    Важно

    Рекомендуемая длина пароля от 16 символов, допускается содержание заглавных и строчных букв, цифр и спецсимволов.

  4. Войдите в интерфейс хранилища секретов https://vault.<имя домена>.

  5. Перейдите в директорию secret_v2 / deployments/ <LCM FQDN> / secrets / accounts, откройте вкладку Secrets и выберите действие Create New Version +.

  6. Замените значение переменных netbox_db_password, netbox_redis_cache_password и netbox_redis_password на новые пароли и нажмите Save.

Замена паролей в переменных окружения

  1. Подключитесь к LCM-узлу по SSH с привилегиями пользователя root.

  2. Сохраните текущие переменные окружения, введя команду:

    $ cp -r /installer/data/netbox/env /installer/data/netbox/env_backup
    
  3. Скачайте установочный архив из внутреннего репозитория или по внешней ссылке.

  4. Перейдите в папку со скачанным архивом и извлеките из него секреты, введя команду:

    $ tar --strip-components=3 -xzvf <имя файла архива>.tgz -C /installer/data/netbox/env installer/netbox-docker/env/*.env
    
  5. Перейдите в папку с извлечёнными файлами, введя команду:

    $ cd /installer/data/netbox/env
    
  6. В файле netbox.env в текстовом редакторе измените значения для переменных:

    • DB_PASSWORD – замените значение на сгенерированный пароль для базы данных,

    • REDIS_CACHE_PASSWORD – замените значение на сгенерированный пароль для кеширования данных,

    • REDIS_PASSWORD – замените значение на сгенерированный пароль для брокера задач,

    • SUPERUSER_PASSWORD – замените значение на пароль УЗ администратора системы управления инфраструктурой NetBox.

  7. В файле postgres.env в текстовом редакторе измените значение для переменной:

    • POSTGRES_PASSWORD – замените значение на сгенерированный пароль для базы данных.

  8. В файле redis-cache.env в текстовом редакторе измените значение для переменной:

    • REDIS_PASSWORD – замените значение на сгенерированный пароль для кеширования данных.

  9. В файле redis.env в текстовом редакторе измените значение для переменной:

    • REDIS_PASSWORD – замените значение на сгенерированный пароль для брокера задач.

Замена паролей в системах

  1. Подключитесь к контейнеру netbox-postgres, введя команду:

    $ docker exec -it netbox-postgres bash
    
  2. Последовательно введите команды:

    $ psql -h 127.0.0.1 -U netbox -d netbox
    $ \c postgres
    $ ALTER USER netbox WITH PASSWORD 'new_password';
    

    Где new_password — сгенерированный пароль для базы данных. Значение доступно для просмотра в хранилище секретов.

  3. Выйдите из контейнера netbox-postgres.

  4. Подключитесь к контейнеру netbox-redis, введя команду:

    $ docker exec -it netbox-redis  /bin/sh
    
  5. Последовательно введите команды:

    $ redis-cli
    $ AUTH <old_pass>
    $ set mypasswd <new_pass>
    

    Где <old_pass> и <new_pass> — старый и новый пароли для брокера задач. Значения доступны для просмотра в хранилище секретов.

  6. Выйдите из контейнера netbox-redis.

  7. Подключитесь к контейнеру netbox-redis-cache, введя команду:

    $ docker exec -it netbox-redis-cache /bin/sh
    
  8. Последовательно введите команды:

    $ redis-cli
    $ AUTH <old_pass>
    $ set mypasswd <new_pass>
    

    Где <old_pass> и <new_pass> — старый и новый пароли для кеширования данных. Значения доступны для просмотра в хранилище секретов.

  9. Выйдите из контейнера netbox-redis-cache.

  10. Пересоздайте контейнеры с новыми учётными данными, последовательно введя команды:

    $ . /installer/config/settings
    $ docker compose -f $CFG_HOME/netbox-compose.yml up –d
    
  11. Замените переменные окружения файлами из резервной копии, введя команду:

    $ mv /installer/data/netbox/env_backup /installer/data/netbox/env