Cемейство продуктов SharePoint 2007 предоставляет различные механизмы для контроля доступа пользователя к ресурсам. Эти механизмы обеспечивают гибкость при аутентификации и идентификации пользователей, а также детализацию процесса авторизации для идентифицированных пользователей. Понимание модели безопасности подключений, используемой в среде SharePoint, поможет приобрести необходимые навыки для разработки модели, отвечающей требованиям бизнеса. В данной статье, говоря о SharePoint, я буду иметь в виду пакеты Windows SharePoint Services (WSS) 3.0 и Microsoft Office SharePoint Server (MOSS) 2007. При необходимости будет указываться точное название того или иного продукта.
Структура сайта
Понимание процессов аутентификации и авторизации требует рассмотрения того, что называют структурой сайта, в том числе Web-приложений и коллекций сайта. Работа SharePoint основана на Web-технологиях, а связанные с ними службы Microsoft IIS запускаются на внешних Web-серверах, которые занимаются обработкой пользовательских запросов. При этом данные запросы поступают в формате URL-адресов (например, http://friends.laphroaig.com, http://islay.com/sites/ardbeg или http://islay.com/sites/friends/laahs/myplot.doc), таким образом, в SharePoint обработка осуществляется на основе входящих URL.
Служба IIS может поддерживать несколько Web-сайтов, при этом каждый из них описывается уникальной комбинацией IP-адреса, номера порта и заголовка хоста. Если желательно, чтобы обработкой входящих URL-адресов занималась система SharePoint, необходимо расширить возможности Web-сайта службы IIS, превратив его в Web-приложение SharePoint, в котором URL-запросы обрабатываются механизмами SharePoint. В терминологии WSS 2.0 и SharePoint Portal Server (SPS) 2003 Web-приложения называются виртуальными серверами. Так как служба IIS может работать с несколькими Web-сайтами, можно использовать ряд Web-приложений.
А нужны ли дополнительные Web-приложения? На этот вопрос придется ответить во время планирования развертывания системы, и на решение будут влиять многие факторы, такие как различие требований к безопасности, необходимость изолирования контента и требования к пространству имен. Вопросами безопасности в механизме аутентификации, используемом системой SharePoint для определенного пространства имен URL-адресов, управляют Web-приложения. Учитывая, что на одни и те же данные могут ссылаться многие Web-приложения, можно задействовать различные схемы аутентификации для разных сценариев (например, ввести различные правила для доступа к сайту SharePoint из Internet и из внутренней сети).
На серверах SharePoint 2007 Web-приложения размещаются сразу на всех внешних Web-серверах, при этом описания приложений автоматически реплицируются службой синхронизации топологии, поэтому постоянно используется один и тот же метод аутентификации, независимо от того, какой из внешних Web-серверов обрабатывает запрос. В версиях WSS 2.0 и SPS 2003 необходимо вручную копировать виртуальные серверы между внешними Web-серверами.
Web-приложения поддерживают одну или несколько коллекций сайтов. Как видно из названия, это набор сайтов, состоящих из одного сайта верхнего уровня и одного или нескольких дочерних сайтов. Все сайты в коллекции Web-сайтов будут частью единого пространства имен URL-адресов, используемого для сайта верхнего уровня. Например, если сайтом верхнего уровня является узел http://laphroaig.com/sites/friends, то дочерний узел plots будет иметь URL-адрес http://laphroaig.com/sites/friends/plots. Условия хранения данных на каждом сайте в коллекции сайтов определяются набором элементов, содержащихся в списках и библиотеках (и список, и библиотека могут состоять из неограниченного количества папок). Нужно иметь в виду, что различные ресурсы, такие как общие для всего узла столбцы и квоты, могут совместно использоваться любыми сайтами коллекции. Кроме того, коллекции сайтов, которые являются объектами администрирования, состоят из единой информационной базы данных и могут быть скопированы или восстановлены в другую базу данных, даже если она находится в другой ферме SharePoint. На рис. 1 показана организация коллекций сайтов внутри фермы, а на рис. 2 приведен пример развертывания системы, при котором различные Web-приложения используют несколько пространств имен.
Авторизация — это предоставление пользователям прав на выполнение различных действий над ресурсами коллекции Web-сайтов. Однако, перед тем как пользователь получит права, правомерность его нахождения в системе определит процесс аутентификации.
Аутентификация
Служба IIS управляет процессом аутентификации для системы SharePoint 2007 и, в отличие от WSS 2.0/SPS 2003, версия SharePoint 2007 не ограничивает пользователя стандартными методами аутентификации. Большинство реализаций SharePoint используют службу каталогов Active Directory (AD) как систему управления идентификацией пользователей при аутентификации, однако поддержка модульной проверки подлинности с применением технологии ASP. NET позволяет SharePoint 2007 использовать любое количество методов аутентификации и задействовать сколько угодно систем управления идентификацией. Например, теперь полномочия пользователя можно определять как применяя простой список имен и паролей, хранящийся в файле или базе данных, так и с помощью корпоративной службы каталогов.
Для решения данной задачи необходим механизм, известный как провайдер контроля членства, который может опрашивать заданный репозиторий и определять правомерность нахождения рассматриваемого пользователя в системе, опираясь на полученные имя и пароль. Имя и пароль, введенные в соответствующую форму, передаются провайдеру контроля членства. Инструментарий ASP. NET 2.0 (на котором построена служба Share Point) включает провайдера контроля членства SQL, а пакет MOSS предоставляет аналог для протокола LDAP, но если того требует ситуация, можно использовать и собственный провайдер контроля членства. Дополнительно можно использовать провайдер ролей, который определяет, какие группы пользователей существуют в общей базе, и эти группы, как и отдельные пользователи, в дальнейшем могут привлекаться для управления доступом к ресурсам системы SharePoint.
При создании Web-приложения задается метод аутентификации, применяемый для идентификации пользователей, пытающихся получить доступ к данным коллекций сайтов, управляемых Web-приложением. Для Web-приложения можно задать только один метод аутентификации. Поэтому, если понадобится применить другой механизм аутентификации для доступа к тем же данным, придется расширить текущее Web-приложение на другую зону. Существует пять доступных зон: Default, Internet, Intranet, Extranet и Custom. Каждая из них, по сути, представляет собой еще один Web-сайт IIS, настроенный на использование соответствующего метода аутентификации. Зона Default автоматически используется при первом создании Web-приложения, и в ней должен применяться метод аутентификации, используемый системой Windows. Имена других зон описательны и не задают какой-то иной тип обработки, однако они отражают самые распространенные сценарии, которые можно использовать для развертывания структуры SharePoint.
При расширении Web-приложения до другой зоны указывается URL-адрес для этой зоны. Таким образом, использование разных пространств имен URL-адресов позволяет активировать различные методы аутентификации при доступе к одним и тем же данным. Действие этого приема проиллюстрировано на экране 1 — я пытаюсь получить доступ к одним и тем же данным, используя два различных URL-адреса: с использованием механизма аутентификации системы Windows (http://employees.laphroaig.com) и с помощью провайдера контроля членства SQL (http://friends.laphroaig.com). Также можно задействовать службу Alternate Access Mappings для организации поддержки других пространств имен, но в данной статье эта методика не затрагивается.
Используя дополнительную зону с приписанной к ней службой проверки подлинности, вы получаете в свое распоряжение два набора учетных записей участников системы безопасности, которые могут применяться для получения доступа к ресурсам. При определении провайдера контроля членства нужно указать его имя, которое в дальнейшем потребуется для идентификации пользователей, обслуживаемых провайдером. В данном случае я присвоил провайдеру имя Friends. На экране 2 видно, что при выполнении поиска пользователя с именем Kevin система возвращает и учетную запись пользователя домена Windows AD ISLAYKevin, и пользователя, обслуживаемого провайдером контроля членства Friends: Kevin. Теперь, когда мы научились проверять подлинность учетных записей пользователей, давайте рассмотрим методику предоставления им доступа к ресурсам SharePoint.
Авторизация
Авторизованный доступ — это выборочное предоставление пользователям разрешений на доступ к защищаемым объектам. Для проведения авторизации необходимо рассмотреть пять основных компонентов.
Отдельные разрешения. Эти разрешения предоставляют возможность выполнения тех или иных действий. Например, разрешение View Items позволяет просматривать элементы списка. Список отдельных разрешений распространяется на всю ферму серверов, однако может быть модифицирован администратором фермы на уровне Web-приложений.
Уровень разрешений. Этот компонент объединяет разрешения, облегчая их использование и настройку. Пакет WSS имеет пять уровней разрешений, установленных по умолчанию: Limited Access, Read, Contribute, Design и Full Control. В варианте MOSS было добавлено еще несколько уровней, таких как Approve и Manage Hierarchy. При необходимости можно добавить новые уровни разрешения или модифицировать уровни, установленные по умолчанию. Уровни разрешений устанавливаются для каждого сайта и могут быть унаследованы от родительского узла или явно заданы на уровне дочернего узла, библиотеки или элемента.
Пользователь. Пользователь — это участник безопасности, который может быть идентифицирован при использовании одного из методов аутентификации, связанных с Web-приложением.
Группа. Группа идентифицирует набор пользователей. Под группой могут подразумеваться группы безопасности Windows, роли, проверенные провайдером ролей, или группы SharePoint Group, такие как Site Owners, Site Members или Site Visitors. Группы SharePoint Groups являются нововведением системы SharePoint 2007 и фактически заменяют группы Web-сайтов. Группы позволяют администраторам коллекции сайтов SharePoint объединять пользователей, и при этом им не требуется обращаться к старшим администраторам для создания групп безопасности Windows.
Защищаемый объект. Пользователям или группам (группам безопасности Windows, группам Roles или группам SharePoint Groups) назначается уровень разрешений для доступа к определенному защищаемому объекту: узлу, списку, библиотеке, папке, документу или элементу. По умолчанию разрешения для списка, библиотеки, папки, документа или элемента наследуются от родительского сайта, родительского списка или родительской библиотеки. Однако любой пользователь, которому присвоен уровень разрешений, содержащий разрешение Manage Permissions для определенного защищаемого объекта, может самостоятельно изменять разрешения для этого объекта. Система SharePoint предусматривает использование разрешений уровня элемента, а это означает, что пользователю может быть разрешен доступ к отдельному документу или библиотеке и при этом запрещен доступ к остальной части узла SharePoint. Разрешения доступа к отдельным элементам также могут быть установлены с помощью настроенного для управления безопасностью пользовательского интерфейса, реализованного в системе SharePoint 2007. Вы можете просматривать только те элементы (в том числе и Web-части), для которых у вас установлено право на чтение, и не можете просматривать параметры, для использования которых прав недостаточно. Чтобы упростить обслуживание системы, желательно всегда использовать группы для назначения разрешений доступа к объектам безопасности. Предоставление прав доступа отдельным пользователям стоит применять только в исключительных случаях.
Хранение сведений
Каким же образом система SharePoint хранит информацию о пользователях, чтобы в дальнейшем проверить их право на доступ к ресурсам? Пользователи могут получать явный доступ к объектам через пользовательские учетные записи или неявный — если они являются членами группы безопасности или роли. При этом администратор может добавлять пользователей, группы безопасности или роли как отдельные сущности либо в качестве членов группы SharePoint Group. Второй метод предпочтителен, так как он упрощает общее управление системой.
Когда вы разрешаете пользователю, группе безопасности или роли любую форму доступа к любому ресурсу набора Web-сайтов — либо отдельно, либо через группу SharePoint Group, — для участника безопасности создается запись в таблице UserInfo, которая входит в состав базы данных, связанной с коллекцией сайтов. Эти сведения также помещаются в список User Information List, который вы видите, когда просматриваете узел All People в браузере. Таким образом, если участник безопасности имеет доступ к нескольким коллекциям Web-сайтов, для него создается ряд записей в таблице UserInfo. Эта таблица помимо прочего хранит внутренний идентификатор участника безопасности, используемый во множестве других таблиц; указатель, являющийся участником группы безопасности или ролью, а также идентификатор безопасности участника, задаваемый провайдером контроля членства. Провайдер системы Windows возвращает идентификатор Security Identifier (SID) пользователя или группы. Другие провайдеры возвращают уникальный идентификатор, который провайдер связывает с участником. Если пользователю разрешен неявный доступ к ресурсу через группу безопасности или роль, то запись в таблице UserInfo создается для учетной записи того пользователя, который первым успешно получил доступ к ресурсу в коллекции Web-сайтов.
Чтобы установить, какие разрешения уже имеет пользователь, применяются еще четыре таблицы. При описании группы SharePoint Group сведения о ней сохраняются в таблице Groups, а в таблице GroupMembership хранятся ссылки на отдельных пользователей, описанных в таблице UserInfo. То есть когда вы добавляете участников безопасности в группу SharePoint Group, таблица GroupMembership для этой группы обновляется и из таблицы UserInfo в нее добавляются внутренние идентификаторы для каждого участника. Две другие таблицы — Roles и RoleAssigment. Эти таблицы полностью описывают существующие разрешения для данного пользователя — их элементы ссылаются на записи отдельных пользователей в таблице UserInfo и записи групп SharePoint Group в таблице Groups.
Разрешения, связанные с вашей отдельной учетной записью, группами безопасности, ролями, владельцами которых вы являетесь, и с группами SharePoint Groups, к которым вы принадлежите, суммируются, после чего система формирует окончательный список разрешений. Или почти окончательный — существуют еще политики Web Application Policies, устанавливающие разрешения для Web-приложений в целом, однако рассмотрение этих политик выходит за рамки данной статьи. Просто следует помнить, что эти политики имеют преимущество перед разрешениями, и вы можете использовать их, чтобы глобально запретить или разрешить доступ к Web-приложению, и только после этого рассматриваются разрешения отдельного пользователя.
Слияние аутентификации и авторизации
Теперь мы знаем, как с помощью провайдеров контроля членства можно проверить учетные данные пользователя, запрашивающего ресурсы, и сохранить информацию о нем. Кроме того, мы научились устанавливать разрешения для известных учетных записей. Как же система SharePoint устанавливает, что пользователю разрешен доступ к защищаемому объекту?
Когда вы обращаетесь к ресурсам сайта, фактически вы запрашиваете элемент с этого узла. Например, открывая домашнюю страницу сайта, вы на самом деле запрашиваете файл default.aspx, а редактирование элемента в списке представляет собой обращение к файлу EditForm.aspx. Когда вы активируете процесс аутентификации, система SharePoint обрабатывает первичный идентификатор SID, идентифицирующий вас в соответствующей схеме аутентификации (например, идентификатор SID в схеме Windows). Этот идентификатор в дальнейшем используется для просмотра ваших данных в таблице UserInfo при каждом обращении к ресурсу. Таким образом, система SharePoint устанавливает, имеете ли вы право для выполнения тех или иных действий.
Важно заметить, что SharePoint проверяет только первичный идентификатор SID — это существенно для провайдера безопасности Windows в случаях, когда первичный идентификатор SID может измениться. Такая ситуация характерна для всех форм переноса учетных записей пользователей между доменами.
Хотя большинство механизмов миграции доменов/пользователей сохраняют старый идентификатор SID в маркере безопасности пользователя, система SharePoint не проверяет историю изменений идентификатора. Поэтому в случае переноса в таблице UserInfo не окажется записи для нового идентификатора SID и пользователь потеряет право доступа. Вы можете использовать утилиту Stsadm с параметром migrateuser для замены старой учетной записи пользователя на новую, однако, чтобы избежать сбоев в процессе предоставления доступа, необходимо учитывать изменения идентификаторов при проведении мероприятий по переносу и переименованию учетных записей пользователей. Дополнительную информацию об утилите Stsadm можно найти в статье «Управление SharePoint с помощью Stsadm», опубликованной в Windows IT ProRE № 5 за 2008 г.
Последний совет
Система SharePoint 2007 обеспечивает более высокую гибкость правил аутентификации и авторизации, с помощью которых, при аккуратном планировании, можно построить надежную и функциональную модель общих ресурсов на различных уровнях и на разных платформах. Хотя можно задействовать различные схемы аутентификации, следует иметь в виду, что они имеют некоторые функциональные различия. Об этих различиях рассказано в статье «Forms Authentication in SharePoint Products and Technologies (Part 3): Forms Authentication vs. Windows Authentication» (msdn2.microsoft.com/en-us/library/bb977430.aspx). И, учитывая схему, по которой осуществляется проверка прав доступа, необходимо заранее просчитывать шаги, которые требуется выполнить при переносе пользовательских учетных записей, так чтобы пользователи не потеряли возможность работать с данными в системе SharePoint.
Кевин Лаахс (kevin.laahs@hp.com) — главный консультант группы HP Services Advanced Technology Group
Рисунок 1. Организация коллекций сайтов внутри фермы
Экран 1. Доступ к одному контенту SharePoint с помощью разных URL