Как использовать аутентификацию Windows с док-контейнером SQL Server

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

  1. Контейнер Windows с ASP.NET
  2. Контейнер Windows с SQL Server

Легкая работа и много примеров. Однако во всех примерах необходимо использовать проверку подлинности SQL и указывать жестко заданный пароль SA в качестве переменной среды при запуске контейнера сервера SQL. Вам также необходимо жестко закодировать пароль SA в строке подключения в коде ASP.Net (или также предоставить его другим способом в файле конфигурации и т. д.).

В итоге во всех примерах пароль где-то жестко запрограммирован.

В большинстве приложений, которые мы сейчас разрабатываем, мы на самом деле используем проверку подлинности Windows или групповую управляемую учетную запись службы. Но, насколько я знаю, вы не можете добавить контейнер Windows в домен, поэтому SQL-сервер не является частью домена Windows, поэтому я не вижу способа использовать здесь аутентификацию Windows.

Так есть ли у кого-нибудь альтернатива жесткому кодированию паролей таким образом?


person IProgrammer    schedule 30.12.2016    source источник


Ответы (3)


Я занимаюсь точно такой же проблемой. Здесь представлена ​​наиболее полная процедура, которую я найденный. Хитрость заключается в использовании gMSA.

Но, как говорит в конце JanneRantala, у меня та же проблема при попытке добавить нового пользователя в базу данных:

Сообщение 15401, уровень 16, состояние 1, строка 3 Пользователь Windows NT или группа «ВАШ_ДОМЕН\gmsa$» не найдена. Проверьте имя еще раз.

person G. Gomes    schedule 19.01.2017
comment
Спасибо. Я также читал о gMSA, но не могу полностью понять, как работает аутентификация. Аналогичная проблема может быть с проверкой подлинности Windows на сервере IIS. Надеюсь, что по мере развития этой замечательной технологии в среде Windows будет появляться более актуальная документация. - person IProgrammer; 20.01.2017

Вот пошаговое руководство, как заставить его работать. Пошаговое руководство по контейнерам Windows

Однако это не сработает, если ваш SQL также работает в контейнере, поскольку сам SQL-сервер должен быть частью Active Directory, чтобы иметь возможность использовать учетные записи GMSA.

person Gregory Suvalian    schedule 22.01.2017
comment
Спасибо. Я уже готовил это раньше. Но это именно та проблема, которую я пытаюсь решить. Я хочу, чтобы все приложение запускалось в контейнерах — как sql, так и IIS. - person IProgrammer; 23.01.2017
comment
Если они работают в разных контейнерах, это никогда не будет возможно. Если они работают в одном контейнере, то, вероятно, есть способ обойти это. Также вам не нужно жестко кодировать в контейнер какие-либо данные, если это ваша основная задача, вы можете передавать секреты через переменные среды при запуске контейнера. - person Gregory Suvalian; 23.01.2017
comment
Спасибо ГСА. После прочтения вашего комментария я прочел еще немного и, похоже, это может быть хорошим путем для продвижения вперед: docker" rel="nofollow noreferrer">ctl.io/developers/blog/post/ - person IProgrammer; 23.01.2017
comment
Что ж, если вы внимательно посмотрите, это все еще дерьмовый способ сделать это, потому что ваша переменная среды, хотя и не жестко запрограммирована, все же доступна для чтения любому, у кого есть работающий контейнер. Лучше, чем жесткое кодирование, но все еще сомнительно. Я думаю, что планирую попробовать поместить сертификат в образ контейнера и использовать конструкции powershell CMS для передачи секретов в контейнер, которые во время запуска будут декодированы во время выполнения и применены. Таким образом, вам нужен не только доступ к секрету, но и доступ к ключу для расшифровки, чтобы это работало. Следующим шагом я попытаюсь сохранить этот секрет в поле DNS TXT. - person Gregory Suvalian; 23.01.2017
comment
Оказывается, если вы используете docker swarm, теперь есть новый API для использования секретов: infoq.com/news/2017/01/docker-1.13 - person IProgrammer; 23.01.2017
comment
Только для Linux в деталях - person Gregory Suvalian; 23.01.2017
comment
Видел это, но я видел, что контейнеры Windows в режиме роя поддерживаются: channel9 .msdn.com/Blogs/containers/Docker-Swarm-Part-2, поэтому я надеялся, что они ошиблись :) - person IProgrammer; 23.01.2017

Аутентификация Windows автоматически включается в контейнерах Windocks SQL Server. Подробнее см. здесь. Контейнеры SQL Server, созданные в Windocks, — это именованные экземпляры SQL Server, созданные автоматически из службы SQL по умолчанию, которая уже установлена ​​на Windows Server (2012 R2 или 2016). Любые учетные записи Windows в экземпляре по умолчанию автоматически включаются в экземплярах контейнера.

person rameshpa    schedule 24.12.2017