Sonatype Nexus — практичное решение для контроля доступа

Я развертываю последнюю версию Nexus Pro v2 и считаю, что модель управления доступом слишком сложна. Я ищу простое решение (лучше работать и с новым v3). Мы .net магазин и вот требования:

  1. Я хочу создать как минимум два репозитория: локальный репозиторий NuGet (для хранения пакетов NuGet приложения) и репозиторий Maven2 (для хранения всех конечных единиц развертывания приложения).
  2. Только администраторы и пользователи сборки могут загружать данные в эти репозитории.

  3. Все могут просматривать все, поэтому разработчики могут загружать все пакеты.

У меня интегрирован LDAP, может ли кто-нибудь дать мне пошаговую процедуру настройки, например. для идентификатора сборки.

Спасибо, Джиронг.


person Jirong Hu    schedule 30.12.2015    source источник
comment
Привет @Jirong-Hu, добро пожаловать в SO ... Что вы уже сделали ...? Прочтите, если у вас возникнут вопросы в будущем -› codeblog.jonskeet.uk /2010/08/29/написание-идеального-вопроса   -  person Andy K    schedule 30.12.2015
comment
Я прочитал все документы и перепробовал все, что упоминалось, но чувствую себя очень грязно. Поэтому я хочу посмотреть, может ли кто-нибудь помочь мне разобраться. Приведите мне очень простой пример такого типичного требования.   -  person Jirong Hu    schedule 30.12.2015


Ответы (3)


Поведение по умолчанию делает именно то, что вы уже хотите. Вам просто нужно создать нужные репозитории и предоставить соответствующим ролям LDAP доступ на запись с помощью созданных вами внешних сопоставлений ролей.

Все это подробно описано в документации.

В дополнение к вашим подробным вопросам:

  • если у вас нет группы в LDAP, вам придется назначить соответствующие роли отдельным пользователям в диспетчере репозитория, наличие отдельного пользователя/роли для каждой сборки, вероятно, будет излишним
  • цели репо — это регулярные выражения для пути к репозиторию, и они действительно хорошо работают только с репозиториями Maven, для NuGet я бы не использовал их, если у вас нет строгих соглашений об именах для пакетов, которые будут работать.
  • вы можете использовать привилегии репозитория, чтобы предоставить доступ на запись для отдельных репозиториев вашим пользователям

Таким образом, шаги будут, например. быть

  1. создавать репозитории, соответствующие привилегии для репозиториев будут созданы автоматически
  2. создайте роли и предоставьте желаемый доступ к репозиторию для ролей
  3. назначать роли пользователям
person Manfred Moser    schedule 30.12.2015
comment
Я пытался читать документ разными способами много раз и чувствую, что он очень беспорядочный. У меня есть следующие вопросы: 1. У меня нет группы LDAP для представления администраторов и идентификаторов сборки, это отдельные идентификаторы. 2. Даже у меня есть такая группа, на какую роль в Нексусе мне мапиться? 3. Можете ли вы привести пример того, что именно нужно создать, например. как создать цель репо, привилегию, роль и т. д. для репозитория nuget_local. - person Jirong Hu; 30.12.2015
comment
не могли бы вы рассказать мне, как назначить соответствующие роли отдельным пользователям в менеджере репозитория? Мы интегрировали AD, поэтому пользователи являются пользователями AD, а не внутренними пользователями Nexus. - person Jirong Hu; 19.01.2016
comment
Для использования LDAP вы создаете внешнее сопоставление ролей, которое сопоставляет роль LDAP с внутренней ролью Nexus. И эта внутренняя роль Nexus должна иметь привилегию для загрузки в соответствующий репозиторий и роль пользовательского интерфейса, связанную с вкладкой загрузки репо. - person Manfred Moser; 19.01.2016
comment
Проблема заключается в том, что как только я добавлю Artifactory Upload в новую внутреннюю роль (внешняя карта в группу LDAP), пользователи в этой группе могут загружать во все репозитории. Пожалуйста, смотрите настройку моей роли на скриншоте ниже. - person Jirong Hu; 19.01.2016
comment
Другая проблема заключается в том, что пользовательский интерфейс загрузки артефакта всегда отображает сообщение об успешной загрузке, даже если артефакт не загружен, и в журнале есть это сообщение: huj org.sonatype.nexus.rest.artifact.ArtifactContentPlexusResource — ResourceStoreContentResource, незаконный запрос: репозиторий с идентификатором = 'otpp- релизы» не позволяет обновлять артефакты. - person Jirong Hu; 19.01.2016
comment
Пользовательский интерфейс всегда виден, но загрузка будет работать только для репозиториев, к которым есть доступ у конкретного пользователя. Это делается с привилегиями репозитория и потенциально целевыми привилегиями репозитория. - person Manfred Moser; 19.01.2016
comment
Сообщение об ошибке, которое вы получаете, говорит само за себя. Вам не разрешено загружать артефакты, которые уже развернуты. Так что никакой перезаписи. Это можно настроить для каждого репозитория, и по умолчанию повторное развертывание не разрешено. - person Manfred Moser; 19.01.2016

Вот что я сделал:

  1. Создайте локальный репозиторий NuGet с именем NuGet_OTPP. Я вижу, что создается привилегия NuGet_OTPP (представление), а не другие привилегии CRUD.
  2. Создайте новую целевую привилегию репозитория с именем NuGet_OTPP с целью «Все (nuget)», репозиторий «NuGet OTPP». Это создает четыре привилегии NuGet_OTPP (CRUD).
  3. Создайте роль с именем «OTPP Deployer», добавьте четыре указанные выше привилегии NuGet_OTPP (CRUD), анонимную роль Nexus, привилегии пользовательского интерфейса: базового пользовательского интерфейса, все репозитории — (чтение), все репозитории — (просмотр), загрузку артефактов.
  4. Создайте в Nexus пользователя с именем otpp_deployer (это уже доменный пользователь в LDAP), назначьте ему вышеуказанную роль.

  5. Изменен пароль для администратора пользователя по умолчанию и развертывания, чтобы никто другой не мог их использовать.

Я ничего не пропустил? Это совершенно новая установка.

person Jirong Hu    schedule 30.12.2015
comment
Вышеупомянутое не работает. Step4 создал внутреннего пользователя Nexus, фактически перезаписывающего пользователя LDAP. Пароль должен быть установлен внутри Nexus вместо использования LDAP. Поэтому я создаю новую роль, например. называется NuGet_OTPP_Deployer, сопоставляется с группой LDAP с помощью внешнего сопоставления ролей. Но пользователи в этой роли могут загружать артефакты во все репозитории, а не только в NuGet_OTPP. Может ли кто-нибудь помочь мне исправить эту настройку? - person Jirong Hu; 19.01.2016

@Manfred Moser, ниже скриншот для роли: введите здесь описание изображения

person Jirong Hu    schedule 19.01.2016