Бөлісу құралы:


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

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 id включил политику, которая ограничивает определенный настраиваемый набор областей. Дополнительные сведения см. в разделе "Управление PATs" с помощью политик и ограничения создания полноуровневых PAT. Для пользовательского ПАТ необходимой области доступа к API vso.governanceуправления компонентами в пользовательском интерфейсе не выбирается.

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

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

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

Внимание

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

Notifications

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

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

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

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

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

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

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

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

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

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

Если вы подозреваете, что PAT существует в ошибке, рассмотрите возможность отзыва PAT и изменения пароля. В качестве пользователя Microsoft Entra обратитесь к администратору, чтобы узнать, использовалась ли ваша организация неизвестным источником или расположением. Кроме того, ознакомьтесь с часто задаваемыми вопросами о случайной регистрации в GitHub для общедоступных репозиториев 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, который распространяется на одну организацию?

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

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