Управление учетными данными безопасности SharePoint - Изменения паролей в среде SharePoint

ОГЛАВЛЕНИЕ

Изменения паролей в среде SharePoint

Изменение пароля учетной записи безопасности SharePoint или учетной записи конфигурации фермы является на редкость сложным предприятием. Помимо прочего, вам необходимо применить изменения в Active Directory и в локальной базе данных SAM (Security Account Manager – диспетчер учетных записей безопасности) сервера SharePoint, базе данных SCM (Service Control Manager – диспетчер управления службами), в метабазе IIS, в SQL Server и, безусловно, в базах данных содержимого и конфигурации SharePoint.

Кроме этого, чтобы применить изменения согласованным образом, необходимо их реплицировать на все другие серверы фермы. Вам может понадобиться повторно зашифровать пароли всех служб SharePoint и пулов приложений для всех серверов фермы, если изменения оказывают влияние на ключ учетных данных фермы, который является ключом шифрования, используемым SharePoint для защиты паролей учетных записей безопасности в базе данных конфигурации. Когда вы изменяете пароль учетной записи конфигурации для фермы, вы неявно изменяете ключ учетных данных фермы. На рис. 1 показан этот процесс на ферме серверов с двумя серверами клиентского доступа. Откровенно говоря, то, что эта процедура работает так хорошо, производит сильное впечатление.

Рис. 1 Изменение пароля учетной записи безопасности SharePoint

Все изменения паролей учетных записей начинаются в Active Directory, и с этого момента вплоть до тех пор, пока вы не обновите соответствующий пароль в SharePoint, ферма находится в противоречивом состоянии. С этого момента пароль является устаревшим в IIS и в других местах, но SharePoint все еще работоспособна.

Это приятная новость для организаций, в которых требуется высокая доступность. При изменениях паролей не требуется перезапуск системы. Службы Windows и IIS могут по-прежнему использовать маркер безопасности, полученный при входе в систему с использованием соответствующей учетной записи безопасности со старым паролем во время последнего запуска сервера. Но в течение переходного периода с противоречивым состоянием паролей не следует перезапускать IIS или весь сервер.

При перезапуске IIS и другие службы не смогут войти в систему с использованием старого пароля, и затронутый пул приложений или службы больше никогда не смогут подключиться. В этой ситуации IIS записывает предупреждение в серверный журнал событий (см. рис. 2). Поэтому после того, как изменен пароль в Active Directory, не стоит слишком долго тянуть с обновлением пароля в SharePoint.

Рис. 2 IIS предупреждает о том, что учетные данные пула приложений устарели

Для обновления пароля учетной записи пула приложений необходимо использовать центр администрирования SharePoint 3.0 (_admin/FarmCredentialManagement.aspx) или следующую команду Stsadm.exe.

stsadm -o updateaccountpassword -userlogin <DOMAIN\USER> 
-password <PASSWORD> -noadmin

В ответ SharePoint шифрует новый пароль с использованиме ключа учетных данных фермы и заменяет старый зашифрованный пароль в базе данных конфигурации. Затем SharePoint обновляет данные учетной записи в метабазе IIS и всех других требуемых местах. После выполнения этих операций SharePoint генерирует задание таймера типа SPContentAppPoolCredentialDeploymentJobDefinition для развертывания новых учетных данных на оставшихся серверах фермы, которые оно помещает в базу данных конфигурации.

Как видно из рис. 1, для применения административных установок ко всем серверам фермы SharePoint опирается на задания таймера. Службы времение SharePoint на оставшихся серверах фермы выбирают задание и соответствующим образом обновляют локальные настройки безопасности на своих серверах с помощью службы WSS Administration (SPAdmin), чтоб вернуть ферму в согласованное состояние.

Эта процедура служит для применения учетных записей пула, но существует много других типов служб SharePoint, использующих учетные записи безопасности, например сама служба времени SharePoint, служба WSS Help Search и, возможно, поставщики общих служб (SSP — Shared Services Providers), служба поиска Office SharePoint Server и служба единого входа (SSO). В зависимости от решений, установленных на ферме, служб может быть даже больше, и служба каждого типа предъявляет свои требования к обновлению пароля. В статье по адресу support.microsoft.com/kb/934838 приведен список команд, которые необходимо использовать для учетных записей служб в WSS 3.0 и MOSS 2007. За информацией о других инструментах, командах и процедурах обновления обратитесь к документации по используемым дополнительным решениям.

Этот в высшей степени разнообразный и рассогласованный набор инструментов и команд является одним из недостатков текущего состояния архитектуры безопасности SharePoint. Он плохо масштабируется, и в зависимости от числа пользовательских решений на фермер серверов, использующих учетные данные безопасности, может приводить к значительному повышению TCO. Во второй части этой серии статей будет показан способ, позволяющий справиться с данной ситуацией и, независимо от типов используемых служб, использовать для выполнения всех необходимых обновлений единственное решение.

Наиболее важный случай обновления относится к учетным данным фермы. Пароль учетной записи фермы является особенным, поскольку он оказывает влияние на ключ учетных данных, используемый для шифрования всех паролей фермы, как упоминалось ранее. Поэтому, вслед за изменением пароля учетной записи фермы в Active Directory, необходимо изменить SharePoint с помощью следующей команды.

stsadm -o updatefarmcredentials -userlogin <DOMAIN\USER>
-password <PASSWORD>

Затем среда SharePoint должна повторно зашифровать все имеющиеся (зашифрованные) пароли в базе данных конфигурации, обновить учетную запись службы времени SharePoint (которая в качестве своего идентификатора использует учетную запись фермы), а также должна снова распространить эти изменения на все серверы фермы посредством задания таймера типа SPAdminAppPoolCredentialDeploymentJobDefinition.

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

Рис. 3 Задание развертывания учетных данных застряло в очереди вследствие того, что служба времени SharePoint работает не на всех серверах фермы

В другой ситуации может случиться, что вы обновите пароли учетных записей пула приложений до того, как новые учетные данные фермы попадут на все серверы фермы. Это приведет к тому, что серверы с устаревшим ключом учетных данных прекратят работу, поскольку они не смогут расшифровать обновленный пароль в базе данных конфигурации, как показано на рис. 4. Это интересный случай, и он является основанием для применения параметра -noadmin в команде updateaccountpassword. Если учетная запись фермы используется также в качестве учетной записи пула приложений (чего делать не рекомендуется), тогда сначала следует обновить учетные данные фермы, дождаться, пока все серверы фермы обработают задание таймера, а затем обновить пулы приложений.

Рис. 4 Задержка обновлений в пуле приложений до окончания обработки задания управления развертыванием учетных данных пула приложений

Соответственно, команда updateaccountpassword проверяет, является ли указанная учетная запись безопасности учетной записью фермы, и сообщает о зависимостях, если такие есть, не выполняя обновления. С помощью параметра –noadmin эта проверка отключается, и измененный пароль применяется к учетной записи в настройках пула приложений, но эти процедуры затруднительно автоматизировать в сценарии с соответствующим временем задержки.