Kubernetes, фланелевые и выставляющие сервисы

У меня есть установка kubernetes, которая работает нормально, но я не могу предоставлять службы извне. Я думаю, моя сеть настроена неправильно:

  • адреса служб kubernetes: - service-cluster-ip-range = 172.16.0.1 / 16

  • конфигурация фланелевой сети: etcdctl get / test.lan / network / config {"Сеть": "172.17.0.0/16"}[12143 visibledocker настройка подсети: - bip = 10.0.0.1 / 24

  • Hostnode IP: 192.168. 4.57

У меня запущена служба nginx, и я попытался раскрыть ее так:

[root@kubemaster ~]# kubectl get pods
NAME          READY     STATUS    RESTARTS   AGE
nginx-px6uy   1/1       Running   0          4m
[root@kubemaster ~]# kubectl get services
NAME         LABELS                                    SELECTOR    IP(S)           PORT(S)    AGE
kubernetes   component=apiserver,provider=kubernetes   <none>      172.16.0.1      443/TCP    31m
nginx        run=nginx                                 run=nginx   172.16.84.166   9000/TCP   3m

, а затем я открыл службу следующим образом:

kubectl expose rc nginx --port=9000 --target-port=9000 --type=NodePort
NAME      LABELS      SELECTOR    IP(S)     PORT(S)    AGE
nginx     run=nginx   run=nginx             9000/TCP   292y

Теперь я надеюсь, что смогу добраться до Контейнер nginx на IP-адресе hostnodes ( 192.168.4.57 ) - я неправильно понял сеть? Если бы у меня был, они не должны иметь соответствующий DN (вместе с паролем) в дереве каталогов. Вместо этого предполагается, что их учетные данные должны храниться извне, поэтому SASL .

Я использую saslauthd прямо сейчас (это несложное требование, если его можно заставить работать с прямым доступом к sasldb, например), и он отлично работает с использованием механизмов PLAIN и LOGIN , в то время как он не работает с использованием механизмов DIGEST-MD5 и CRAM -MD5 .

Что я упускаю или делаю неправильно? Как мне заставить его работать с DIGEST-MD5 ?


OpenLDAP настроен для SASL в /etc/ldap/sasl2/slapd.conf , например этот: В целях тестирования я сейчас использую olcAccess: to * by dn.regex = "replication" read by * break , чтобы гарантировать, что логин репликации получит хотя бы доступ для чтения ко всему (да, я знаю, что это небезопасно и я дам ему соответствующие разрешения для производства) в главном дереве LDAP.

Учетные данные находятся в / etc / sasldb2 , и они успешно проверяются при использовании PLAIN или ВХОД (см. Выше). Для справки это выглядит так:

# sasldblistusers2
replication@ldap-master: userPassword
…

# db_dump -p /etc/sasldb2 
VERSION=3
format=print
type=hash
h_nelem=4
db_pagesize=4096
HEADER=END
 replication\00ldap-master\00userPassword
 PasswordCensored
…

Однако в случае DIGEST-MD5 и CRAM-MD5 , похоже, не связывается с saslauthd вообще (возможно, из-за того, что я что-то упускаю или делаю что-то не так), так что с базой данных, скорее всего, тоже не обращаются.

7
задан 19 December 2015 в 13:47
3 ответа

По моему рецепту OpenLDAP должен напрямую проверять /etc/sasldb2.

Первый шаг: убедиться, что /etc/sasldb2 принадлежит пользователю slapd.

Следующий шаг: сделать так, чтобы slapd не искал учетные данные в дереве каталогов, что делается следующим образом:

dn: cn=config
changetype: modify
replace: olcSaslAuxprops
olcSaslAuxprops: sasldb

Позже вам также понадобится правило olcAuthzRegexp, но чтобы проверить, работает ли auth, в этом нет необходимости.

Эти настройки работают на Debian GNU/Linux Jessie OpenLDAP-2.4.40, собранном из исходных текстов.

.
4
ответ дан 2 December 2019 в 23:40

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

В заключение выясняется, что больше всего меня преследовало то, что, согласно какой метод аутентификации ( saslauthd vs. auxprop ) используется (который, в свою очередь, зависит от запрошенного механизма аутентификации - DIGEST-MD5 / CRAM -MD5 vs. PLAIN / LOGIN ), он искал другой домен . Я не ожидал этого, и поскольку у меня была только одна пара пользователь-домен в sasldb , он не нашел другой.

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

  1. Если вы запросите PLAIN или LOGIN механизм, slapd будет использовать настроенный метод аутентификации в pwcheck_method в /etc/ldap/sasl2/slapd.conf .
  2. Если вы запрашиваете DIGEST-MD5 или CRAM-MD5 , slapd всегда будет использовать метод auxprop , независимо от того, что настроено для pwcheck_method .
  3. Фактически, это означает, что вы можете иметь slapd использует один и тот же метод для всех 4 механизмов, если вы настроили pwcheck_method: auxprop . Или вы можете решить использовать 2 разных метода, если настроите что-то еще для pwcheck_method .
  4. В любом случае, auxprop_plugin в / etc / ldap / sasl2 / slapd. conf игнорируется. Вместо этого slapd использует то, что настроено для olcSaslAuxprops в своей собственной базе данных конфигурации. Обратите внимание, что это верно как для неявного метода auxprop при запросе механизмов DIGEST-MD5 или CRAM-MD5 ], так и для явно настроенного pwcheck_method : auxprop при запросе одного из двух других механизмов.
  5. В моем случае saslauthd ищет учетные данные с неприкрашенным именем хоста (т.е. просто ldap-master ) как компонент домена . Если бы я сделал обоснованное предположение, я бы сказал, что он использует что-то вроде gethostname () , чтобы придумать это, так что это можно как-то настроить.
  6. В моем случае при прохождении auxprop так или иначе, slapd использует полное доменное имя (например, ldap-master.example.com ) в качестве домена составная часть. Вероятно, он получает это из исходного URL-адреса запроса (мои альтернативы для генерации запроса ограничены, когда я хочу использовать STARTTLS и хочу иметь возможность правильно проверить сертификат сервера, который запрашивает совпадающее доменное имя), но, вероятно, это может быть настраивается путем установки olcSaslHost в базе данных конфигурации slapd . Обратите внимание, что я не пробовал его настраивать.

