Разрешения на определение сборки TFS и наследование групп, когда пользователь входит в несколько групп
У меня есть следующие группы пользователей
- Строители
- User1
- Пользователь2
- Авторы
- User1 (обратите внимание, что это также член Builders)
- User2 (обратите внимание, что это также член Builders)
- User3
- Пользователь4
- USER5
и следующие определения сборки (определения сборки Dev многократно превосходят определения сборки prod)
- Dev Builds
- Определение сборки 01
- Определение сборки 02
- Определение сборки 03
- Определение сборки 04
- Определение сборки 05
- Prod Builds
- Определение сборки 51
- Определение сборки 52
Поскольку определения сборок Dev многократно превосходят определения сборок prod, по умолчанию на уровне "All Build Definition" разрешен доступ как к авторам, так и к сборщикам. Я хочу отказать авторам в доступе к определениям сборки Prod. Однако, если я явно откажу, User1 и User2, которые являются членами обеих групп, получат "отказ" в этом доступе. Единственный другой вариант, который я могу использовать, это "Наследуемое разрешение" и "Разрешить". Как еще это может быть достигнуто? Я хотел бы сохранить значение по умолчанию таким образом, чтобы меньшее количество определений сборки требовало переопределения, если нет другого способа.
Вот типичное разрешение
- Все определение сборки
- Просмотр определения сборки (выбрано одно из разрешений для образца)
- Строители - Разрешить
- Автор - Разрешить
- Одно из определений Prod Build
- Просмотр определения сборки (выбрано одно из разрешений для образца)
- Builders - Inherited Allow (варианты: "Разрешить", "Запретить", "Не задано")
- Участник - Унаследовано Разрешить (варианты: Разрешить, Запретить, Не задан)
Вот что происходит
- Inherited Allow at Contributor - все пользователи имеют доступ
- Запретить в Contributor - Пользователь 1 и Пользователь 2 теряют доступ независимо от каких-либо разрешений в группе Строителей
1 ответ
Это ожидаемое поведение. В соответствии с настройками разрешений TFS для большинства групп и почти для всех разрешений, Deny превосходит Allow. Если пользователь принадлежит к двум группам, и у одной из них есть определенное разрешение, установленное на Запретить, этот пользователь не сможет выполнять задачи, для которых требуется это разрешение, даже если они принадлежат группе, для которой это разрешение установлено на Разрешить.
Подробности, которые вы могли бы взглянуть на учебник в MSDN: О разрешениях и группах
Чтобы добиться того, что вы хотите, вы можете создать новую группу, такую как DenyProGroup. Добавление других разработчиков, кроме user1/user2 в Contributors, в эту группу. Например, User3/User4/User5 в вашем случае.
Для этой группы установите разрешения " Просмотр определений сборки" на "Запретить" для всех определений сборки Prod. Для участников и строителей установите одинаковые разрешения для "Разрешить". Сохраненные изменения. Тогда пользователь 3/4/5 потеряет способность просматривать сборки Prod, но пользователь 1/2 все еще имеет.