Настройка подключения к S3-совместимому хранилищу
Чтобы использовать S3-совместимое хранилище в качестве пространства для хранения общих файлов конфигураций и файлов состояний, выполните шаги:
-
Cоздайте конфигурационный файл
/etc/salt/master.d/fileserver_backend.confи в параметреfileserver_backendукажите имя хранилища, используемое в качестве бэкенда для файлов.Пример:
fileserver_backend: - s3fs
-
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.Подробное описание всех параметров приведено в официальной документации.
-
-
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:
-
Скопируйте файл СА-сертификатов на сервер управления (master).
-
Определите расположение хранилища сертификатов на сервере управления (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'
-
Добавьте сертификат в хранилище.
Пример команды для добавления сертификата
ca.crt:cat ca.crt | sudo tee -a /opt/saltstack/salt/lib/python3.10/site-packages/certifi/cacert.pem
-
В конфигурационном файле
/etc/salt/master.d/s3.confзадайте значение параметраverify_ssl: True(аналогично параметруhttps_enable: True).Пример:
s3.verify_ssl: True s3.https_enable: True
-
-
вариант 2:
-
Разместите файл СА-сертификатов, используемый в качестве Issuer в S3-совместимом хранилище, на сервере управления (master) по пути
/etc/salt/pki/ca.crt. -
В конфигурационном файле
/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
-