Team Foundation Server - от уровня приложений до уровня данных: аутентификация, олицетворение и авторизация - PullRequest
5 голосов
/ 02 марта 2012

Согласно документу Team Foundation Server Architecture , в разделе Группы и разрешения :

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

Аутентификация и олицетворение:

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

  1. Включена ли встроенная защита от уровня приложений до базового сервера Sql?
  2. Если встроенная защита включена, разрешено ли олицетворение (при условии стандартной конфигурации) для олицетворения личности пользователя на уровне приложений?
  3. Если олицетворение включено, отвечает ли уровень приложений за управление безопасностью базовых баз данных?
  4. Если олицетворение не включено на уровне приложений, все ли взаимодействие с уровнем данных выполняется с помощью TFSService удостоверения?

Авторизация:

  1. Насколько известно, оценивается ли авторизация на уровне данных или на уровне приложения (т. Е. Значение Project.HasWorkItemReadRightsRecursive)?

Почему:

Я запрограммировал решение, в котором я передаю интегрированную защиту от процесса клиента, через веб-сервис WCF и на Sql Server, используя олицетворение, откуда я могу оценить авторизацию объекта и членство в роли с помощью Transact-Sql. Мы обсуждаем преимущества и недостатки этого как соответствующий шаблон и решили исследовать, как TFS справляется с этим.

Если у вас есть более широкие комментарии по авторизации на уровне объекта в приложении, управляемом базой данных, пожалуйста, не стесняйтесь делиться ими.

1 Ответ

3 голосов
/ 08 марта 2012

Рабид,

Большая часть того, что вы ищете, может быть найдена в web.config для веб-сервисов TFS и с точки зрения безопасности ваших баз данных TFS.

1.Включена ли встроенная защита от уровня приложений до базового сервера Sql?

Да.Файл web.config находится здесь на сервере уровня приложений: C: \ Program Files \ Microsoft Team Foundation Server 2010 \ Уровень приложений \ Веб-службы

В нем вы можете найти строку подключения для базы данных Tfs_Configuration.Это совершенно ясно показывает, что он использует встроенную безопасность.

<add key="applicationDatabase" value="Data Source=YOURSQLSERVER\YOURSQLINSTANCE;Initial Catalog=Tfs_Configuration;Integrated Security=True;" />

2.Если встроенная защита включена, разрешено ли олицетворение (при условии стандартной конфигурации) для олицетворения личности пользователя на уровне приложений?

Нет.Когда TFS подключается к базе данных, он использует учетные данные в пуле приложений Microsoft Team Foundation Server, а не учетные данные вызывающего конечного пользователя.Опять же из служб TFS web.config ...

    <!-- Disable Identity Impersonation -->
    <identity impersonate="false"/>

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

Если вы откроете свою базу данных Tfs_Configuration в SQL Management Studio и посмотрите на папку «Безопасность», вы увидите только тех пользователей, которые были добавлены как «пользователи консоли администрирования» вКонсоль администрирования TFS.

3.Если олицетворение включено, отвечает ли уровень приложений за управление безопасностью базовых баз данных?

Не применимо из-за ответа на вопрос № 2.Тем не менее, ответ «да».При первоначальной настройке TFS (при условии, что вы используете руководство по установке Microsoft, которое вы должны использовать: http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=24337), вы настроите свою учетную запись "TFSSERVICE" с ролью безопасности sysadmin или * db_creator * вваш SQL-сервер. Это позволяет уровню приложений TFS управлять безопасностью своих собственных баз данных. Когда вы добавляете нового «пользователя консоли администратора», он предоставит этому пользователю права доступа к базам данных TFS. Вы можете сами убедиться в этом, обратившись к разделу «Безопасность».папка для базы данных Tfs_Configuration до и после добавления пользователя в консоль администратора.

Кроме того, если вы откроете консоль администратора TFS как пользователь, который НЕ имеет доступа к базовым базам данных, консоль будет загружаться кучейдружественных сообщений об ошибках «Пользователь не имеет доступа к базе данных» вместо заполнения данных, которые вы ожидаете увидеть в консоли администратора.

4. Если олицетворение не включено на уровне приложений, всеВзаимодействие с уровнем данных сделано тон тфсервис личность?

да.Я думаю, что все изложенное выше довольно ясно демонстрирует это.Даже пул приложений для TFS Web Access работает под идентификатором TFSSERVICE.(это все из коробки, конечно ... вы всегда можете явно предоставить доступ к базе данных TFS и сами начать работать с ней ... вы расторгнете свой контракт на поддержку с MS, сделав это, хотя: D)

Вопрос об авторизации: насколько это известно, оценивается ли авторизация на уровне данных или на уровне приложения (т. Е. Значение Project.HasWorkItemReadRightsRecursive)

Эта авторизация (Project.HasWorkItemReadRightsRecursive) оценивается на уровне приложения.Это верно для всех рабочих элементов и элементов управления версиями.Зачем?Потому что это часть модели внутренней безопасности TFS.Существует расширенный набор разрешений, которые TFS поддерживает для своих элементов управления версиями и рабочих элементов, которые полностью отделены от базового уровня данных.Наличие доступа для чтения \ записи к определенному рабочему элементу или файлу под управлением версиями не означает, что у вас есть доступ к таблицам SQL, которые содержат данные для этих элементов управления версиями или рабочих элементов.

Здесь все более или менее прописано.http://msdn.microsoft.com/en-us/library/ms252587(v=vs.100).aspx Существуют разрешения на уровне сервера, разрешения на уровне коллекции, разрешения на уровне командного проекта, разрешения на уровне сборки, разрешения рабочего элемента и разрешения управления версиями.Вся эта система разрешений организована на уровне приложений TFS без каких-либо знаний о базовой схеме базы данных или безопасности базы данных.

Чтобы повторить точку, с которой вы открыли свой вопрос с помощью

Однако пользователи или группы, добавленные вами в Team Foundation Server, не добавляются автоматически в два компонента, на которых Team Foundation Server можетзависит: продукты SharePoint и службы отчетов.

Почему это так?Поскольку и SharePoint, и службы Reporting Services используют одинаковый шаблон, когда существует обширная система безопасности, которая управляется на уровне приложений, но только одна (или, может быть, несколько) учетная запись имеет фактический доступ к базам данных SQL.Т.е. в SSRS вы можете установить разрешения для Content Viewer, Content Manager и т. Д., А также можете установить в SharePoint разрешения для Contributor, администратора семейства сайтов, администратора фермы и т. Д.Ваша учетная запись службы SSRS или учетная запись администратора фермы SharePoint будет единственной учетной записью, имеющей доступ к базе данных SQL.

В итоге

Если приложение, которое вы разрабатываете, берет действительные учетные данные пользователя клиента и передает их полностью в базу данных, вы могли бы открыть себяк серьезной проблеме безопасности.Поскольку учетные записи этих пользователей будут иметь прямой доступ к SQL, ничто не мешает им открывать SQL Management Studio, подключаться к базе данных и делать все, к чему у них есть доступ.Возможно, ваши пользователи недостаточно опытны, но зачем рисковать ??

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...