Поделиться через


Используйте личные токены доступа

Azure DevOps Services | Azure DevOps Server 2022 — Azure DevOps Server 2019

Личный маркер доступа (PAT) служит альтернативным паролем для проверки подлинности в Azure DevOps. Этот PAT идентифицирует вас и определяет вашу доступность и область доступа. Таким образом, обратитесь к PATS с таким же уровнем осторожности, как и пароли.

Внимание

Мы рекомендуем использовать токены Microsoft Entra. Дополнительные сведения о наших усилиях по сокращению использования PAT см. в блоге. Ознакомьтесь с нашим руководством по проверке подлинности , чтобы выбрать подходящий механизм проверки подлинности для ваших потребностей.

При использовании средств Майкрософт учетная запись Майкрософт (MSA) или идентификатор Microsoft Entra распознается и поддерживается. Если вы используете средства, не поддерживающие учетные записи Microsoft Entra или не хотите предоставлять общий доступ к основным учетным данным, paTs может быть подходящим вариантом. Однако мы рекомендуем использовать токены Microsoft Entra всегда, когда это возможно.

Вы можете управлять PATs с помощью следующих методов:

Предварительные условия

Категория Требования
Права доступа Разрешение на доступ и изменение параметров пользователя, где управляются PATs.
— Перейдите в ваш профиль и выберите параметры пользователя>персональные токены доступа. Если вы можете просматривать и управлять PATs здесь, значит, у вас есть необходимые разрешения.
— Перейдите в ваш проект и выберите Настройки проекта >Разрешения. Найдите учетную запись пользователя в списке и проверьте назначенные вам разрешения. Найдите разрешения, связанные с управлением маркерами или параметрами пользователя.
— Если в вашей организации есть политики, администратор Azure DevOps может предоставить вам определенные разрешения или добавить вас в список разрешённых для создания и управления личными маркерами доступа.
— PATs привязаны к учетной записи пользователя, который создал токен. В зависимости от задач, которые выполняет PAT, вам может потребоваться больше разрешений.
Уровни доступа Необходим, по крайней мере, базовый доступ .
задачи Используйте PATs только при необходимости и всегда регулярно меняйте их.

