Надёжное хранение паролей

Хранение паролей сервисов в Vault

Castellan — это библиотека, предоставляющая собой общий интерфейс для хранения, генерации и извлечения секретов. Она используется большинством сервисов OpenStack для управления секретами. Как библиотека, Castellan сама по себе не предоставляет хранилище секретов. Вместо этого требуется развертывание реализации на стороне сервера. С помощью интеграции данной библиотеки в oslo.config и корректной настройки Vault можно хранить пароли сервисов OpenStack в Vault вместо текстовых файлов.

Поддерживаются следующие сервисы:

  • AdminUI

  • Cinder

  • DRS

  • Glance

  • Keystone

  • Neutron

  • Nova

  • Placement

  • Horizon

  • Barbican

  • HA

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

  1. Откройте веб-интерфейс GitLab.

  2. Откройте файл globals.d/castellan.yml в репозитории региона и определите services_with_castellan — список сервисов, для которых необходимо включить хранение паролей в Vault.

    services_with_castellan:
      - drs
      - cinder
      - glance
      - neutron
      - nova
      - nova_cell
      - keystone
      - adminui
      - placement
      - horizon
      - barbican
      - consul
    
  3. Задайте следующие настройки для аутентификации в Vault:

    • При аутентификации через AppRole:

      castellan_vault_approle_role_id: ""
      castellan_vault_approle_secret_id: ""
      
    • При использовании Vault Enterprise и namespaces:

      castellan_vault_namespace: ""
      
    • При аутентификации через токен:

      castellan_vault_root_token_id: ""
      

Хранение паролей экспортёров Prometheus в Vault

Для настройки хранения паролей экспортёров Prometheus в Vault, выполните следующие действия:

  1. Откройте веб-интерфейс GitLab.

  2. Откройте файл globals.d/castellan.yml в репозитории региона и добавьте строки:

    prometheus_mysqld_exporter_use_vault: true
    prometheus_rabbitmq_exporter_use_vault: true
    prometheus_openstack_exporter_use_vault: true
    

Обновление секретов паролей в Vault

Ротация секретов в Vault невозможна. key_manager для Vault внутри Castellan предлагает различные CRUD-методы для секретов, но не обновление. Секреты нельзя обновлять, можно только удалять и создавать новые. Для обновления секрета для доступа к самому Vault в key_manager настроено обновление TTL-токена роли для авторизации.

Хеширование паролей сервисов

Пароли к некоторым сервисам можно хранить в хешированном виде. Реализовано для HAProxy в части:

  • OpenSearch

  • Prometheus

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

  1. Откройте веб-интерфейс GitLab.

  2. Откройте файл globals.d/REGION.yml в репозитории региона и определите services_with_hashed_password — список сервисов, для которых необходимо включить сокрытие паролей с помощью хеширования, например:

    services_with_hashed_password:
      - opensearch
      - prometheus
      - rabbitmq
      - proxysql
    
  3. Запустите пайплайн для развёртывания нужных компонентов.

  4. При этом должна автоматически запуститься задача setup-castellan, которая предзаполнит значения паролей в Vault.

Защита паролей в Consul

Пароли к сервису Consul можно скрывать в Vault.

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

  1. Откройте веб-интерфейс GitLab.

  2. Откройте файл globals.d/REGION.yml в репозитории региона и определите consul_use_vault:

    consul_use_vault: true
    
  3. Создайте новый пайплайн: Build > Pipelines > New Pipeline.

  4. В переменной KOLLA_ARGS укажите значение -t consul.

  5. Запустите пайплайн, нажав кнопку New pipeline.

  6. Дождитесь завершения задач на этапе setup.

  7. Запустите задачу deploy на этапе deploy и дождитесь её завершения.

Защита паролей в Redis, Grafana

Пароли к сервису Redis и Grafana можно скрывать в Vault.

Для настройки скрытия паролей сервисов Redis и Grafana, выполните следующие действия:

  1. Откройте веб-интерфейс GitLab.

  2. Откройте файл globals.d/REGION.yml в репозитории региона и определите ``enable_vault_agent ``:

    enable_vault_agent: true
    
  3. Создайте новый пайплайн: Build > Pipelines > New Pipeline.

  4. В переменной KOLLA_ARGS укажите значение -t redis,grafana.

  5. Запустите пайплайн, нажав кнопку New pipeline.

  6. Дождитесь завершения задач на этапе setup.

  7. Запустите задачу deploy на этапе deploy и дождитесь её завершения.

Переключение аутентификации libvirt с SASL на TLS

Пароли к сервису libvirt можно переключить на использование TLS

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

  1. Откройте веб-интерфейс GitLab.

  2. Откройте файл globals.d/REGION.yml в репозитории региона и настройте параметры следующим образом:

    libvirt_enable_sasl: false
    libvirt_tls: "yes"
    
  3. Запустите пайплайн генерации паролей и сертификатов для региона, как описано в разделе Генерация паролей и сертификатов для региона.

  4. Создайте новый пайплайн: Build > Pipelines > New Pipeline.

  5. В переменной KOLLA_ARGS укажите значение -t nova.

  6. Запустите пайплайн, нажав кнопку New pipeline.

  7. Дождитесь завершения задач на этапе setup.

  8. Запустите задачу deploy на этапе deploy и дождитесь её завершения.