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

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

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

В следующем видео показано, как создать и использовать PAT.

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

Личный маркер доступа содержит учетные данные безопасности для Azure DevOps. Личный маркер доступа определяет вас, доступные для вас организации и области доступа. Таким образом, они столь же важны, как пароли, поэтому их следует рассматривать так же.

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

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

  • пользовательский интерфейс в параметрах пользователя, который подробно описан в этой статье;
  • через API управления жизненным циклом PAT

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

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

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

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

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

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

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

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

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

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

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

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

    Примечание.

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

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

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

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

Обработайте и используйте PAT, как пароль, и сохраните его в секрете.

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

Внимание

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

Notifications

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

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

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

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

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

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

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

Если вы получаете неожиданное уведомление PAT, администратор или средство, возможно, создали PAT от вашего имени. См. следующие примеры.

  • При подключении к репозиторию Azure DevOps Git через git.exe. он создает маркер с отображаемого имени, например "git: https://MyOrganization.visualstudio.com/ в MyMachine".
  • Когда вы или администратор настраиваете развертывание веб-приложения службы приложение Azure, он создает маркер с отображаемым именем, например "Перехватчики служб: : приложение Azure Служба: : развертывание веб-приложения".
  • Когда вы или администратор настраиваете веб-нагрузочное тестирование в рамках конвейера, он создает маркер с отображаемым именем, например WebAppLoadTestCDIntToken.
  • При настройке расширения обмена сообщениями интеграции Microsoft Teams он создает маркер с отображаемым именем, например "Интеграция Microsoft Teams".

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

Если вы считаете, что ПАТ существует в ошибке, мы рекомендуем отозвать PAT. Затем измените пароль. Как пользователь Microsoft Entra проверка с администратором, чтобы узнать, использовалась ли ваша организация из неизвестного источника или расположения. См. также вопросы и ответы о случайном проверка в PAT в общедоступный репозиторий 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 Credential Manager. Требуется Git для Windows .

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

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

git remote remove origin

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

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

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

В коде можно использовать PAT.

Если вы хотите предоставить 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.

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

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

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

Вопрос. Существует ли способ обновить 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 сканирует paTs проверка в общедоступные репозитории на 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 по-прежнему не работает после этого, проверка, чтобы узнать, истек ли срок действия ВАШЕГО PAT.