Настройка подключения к S3-совместимому хранилищу

Чтобы использовать S3-совместимое хранилище в качестве пространства для хранения общих файлов конфигураций и файлов состояний, выполните шаги:

  1. Cоздайте конфигурационный файл /etc/salt/master.d/fileserver_backend.conf и в параметре fileserver_backend укажите имя хранилища, используемое в качестве бэкенда для файлов.

    Пример:

    fileserver_backend:
      - s3fs
  1. Cоздайте конфигурационный файл /etc/salt/master.d/s3.conf и задайте в нем настройки подключения к S3-совместимому хранилищу.

    Пример:

    s3.service_url: <s3_hostname>:<s3_port>
    s3.keyid: <acceess_key>
    s3.key: <secret-key>
    s3.buckets:
      - salt-bucket
    s3.path_style: True
    s3.location: <region>

    Где:

    • s3.service_url — URL-адрес и порт для обращения к S3-совместимому хранилищу;

    • s3.keyid — ключ доступа, который обеспечивает авторизацию и доступ к S3-совместимому хранилищу;

    • s3.key — секретный ключ, который обеспечивает авторизацию и доступ к S3-совместимому хранилищу;

    • s3.buckets — имя бакета (например, salt-bucket) для хранения файлов состояния и формул;

    • s3.path_style — стиль представления пути к объектам в S3-совместимом хранилище;

    • s3.location — регион, в котором расположено S3-совместимое хранилище.

      Для хранилища Ceph параметр s3.location не учитывается. Если вы используете Сeph в качестве хранилища, укажите значение default.
      Подробное описание всех параметров приведено в официальной документации.
  1. Cоздайте конфигурационный файл /etc/salt/master.d/api_auth.conf и задайте в нем настройки аутентификации в модуле salt-api.

    Пример файла при использовании PAM-аутентификации:

    external_auth:
      pam:
        salt_api:
           - ".*"
           - "@runner"
           - "@wheel"
           - "@jobs"

    Где:

    • external_auth — настройки параметров внешней аутентификации для заданных пользователей на выполнение определенных функций на агентах (minions);

      • pam —  для аутентификации используется PAM — стандартный механизм аутентификации в Unix-подобных системах:

        • salt_api — имя пользователя (данный пользователь) должен быть добавлен в систему; для пользователя должен быть задан пароль, для которого применяются правила доступа, перечисленные ниже:

          • .* — разрешает доступ ко всем целям;

          • @runner — разрешает доступ к функциям runner — механизму в SaltStack, который позволяет выполнять задачи управления и получать информацию о состоянии системы;

          • @wheel — разрешает доступ к функциям wheel — механизму в SaltStack, который используется для управления и мониторинга систем в реальном времени;

          • @jobs — разрешает доступ к информации о заданиях (jobs), например, просмотр состояния и результатов выполнения заданий.

    Пример файла при использовании LDAP-аутентификации:

    external_auth:
      ldap:
        <доменный пользователь>:
           - ".*"
           - "@runner"
           - "@wheel"
           - "@jobs"
    auth.ldap.uri: 'ldaps://<ip-адрес сервера samba>:636'
    
    auth.ldap.scope: 2
    auth.ldap.no_verify: True
    auth.ldap.anonymous: False
    auth.ldap.groupou: 'Groups'
    
    auth.ldap.basedn: DC=<имя домена>,DC=<имя домена>,DC=<имя домена> (пример: DC=test,DC=example,DC=com)
    
    auth.ldap.binddn: CN={{username}},CN=Users,DC=<имя домена>,DC=<имя домена>,DC=<имя домена> пример: DC=test,DC=example,DC=com)
    auth.ldap.bindpw: ""
    
    auth.ldap.filter: uid={{username}}
    auth.ldap.accountattributename: memberUid
    auth.ldap.groupclass: posixGroup

    Где:

    • external_auth — настройки параметров внешней аутентификации для заданных пользователей на выполнение определенных функций на агентах (minions);

      • ldap —  для аутентификации используется LDAP — стандартный механизм аутентификации в Unix-подобных системах:

        • <доменный пользователь> — имя доменного пользователя (данный пользователь) должен быть добавлен в систему; для пользователя должен быть задан пароль, для которого применяются правила доступа, перечисленные ниже:

          • .* — разрешает доступ ко всем целям;

          • @runner — разрешает доступ к функциям runner — механизму в SaltStack, который позволяет выполнять задачи управления и получать информацию о состоянии системы;

          • @wheel — разрешает доступ к функциям wheel — механизму в SaltStack, который используется для управления и мониторинга систем в реальном времени;

          • @jobs — разрешает доступ к информации о заданиях (jobs), например, просмотр состояния и результатов выполнения заданий;

    • auth.ldap.uri — URI для подключения к серверу LDAP с использованием защищенного протокола LDAPS (LDAP Secure);

    • auth.ldap.scope — область поиска в LDAP;

    • auth.ldap.no_verify — определяет, следует или нет проверять сертификат сервера LDAP;

    • auth.ldap.anonymous — определяет, будет ли аутентификация производиться анонимно или нет;

    • auth.ldap.groupou — имя контейнера (или организационной единицы), в котором находятся группы пользователей;

    • auth.ldap.basedn — базовый DN (Distinguished Name) для поиска в LDAP — это корень дерева, где начинается поиск пользователей и групп;

    • auth.ldap.binddn — DN пользователя, который будет использоваться для подключения к серверу LDAP; {{username}} должно быть заменено на имя пользователя во время аутентификации;

    • auth.ldap.bindpw — пароль для пользователя, указанного в binddn; если поле пустое, это означает, что используется другой метод аутентификации или пароль отсутствует;

    • auth.ldap.filter-- фильтр для поиска пользователя в LDAP по его UID (идентификатору пользователя); {{username}} должно быть заменено на фактическое имя пользователя;

    • auth.ldap.accountattributename — атрибут, который используется для определения членов группы в LDAP;

    • auth.ldap.groupclass — класс объектов групп в LDAP, который используется для поиска групп пользователей.

