У меня есть установка 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
вообще (возможно, из-за того, что я что-то упускаю или делаю что-то не так), так что с базой данных, скорее всего, тоже не обращаются.
По моему рецепту 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, собранном из исходных текстов.
. Я провел несколько обширных тестов для различных конфигураций с разными учетными данными в sasldb
.
В заключение выясняется, что больше всего меня преследовало то, что, согласно какой метод аутентификации ( saslauthd
vs. auxprop
) используется (который, в свою очередь, зависит от запрошенного механизма аутентификации - DIGEST-MD5
/ CRAM -MD5
vs. PLAIN
/ LOGIN
), он искал другой домен
. Я не ожидал этого, и поскольку у меня была только одна пара пользователь-домен в sasldb
, он не нашел другой.
Я перечислю некоторые из моих выводов и наблюдений с надеждой что это поможет другим понять проблему и обойти ее:
PLAIN
или LOGIN
механизм, slapd
будет использовать настроенный метод аутентификации в pwcheck_method
в /etc/ldap/sasl2/slapd.conf
. DIGEST-MD5
или CRAM-MD5
, slapd
всегда будет использовать метод auxprop
, независимо от того, что настроено для pwcheck_method
. slapd
использует один и тот же метод для всех 4 механизмов, если вы настроили pwcheck_method: auxprop
. Или вы можете решить использовать 2 разных метода, если настроите что-то еще для pwcheck_method
. auxprop_plugin
в / etc / ldap / sasl2 / slapd. conf
игнорируется. Вместо этого slapd
использует то, что настроено для olcSaslAuxprops
в своей собственной базе данных конфигурации. Обратите внимание, что это верно как для неявного метода auxprop
при запросе механизмов DIGEST-MD5
или CRAM-MD5
], так и для явно настроенного pwcheck_method : auxprop
при запросе одного из двух других механизмов. saslauthd
ищет учетные данные с неприкрашенным именем хоста (т.е. просто ldap-master
) как компонент домена
. Если бы я сделал обоснованное предположение, я бы сказал, что он использует что-то вроде gethostname ()
, чтобы придумать это, так что это можно как-то настроить. auxprop
так или иначе, slapd
использует полное доменное имя (например, ldap-master.example.com
) в качестве домена
составная часть. Вероятно, он получает это из исходного URL-адреса запроса (мои альтернативы для генерации запроса ограничены, когда я хочу использовать STARTTLS и хочу иметь возможность правильно проверить сертификат сервера, который запрашивает совпадающее доменное имя), но, вероятно, это может быть настраивается путем установки olcSaslHost
в базе данных конфигурации slapd
. Обратите внимание, что я не пробовал его настраивать. Итак, чтобы придумать рабочую конфигурацию, у вас есть несколько вариантов:
PLAIN
и LOGIN
через STARTTLS, настройте pwcheck_method
в /etc/ldap/sasl2/slapd.conf
по мере необходимости. Если это будет auxprop
, также настройте olcSaslAuxprops
в базе данных конфигурации slapd
(установите его на sasldb
, например, если вы хотите использовать / etc / sasldb2
в качестве хранилища учетных данных). DIGEST-MD5
(обычно я вижу CRAM-MD5
] рекомендуется не из-за низкого уровня безопасности, поэтому постарайтесь избегать этого), установите olcSaslAuxprops
в базе данных конфигурации slapd
, поскольку будет использоваться метод auxprop
, независимо от того, что вы настроили для pwcheck_method
. DIGEST-MD5
, CRAM-MD5
(однако старайтесь избегать использования CRAM-MD5
), а также набора PLAIN
, LOGIN
(убедитесь, что они используются только через зашифрованное соединение, например STARTTLS-one) и предпочитаю использовать th Один и тот же метод аутентификации для всех из них, а также проверка по одному и тому же набору учетных данных, вы ограничены auxprop
. Сконфигурируйте pwcheck_method: auxprop
в /etc/ldap/sasl2/slapd.conf
и установите olcSaslAuxprops
в требуемый конфигурационный файл sapd
. Если вы хотите иметь возможность использовать механизмы из обоих наборов, используя для них разные методы аутентификации (звучит для меня как кошмар администрирования, но готово), настройте 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 варианта в порядке предпочтения:
saslauthd
, а также slapd
обращаются к sasldb напрямую через auxprop
запросить учетные данные с тем же доменом
(попробуйте установить olcSaslHost
или заставить saslauthd
использовать полное доменное имя), чтобы необходимо заботиться только об одной записи учетных данных для каждого объекта для аутентификации. ИД пользователя
- имя хоста
для нехешированных механизмов через saslauthd
и используйте ИД пользователя
- имя_хоста.domain.name
для механизмов хеширования через auxprop
. Методы CRAM-MD5 и DIGEST-MD5 невозможны при использовании "pwcheck_method: saslauthd". Им нужны простые, незашифрованные пароли в самой LDAP директории.
.