Итак, чтобы придумать рабочую конфигурацию, у вас есть несколько вариантов:

  1. Если вас устраивает просто PLAIN и LOGIN через STARTTLS, настройте pwcheck_method в /etc/ldap/sasl2/slapd.conf по мере необходимости. Если это будет auxprop , также настройте olcSaslAuxprops в базе данных конфигурации slapd (установите его на sasldb , например, если вы хотите использовать / etc / sasldb2 в качестве хранилища учетных данных).
  2. Если вас устраивает только DIGEST-MD5 (обычно я вижу CRAM-MD5 ] рекомендуется не из-за низкого уровня безопасности, поэтому постарайтесь избегать этого), установите olcSaslAuxprops в базе данных конфигурации slapd , поскольку будет использоваться метод auxprop , независимо от того, что вы настроили для pwcheck_method .
  3. Если вы хотите иметь возможность использовать механизмы из набора DIGEST-MD5 , CRAM-MD5 (однако старайтесь избегать использования CRAM-MD5 ), а также набора PLAIN , LOGIN (убедитесь, что они используются только через зашифрованное соединение, например STARTTLS-one) и предпочитаю использовать th Один и тот же метод аутентификации для всех из них, а также проверка по одному и тому же набору учетных данных, вы ограничены auxprop . Сконфигурируйте pwcheck_method: auxprop в /etc/ldap/sasl2/slapd.conf и установите olcSaslAuxprops в требуемый конфигурационный файл sapd .
  4. Если вы хотите иметь возможность использовать механизмы из обоих наборов, используя для них разные методы аутентификации (звучит для меня как кошмар администрирования, но готово), настройте pwcheck_method в /etc/ldap/sasl2/slapd.conf соответственно для PLAIN и ВХОДИТЕ и помните, что вы вынуждены использовать auxprop для DIGEST-MD5 CRAM-MD5 , если вы настаиваете) и установите olcSaslAuxprops в базе данных конфигурации slapd по мере необходимости.

    • Если вы настроили saslauthd для нехешированных механизмов и убедитесь, что saslauthd обращается к другой базе данных, чем та, что slapd обращается через auxprop или используйте что-то еще, кроме sasldb для olcSaslAuxprops , у вас они хорошо разделены, и беспокоиться не о чем.

    • Если вы настроили saslauthd для нехешированных механизмов и sasldb для auxprop для ha shed, и пусть они обращаются к той же базе данных учетных данных, у вас есть 3 варианта в порядке предпочтения:

      1. Каким-то образом убедитесь, что оба saslauthd , а также slapd обращаются к sasldb напрямую через auxprop запросить учетные данные с тем же доменом (попробуйте установить olcSaslHost или заставить saslauthd использовать полное доменное имя), чтобы необходимо заботиться только об одной записи учетных данных для каждого объекта для аутентификации.
      2. Сознательно принять решение использовать разные учетные данные для нехешированных и хэшированных механизмов. Используйте пару ИД пользователя - имя хоста для нехешированных механизмов через saslauthd и используйте ИД пользователя - имя_хоста.domain.name для механизмов хеширования через auxprop .
      3. Сохраните две учетные записи для каждого объекта для аутентификации - одну с «hostname», а другую с «hostname.domain.name» - и сохраните пароли оба синхронизированы (тьфу).
0
ответ дан 2 December 2019 в 23:40

Методы CRAM-MD5 и DIGEST-MD5 невозможны при использовании "pwcheck_method: saslauthd". Им нужны простые, незашифрованные пароли в самой LDAP директории.

.
2
ответ дан 2 December 2019 в 23:40

Теги

Похожие вопросы