Настройка SSL

Чтобы подключиться к S3-совместимому хранилищу используя защищенное SSL-соединение, в конфигурационном файле /etc/salt/master.d/s3.conf задайте значения параметров:

s3.https_enable: True
s3.verify_ssl: False
При выставлении значения False для параметра verify_ssl валидация сертификата S3-совместимого хранилища выполняться не будет.

Если требуется валидация сертификатов S3-совместимого хранилища, выполните следующие действия, выбрав один из двух вариантов, описанных ниже:

  • вариант 1:

    1. Скопируйте файл СА-сертификатов на сервер управления (master).

    2. Определите расположение хранилища сертификатов на сервере управления (master):

      $ /opt/saltstack/salt/bin/python3
      Python 3.10.13 (main, Oct  4 2023, 21:54:22) [GCC 11.2.0] on linux
      Type "help", "copyright", "credits" or "license" for more information.
      >>> import certifi
      >>> certifi.where()
      '/opt/saltstack/salt/lib/python3.10/site-packages/certifi/cacert.pem'
    3. Добавьте сертификат в хранилище.

      Пример команды для добавления сертификата ca.crt:

      cat ca.crt | sudo tee -a /opt/saltstack/salt/lib/python3.10/site-packages/certifi/cacert.pem
    4. В конфигурационном файле /etc/salt/master.d/s3.conf задайте значение параметра verify_ssl: True (аналогично параметру https_enable: True).

      Пример:

      s3.verify_ssl: True
      s3.https_enable: True
  • вариант 2:

    1. Разместите файл СА-сертификатов, используемый в качестве Issuer в S3-совместимом хранилище, на сервере управления (master) по пути /etc/salt/pki/ca.crt.

    2. В конфигурационном файле /etc/salt/master.d/s3.conf задайте значение параметра verify_ssl: /etc/salt/pki/ca.crt.

      Пример:

      s3.verify_ssl: /etc/salt/pki/ca.crt
      s3.https_enable: True