Monday, October 5, 2015

MS SQL Server. Настройка Windows аутетификации для linked серверов


  1. Для примера возьмем ситуацию. Есть такая схема: <клиентский ПК> - <SQL Server 1> - <SQL Server 2>
    SQL Server 2 - это linked сервер для SQL Server 1
    Нужно настроить Windows аутентификацию между SQL Server 1 и SQL Server 2.
  2. Обязательные условия:
    • службы SQL Server-а должны быть запущены от имени доменной учетной записи
    • учетные записи, которые будут работать с linked сервером должны быть зарегистрированы на обоих SQL серверах и им должны быть выданы соответствующие права
  3. Тестовая конфигурация выглядит так:
    SQL Server 1: hostname - sqlsrv1.domain.com   service account - domain\srv_sqlsrv1
    SQL Server 2: hostname - sqlsrv2.domain.com   service account - domain\srv_sqlsrv2
  4. Заходим на контролер домена и проверяем есть ли SPN записи для учетных записей srv_sqlsrv1 и srv_sqlsrv2
    setspn -L  domain\srv_sqlsrv1
    setspn -L  domain\srv_sqlsrv2
  5. Должны быть созданы SPN записи для службы MSSQLSvc. Если их нет, создаем для обоих серверов:
    setspn -A MSSQLSvc/sqlsrv1.domain.com domain\srv_sqlsrv1
    setspn -A MSSQLSvc/sqlsrv1.domain.com:1433 domain\srv_sqlsrv1
    setspn -A MSSQLSvc/sqlsrv2.domain.com domain\srv_sqlsrv2
    setspn -A MSSQLSvc/sqlsrv2.domain.com:1433 domain\srv_sqlsrv2
  6. Заходим в консоль Active Directory Users and Computers и находим учетные записи обоих сервров и их сервисных учетных записей. Для них необходимо:
    • проверить, что опция "Account is sensitive and cannot be delegated" на вкладке Account отключена для обоих сервисных учетных записей
    • установить опцию "Trust this user for delegation to any service (Kerberos only)" на вкладке Delegation для сервисных учетных записей
    • установить опцию "Trust this computer for delegation to any service (Kerberos only)" на вкладке Delegation для учетных записей серверов
  7. Теперь можно создавать и настраивать linked сервер.
    • Вариант 1.
      В свойсвах linked сервера на вкладке Security кликаем Add и выбираем логин на SQL сервере, который будет подключаться к удаленному SQL серверу. И устанавливаем птичку Impersonate.
    • Вариант 2.
      В свойсвах linked сервера на вкладке Security внизу выбиравем вариант "Be made using the login's current security context". Теперь все обращения к удаленному SQL серверу будут автоматически выполняться от имени доменного пользователя, который иницировал запрос.

No comments:

Post a Comment