Share via


Ключи API с ограниченной областью действия

Чтобы обеспечить эффективную защиту среды NuGet при распространении пакетов, вы можете управлять ключами API, добавляя области действия.

Ограничивая область действия ключей API, вы оптимизируете управление API. Вы можете:

  • Создавать несколько ключей API с ограниченной областью действия, которые могут использоваться для различных пакетов с разными сроками действия.
  • Безопасно получать ключи API.
  • Редактировать существующие ключи API, изменяя параметры применимости для пакета.
  • Обновлять или удалять существующие ключи API, не мешая операциям, использующим другие ключи.

Для чего нужна поддержка ключей API с ограниченной областью действия?

Поддержка ключей API с ограниченной областью действия позволяет более детально настраивать разрешения. Ранее в NuGet использовался один ключ API для учетной записи, что имело ряд недостатков.

  • Один ключ API для управления всеми пакетами. Поскольку для управления всеми пакетами использовался один ключ API, было сложно обеспечить безопасность при совместном использовании ключа несколькими разработчиками, которые работают с разными пакетами в рамках одной учетной записи издателя.
  • Невозможность назначать частичные разрешения. Любой пользователь, имеющий доступ к ключу API, получал все разрешения в отношении пакетов, в том числе для их публикации, отправки и исключения из списка. В среде с несколькими командами такое поведение зачастую нежелательно.
  • Единственная точка сбоя. Использование одного ключа API также приводит к возникновению единой точки отказа. Если такой ключ становится известен посторонним лицам, под угрозу могут попасть все пакеты, связанные с учетной записью. В таком случае единственным способом предотвратить утечку и избежать нарушений в рабочем процессе непрерывной интеграции и развертывания становится обновление ключа API. Кроме того, возможны случаи, в которых требуется отозвать права доступа к ключу API у одного пользователя (например, если он или она покидает организацию). На данный момент удобного выхода из такой ситуации не существует.

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

Получение ключа API

  1. Войдите в учетную запись nuget.org или создайте учетную запись, если у вас еще нет учетной записи.

  2. Выберите имя пользователя в правом верхнем углу и выберите ключи API.

  3. Выберите " Создать" и укажите имя ключа.

  4. В разделе "Выбор областей" выберите "Отправить".

  5. В разделе "Выбор пакетов>" введите *.

  6. Нажмите кнопку создания.

  7. Выберите "Копировать", чтобы скопировать новый ключ.

    Screenshot that shows the new API key with the Copy link.

Внимание

  • Всегда сохраняйте секрет ключа API. Ключ API похож на пароль, позволяющий любому пользователю управлять пакетами от вашего имени. Удалите или повторно создайте ключ API, если он случайно обнаружен.
  • Сохраните ключ в безопасном расположении, так как вы не сможете скопировать ключ позже. Если вы вернетесь на страницу ключа API, вам понадобится повторно создать ключ, чтобы скопировать его. Кроме того, вы можете удалить ключ API, если больше не хотите отправлять пакеты.

Определение области позволяет создавать отдельные ключи API для различных целей. Каждый ключ имеет интервал срока действия, и вы можете область ключ к определенным пакетам или шаблонам глобов. Вы также область каждый ключ к определенным операциям: отправка новых пакетов и версий пакетов, отправка только новых версий пакетов или отмена списка.

С помощью области можно создавать ключи API для разных пользователей, которые управляют пакетами для вашей организации, чтобы у них были только необходимые разрешения.

Создание ключей API с ограниченной областью действия

Вы можете создавать несколько ключей API в соответствии с потребностями. Ключи API могут применяться к одному или нескольким пакетами, иметь разные области действия с уникальными привилегиями, а также разные сроки действия.

В следующем примере показан ключ API с именем Contoso service CI, который можно использовать для отправки пакетов для Contoso.Service на протяжении 365 дней. Это типичный сценарий, в котором различные команды работают с разными пакетами в рамках одной организации. В этом случае членам команды предоставляется ключ, дающий привилегии для работы только с назначенными им пакетами. Ограничение срока действия позволяет предотвратить устаревание или утрату ключей.

Create API keys

Использование стандартных масок

Если вы управляете большим списком пакетов, для одновременного выбора нескольких пакетов можно использовать стандартные маски. Например, если вы хотите задать области действия ключа для всех пакетов, идентификатор которых начинается с Fabrikam.Service, необходимо указать fabrikam.service.* в текстовом поле Стандартная маска.

Create API keys - 2

Если разрешения для ключа API определяются на основе стандартной маски, они будут применяться к новым пакетам, которые соответствуют этой маске. Например, для отправки пакета с названием Fabrikam.Service.Framework вы можете использовать ранее созданный ключ, поскольку этот пакет соответствует стандартной маске fabrikam.service.*.

Безопасное получение ключей API

В целях безопасности создаваемый ключ никогда не отображается на экране и может использоваться только посредством кнопки Копировать. Ключ также будет недоступен в случае обновления страницы.

Create API keys - 3

Изменение существующих ключей API

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

Create API keys - 4

Обновление или удаление существующих ключей API

Владелец учетной записи может обновить ключ. При этом выдается новый ключ с теми же разрешениями (в отношении пакетов), областями и сроками действия, а старый ключ выводится из обращения. Это позволяет предотвратить устаревание ключей API и защититься от риска их утечки.

Create API keys - 5

Также вы можете удалять неиспользуемые ключи. В этом случае ключ выводится из обращения.

Вопросы и ответы

Что происходит с устаревшим ключом API?

Устаревший ключ API продолжает действовать до тех пор, пока вам это необходимо. Тем не менее, такие ключи выводятся из обращения, если они не использовались для отправки пакетов более 365 дней. Дополнительные сведения см. в записи блога, посвященной изменению существующих ключей API. Дальнейшее обновление такого ключа невозможно. При необходимости вам потребуется удалить устаревший ключ и создать вместо него новый ключ с ограниченной областью действия.

Примечание.

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

Сколько ключей API можно создавать?

Количество создаваемых ключей API не ограничивается. Тем не менее, чтобы эффективно контролировать устаревшие ключи и параметры их использования, рекомендуется не превышать удобное для управления количество ключей.

Можно ли удалить устаревший ключ API или перестать использовать его?

Да. Вы можете и скорее всего должны удалять устаревшие ключи API.

Можно ли восстановить ошибочно удаленный ключ API?

№ После удаления вы можете только создавать новые ключи. Возможность восстанавливать случайно удаленные ключи не предусматривается.

Продолжает ли старый ключ API работать после обновления ключа API?

№ После обновления ключа создается новый ключ с теми же разрешениями, областями и сроками действия. Старый ключ при этом выводится из обращения.

Могу ли я предоставить дополнительные разрешения для существующего ключа API?

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

Как узнать, срок действия каких ключей истекает или уже истек?

Если срок действия какого-либо ключа скоро истечет, вы увидите соответствующее предупреждающее сообщение в верхней части страницы. Кроме того, за десять дней до истечения срока действия ключа мы отправим владельцу учетной записи по электронной почте предупреждение, чтобы вы могли заблаговременно предпринять необходимые действия.