Как использовать билет Windows Kerberos в WSL и / или Docker

Я мало знаю об аутентификации Kerberos, у меня просто есть базовый опыт настройки и использования. Недавно я заметил, что в Windows настроена встроенная реализация Kerberos. Поэтому, когда я запускаю klist в PowerShell, я получаю хороший список доступных билетов. Для различных тем Dev-Ops мы используем Linux в нашей команде с WSL и Docker в качестве агента сборки и локальной среды разработки. Наш образ докера хорошо настроен для Kerberos, и я могу использовать kinit для получения билета. Однако в этом случае пользователю придется снова ввести свои учетные данные.

Недавно я видел следующий ответ ( ссылка ):

Как только вы войдете в Windows, LSA сохранит ваши основной и пароль в памяти и восстановить новый билет, как только это необходимо.

Вопрос : Есть ли способ получить и скопировать билет Kerberos из Windows в контейнер Docker или в среду WSL, работающую в той же системе? (Очевидно, вопрос больше о том, «как», чем о «есть ли решение» ...)

В обоих случаях у нас есть общие тома между Linux и Windows.

Также есть сообщение на Reddit по аналогичной теме: ссылка

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

Примечание. В моем случае у нас есть корпоративная сетевая среда с контроллерами домена. На настроенных узлах Linux (рабочий стол Linux, контейнер Docker) kinit работает нормально.

Дополнительные ссылки:

Билет Kerberos хранится в кэше учетных данных. В Windows поддерживается несколько кешей учетных данных:

  • ФАЙЛОВЫЕ кеши: простые и наиболее переносимые. Для хранения одних учетных данных за другими используется простой формат плоского файла. Это значение по умолчанию для Linux и OS X.
  • Кэш API: реализован только в Windows, он взаимодействует с серверным процессом, который хранит учетные данные в памяти. Похоже, это значение по умолчанию в Windows.

Примечание: мне предложили переместить этот вопрос сюда из переполнения стека.

2
задан 16 October 2020 в 10:07
1 ответ

С клиентом MIT файл кэша учетных данных является правильным способом, но вам нужно еще кое-что внутри образа контейнера. например внутри Ubuntu Container-

  • клиент kerberos, например. установлен пакет krb5-user
  • конфигурация kerberos /etc/krb5.conf

Настройте переменную %KRB5CCNAME% на вашем хосте, указывающую на файл. например c:\temp\krb5.cache

При создании экземпляра контейнера монтируйте c:\temp\krb5.cache по пути /tmp/krb5.cache. и экспортируйте $KRB5CCNAME переменную внутри контейнера в путь к файлу (или настройте [libdefaults] default_ccache_name = FILE:... )

Лучше работать с таблицами ключей и установка keytab внутри контейнера и kinit из этого ключевого файла.

0
ответ дан 16 November 2020 в 19:28

Теги

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