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


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

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

Личный маркер доступа (PAT) служит альтернативным паролем для проверки подлинности в Azure DevOps. В этой статье описывается создание, использование, изменение и отзыв PATs для Azure DevOps.

Сведения о личных маркерах доступа

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

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

Создайте PAT и управляйте ими с помощью следующих методов:

Чтобы установить PATs для средств, отличных от Майкрософт, можно использовать диспетчеры учетных данных Git или создавать их вручную. Мы рекомендуем ознакомиться с нашим руководством по проверке подлинности, чтобы выбрать соответствующий механизм проверки подлинности. PaTs предоставляют простую альтернативу для небольших проектов, которые не требуют обширного решения. Без диспетчера учетных данных пользователи каждый раз вводят свои учетные данные.

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

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

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

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

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

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

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

    Снимок экрана: запись основных сведений о маркере.

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

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

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

    Примечание.

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

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

    Снимок экрана: копирование маркера в буфер обмена.

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

Внимание

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

Notifications

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

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

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

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

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

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

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

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

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

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

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

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

ВАШ PAT служит вашим цифровым удостоверением, так же как и пароль.

Git

Для взаимодействия с Git требуется имя пользователя, которое может быть любым, кроме пустой строки. Чтобы использовать PAT с базовой проверкой подлинности HTTP, Base64-encode как $MyPat показано в следующем блоке кода.

В PowerShell введите следующий код.

$MyPat = 'yourPat'
$headerValue = "Authorization: Basic " + [Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes(":" + $MyPat))
$env:GIT_AUTH_HEADER = $headerValue

git --config-env=http.extraheader=GIT_AUTH_HEADER clone https://dev.azure.com/yourOrgName/yourProjectName/_git/yourRepoName

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

Существующие репозитории

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

git remote remove origin

В противном случае выполните следующую команду.

git remote add origin https://dev.azure.com/<PAT>@<company_machineName>:/<path-to-git-repo> path to git repo = <project name>/_git/<repo_name> git push -u origin --all

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

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

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


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());
   }
}

При работе кода рекомендуется переключаться с простой проверки подлинности на OAuth.

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

Изменение ПАТ

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

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

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

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

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

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

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

Отмена ПАТ

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

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

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

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

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

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

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

Дополнительные сведения см. в разделе "Отмена pats пользователей" для администраторов.

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

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

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

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

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

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

Внимание

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

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

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

Ответ. Убедитесь, что вы вошли в организацию, в которой находится область ДЕЙСТВИЯ PAT. Вы можете просматривать все paTs во время входа в любую организацию в одной и той же идентификаторе Microsoft Entra, но при входе в организацию, в которую они входят, можно изменять только маркеры с областью действия организации.

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

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

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

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

Вопрос. Можно ли использовать базовую проверку подлинности со всеми REST API Azure DevOps?

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

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

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

Дополнительные сведения см. в статье "Отмена утечки PAT" автоматически.

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

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

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

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