Создайте личный маркер доступа

  1. Войдите в свою организацию (https://dev.azure.com/{Your_Organization}).

  2. На домашней странице откройте параметры пользователя и выберите личные маркеры доступа.

    Снимок экрана: выбор личных маркеров доступа.

  3. Выберите +Создать маркер.

    Снимок экрана: выбор новой токен.

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

    Снимок экрана, показывающий ввод основных сведений о токене.

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

    Например, чтобы создать маркер для агента сборки и выпуска для проверки подлинности в Azure DevOps, задайте область маркера для пулов агентов (чтение и управление). Чтобы прочитать события журнала аудита и управлять или удалять потоки, выберите "Чтение журнала аудита" и нажмите кнопку "Создать".

    Снимок экрана: выбранные области для PAT.

    Примечание.

    Возможно, вы не сможете создавать полноуровневые PAT. Если это так, администратор Azure DevOps в Microsoft Entra ID включил политику, которая ограничивает вас на определенный пользовательский набор областей. Дополнительные сведения см. в разделе "Управление PATs" с помощью политик и ограничения создания полноуровневых PAT. Для определяемого пользователем ПАТ необходимую область для доступа к API vso.governance управления компонентами нельзя выбрать в пользовательском интерфейсе.

  6. После завершения скопируйте маркер и сохраните его в безопасном расположении. Для обеспечения безопасности он снова не отображается.

    Снимок экрана, показывающий, как скопировать токен в буфер обмена.

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

Внимание

  • Обратитесь к PAT с той же осторожностью, что и пароль, и сохраните его в конфиденциальности.
  • Войдите с новым PAT в течение 90 дней, если ваша организация поддерживается идентификатором Microsoft Entra, иначе PAT станет неактивным. Дополнительные сведения см. в разделе "Частота входа пользователей" для условного доступа.

Уведомления

В течение срока существования PAT пользователи получают два уведомления: первый во время создания и второй семь дней до истечения срока его действия.

После создания PAT вы получите уведомление, аналогичное следующему примеру. Это уведомление служит подтверждением успешного добавления PAT в вашу организацию.

Снимок экрана: созданное уведомление PAT.

На следующем рисунке показан пример семидневного уведомления до истечения срока действия PAT.

Снимок экрана: уведомление о истечении срока действия PAT.

Дополнительные сведения см. в статье "Настройка SMTP-сервера" и настройка электронной почты для оповещений и запросов обратной связи.

Непредвиденное уведомление

Если вы получаете неожиданное уведомление PAT, это может означать, что администратор или средство создали для вас PAT. Ниже приведены некоторые примеры.

  • Маркер с именем git: https://dev.azure.com/{Your_Organization} в YourMachine создается при подключении к репозиторию Git Azure DevOps через git.exe.
  • Токен с именем «Service Hooks: Azure App Service: Deploy web app» создается, когда вы или администратор настраиваете развертывание веб-приложения Azure App Service.
  • Маркер с именем WebAppLoadTestCDIntToken создается вами или администратором при настройке веб-нагрузочного тестирования в рамках конвейера.
  • При настройке расширения для обмена сообщениями "Интеграция Microsoft Teams" создается токен с таким названием.

Предупреждение

  • отозвать PAT (и изменить пароль), если вы предполагаете, что он был создан по ошибке.
  • Обратитесь к администратору, если вы являетесь пользователем Microsoft Entra, чтобы узнать, был ли доступ к неизвестному источнику или расположению вашей организации.
  • Просмотрите часто задаваемые вопросы о случайном входе в репозитории GitHub.

Использование PAT

ВАШ PAT служит вашим цифровым удостоверением, так же как и пароль. Вы можете использовать PATs в качестве быстрого способа выполнения одноуровневых запросов или прототипа приложения локально.

Внимание

Когда ваш код работает, рекомендуется переключаться с базовой аутентификации на Microsoft Entra OAuth. Токены Microsoft Entra ID можно использовать везде, где используется PAT, если не указано иначе в этой статье.

Вы можете использовать PAT в коде для проверки подлинности REST API запросов и автоматизации рабочих процессов. Для этого включите PAT в заголовок авторизации HTTP-запросов.

Чтобы предоставить PAT через заголовок HTTP, сначала преобразуйте его в Base64 строку. В следующем примере показано, как на C# преобразовать в Base64.


Authorization: Basic BASE64_USERNAME_PAT_STRING

После этого результирующая строка может быть предоставлена в виде заголовка HTTP в следующем формате.

В следующем примере используется класс HttpClient в C#.

public static async void GetBuilds()
{
    try
    {
        var personalaccesstoken = "PATFROMWEB";

        using (HttpClient client = new HttpClient())
        {
            client.DefaultRequestHeaders.Accept.Add(
                new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json"));

            client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic",
                Convert.ToBase64String(
                    System.Text.ASCIIEncoding.ASCII.GetBytes(
                        string.Format("{0}:{1}", "", personalaccesstoken))));

            using (HttpResponseMessage response = client.GetAsync(
                        "https://dev.azure.com/{organization}/{project}/_apis/build/builds?api-version=5.0").Result)
            {
                response.EnsureSuccessStatusCode();
                string responseBody = await response.Content.ReadAsStringAsync();
                Console.WriteLine(responseBody);
            }
        }
    }
    catch (Exception ex)
    {
        Console.WriteLine(ex.ToString());
    }
}

Совет

При использовании переменных добавьте $ в начале строки, как показано в следующем примере.

public static async void GetBuilds()
{
   try
  {
      var personalaccesstoken = "PATFROMWEB";

      using (HttpClient client = new HttpClient())
       {
           client.DefaultRequestHeaders.Accept.Add(
              new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json"));

           client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic",
               Convert.ToBase64String(
                   System.Text.ASCIIEncoding.ASCII.GetBytes(
                       string.Format("{0}:{1}", "", personalaccesstoken))));

          using (HttpResponseMessage response = client.GetAsync(
                       $"https://dev.azure.com/{organization}/{project}/_apis/build/builds?api-version=5.0").Result)
           {
               response.EnsureSuccessStatusCode();
               string responseBody = await response.Content.ReadAsStringAsync();
               Console.WriteLine(responseBody);
           }
       }
   }
   catch (Exception ex)
   {
       Console.WriteLine(ex.ToString());
   }
}

Дополнительные примеры использования PATs можно найти в следующих статьях:

Измените ПАТ

Выполните следующие действия.

  • Создайте новый ПАТ, чтобы сгенерировать новый токен, что делает предыдущий недействительным.
  • Продлите срок действия PAT для увеличения его продолжительности.
  • Измените область ПАТ, чтобы изменить его разрешения.
  1. На домашней странице откройте параметры пользователя и выберите " Профиль".

    Снимок экрана: последовательность кнопок для выбора для изменения PAT.

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

    Снимок экрана: выделенная кнопка

  3. Измените имя маркера, срок действия маркера или область доступа, связанную с маркером, а затем нажмите кнопку "Сохранить".

    Снимок экрана: измененный PAT.

Отзыв персонального токена доступа (ПАТ)

Вы можете отозвать PAT в любое время по следующим и другим причинам:

  • Отмените персональный токен доступа (ПАТ), если вы подозреваете, что он скомпрометирован.
  • Отмените ПАТ, если он больше не нужен.
  • Отмените ПАТ для применения политик безопасности или обеспечения соответствия требованиям.
  1. На домашней странице откройте параметры пользователя и выберите " Профиль".

    Снимок экрана: последовательность кнопок для выбора, Team Services, страницы предварительного просмотра и отмены PAT.

  2. В разделе "Безопасность" выберите личные маркеры доступа. Выберите маркер, для которого требуется отозвать доступ, а затем нажмите кнопку "Отозвать".

    Снимок экрана с вариантом для отзыва одного маркера или всех маркеров.

  3. Выберите " Отменить" в диалоговом окне подтверждения.

    Снимок экрана: экран подтверждения для отзыва PAT.

Дополнительную информацию см. в статье «Отмена пользовательских PAT для администраторов».

Изменения в формате

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

Ключевые изменения:

  • Увеличенная длина маркера: новые маркеры теперь имеют длину 84 символов, при этом 52 символа являются случайными данными. Эта увеличенная длина повышает общую энтропию, что делает токены более устойчивыми к потенциальным атакам методом грубой силы.
  • Фиксированная подпись: маркеры, выдаваемые нашей службой, включают фиксированную AZDO подпись на позициях 76-80.

Требуется действие.

  • Повторно создайте существующие PATS: настоятельно рекомендуется повторно создать все PAT, которые в настоящее время используются, чтобы воспользоваться этими улучшениями безопасности.
  • Поддержка интегратора: интеграторы должны обновлять свои системы, чтобы соответствовать новым и существующим длинам маркеров.

Внимание

Оба формата остаются действительными в обозримом будущем, но мы активно рекомендуем клиентам перейти к новому формату 84 символов. По мере увеличения использования нового формата мы рассматриваем возможность отказа от более старого 52-символьного формата и всех токенов, выпущенных в этом формате.

Рекомендации по использованию PAT

Рассмотрим альтернативные варианты

Создание PAT

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

Управление PAT

  • Всегда храните ваши персональные токены доступа (PAT) в безопасном решении управления ключами, например Azure KeyVault.
  • Аннулируйте PATs, когда они больше не нужны. Администраторы арендатора могут отозвать ПАТ для пользователей организации, если ПАТ скомпрометирован.
  • Поверните свои PAT, чтобы использовать новый формат PAT для улучшения обнаружения утечек секретов и аннуляции нашими внутренними инструментами.

Для администраторов

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

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

Вопрос. Почему не удается изменить или повторно создать область PAT, ограниченную одной организацией?

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

Вопрос. Что происходит с PAT, если учетная запись пользователя отключена?

Ответ. Если пользователь удаляется из Azure DevOps, pat недействителен в течение 1 часа. Если ваша организация подключена к идентификатору Microsoft Entra, PAT также является недействительным в идентификаторе Microsoft Entra, так как он принадлежит пользователю. Рекомендуется сменить PAT на другого пользователя или учетную запись службы, чтобы поддерживать работу служб.

Вопрос. Существует ли способ обновить PAT через REST API?

Ответ. Да, вы можете обновить, управлять и создавать PAT с помощью API управления жизненным циклом PAT.

Вопрос: Можно ли использовать PAT со всеми REST API Azure DevOps?

Ответ. Нет. Вы можете использовать базовую аутентификацию с большинством REST API Azure DevOps, но для организаций и профилей и API жизненного цикла управления PAT поддерживается только Microsoft Entra OAuth. Пример настройки приложения Microsoft Entra для вызова таких API см. в статье Управление PATs с помощью REST API.

Вопрос. Что произойдет, если я случайно залью свой персональный токен доступа в общедоступный репозиторий на GitHub?

Ответ. Azure DevOps проверяет наличие PAT, зарегистрированных в общедоступных репозиториях на GitHub. Когда мы найдем утечку маркера, мы немедленно отправим подробное уведомление по электронной почте владельцу маркера и регистрируем событие в журнале аудита организации Azure DevOps. Если вы не отключили политику автоматического отзыва утекших личных маркеров доступа , мы немедленно отзываем утекший PAT. Мы рекомендуем пострадавшим пользователям устранить проблему, отменив утечку маркера и заменив его новым маркером. Дополнительные сведения см. в статье "Автоматическое отзыв утекших персональных токенов доступа (PAT)".

Вопрос: Можно ли использовать токен личного доступа в качестве ApiKey для публикации пакетов NuGet в фид артефактов Azure с помощью командной строки dotnet/nuget.exe?

Ответ. Нет. Артефакты Azure не поддерживают передачу PAT в качестве ApiKey. При использовании локальной среды разработки рекомендуется установить поставщика учетных данных для Azure Artifacts для аутентификации в Azure Artifacts. Дополнительные сведения см. в следующих примерах: dotnet, NuGet.exe. Если вы хотите опубликовать свои пакеты с помощью Azure Pipelines, используйте задачу NuGet Authenticate для аутентификации в своём потоке. См. пример .

Вопрос. Почему мой PAT перестал работать?

Ответ. Проверка подлинности PAT требует регулярного входа в Azure DevOps с помощью полного потока проверки подлинности. Один вход раз в 30 дней достаточен для многих пользователей, но, возможно, в зависимости от конфигурации Microsoft Entra, может возникнуть необходимость войти чаще. Если ваш PAT перестаёт работать, сначала попробуйте войти в свою организацию и пройти полную проверку подлинности. Если ваш PAT по-прежнему не работает, проверьте, истек ли срок действия.

Включение базовой аутентификации IIS делает невозможным использование личных токенов доступа (PAT) для Azure DevOps Server.

Осторожность

Рекомендуем всегда оставлять базовую проверку подлинности IISотключенной. Только в случае необходимости следует включить обычную проверку подлинности IIS. Если на компьютере Windows включена базовая проверка подлинности IIS, это запрещает использовать личные маркеры доступа (ПАТ) в качестве механизма проверки подлинности.

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

Предупреждение

Если вы используете Git с Базовой аутентификацией IIS, он перестает работать, потому что для аутентификации пользователей требуются Персональные токены доступа (PAT). Хотя мы не рекомендуем использовать обычную проверку подлинности IIS, добавив дополнительный заголовок в запросы Git, вы можете использовать Git с обычной проверкой подлинности IIS.

Вспомогательный заголовок должен использоваться для всех установок Azure DevOps Server, так как проверка подлинности Windows также предотвращает использование PATs. Дополнительный заголовок должен содержать кодировку "user:PAT" в кодировке base 64. См. следующий формат и пример.

формат :

git -c http.extraheader='Authorization: Basic [base 64 encoding of "user:password"]' ls-remote http://tfsserver:8080/tfs/DefaultCollection/_git/projectName

Пример:

git -c http.extraheader='Authorization: Basic a2FzYW50aGE6bzN3cDVndmw2YXRkajJkam83Znd4N2k3NDdhbGxjNXp4bnc3b3o0dGQycmd3d2M1eTdjYQ==' ls-remote http://tfsserver:8080/tfs/DefaultCollection/_git/projectName

Как создать ключи доступа, которые не привязаны к конкретному лицу, для целей развертывания?

В Azure DevOps можно создать ключи доступа, которые не привязаны к конкретному лицу, с помощью сервисных принципалов или управляемых удостоверений. Дополнительные сведения см. в Управление подключениями служб и Использование секретов Azure Key Vault в конвейерах Azure.