Использование личных маркеров доступа
Azure DevOps Services | Azure DevOps Server 2022 — Azure DevOps Server 2019
Личный маркер доступа (PAT) служит альтернативным паролем для проверки подлинности в Azure DevOps. Этот PAT идентифицирует вас и определяет специальные возможности и область доступа. Таким образом, обратитесь к PATS с таким же уровнем осторожности, как и пароли.
При использовании средств Майкрософт учетная запись Майкрософт (MSA) или идентификатор Microsoft Entra является распознаваемым и поддерживаемым методом. Если вы используете средства, отличные от Майкрософт, которые не поддерживают учетные записи Майкрософт или Microsoft Entra, или если вы предпочитаете не предоставлять общий доступ к основным учетным данным с этими инструментами, paTs являются подходящим вариантом.
В этой статье описывается создание, использование, изменение и отзыв PATs для Azure DevOps.
Вы можете управлять PATs с помощью следующих методов:
- Пользовательский интерфейс: с помощью параметров пользователя, как описано в этой статье
- API управления жизненным циклом PAT
Чтобы установить PATs для средств, отличных от Майкрософт, можно использовать диспетчеры учетных данных Git или создавать их вручную. Мы рекомендуем ознакомиться с нашим руководством по проверке подлинности, чтобы выбрать соответствующий механизм проверки подлинности. PaTs предоставляют простую альтернативу для небольших проектов, которые не требуют обширного решения. Без диспетчера учетных данных пользователи каждый раз вводят свои учетные данные.
Необходимые компоненты
- Разрешения:
- Иметь разрешение на доступ и изменение параметров пользователя, где управляются PATs.
- Проверьте разрешения. Чтобы проверить разрешения, выполните любой из следующих процессов в Azure DevOps:
- Перейдите к профилю и выберите параметров> личного доступа. Если вы можете просмотреть и управлять paTs здесь, у вас есть необходимые разрешения.
- Перейдите в проект и выберите "Разрешения для проекта>". Найдите учетную запись пользователя в списке и проверьте назначенные вам разрешения. Найдите разрешения, связанные с управлением маркерами или параметрами пользователя.
- Проверьте разрешения. Чтобы проверить разрешения, выполните любой из следующих процессов в Azure DevOps:
- Если у вашей организации есть политики, администратор Azure DevOps может потребовать предоставления вам определенных разрешений или добавления в список разрешений для создания PATS и управления ими.
- В зависимости от задач, которые требуется выполнить с помощью PAT, может потребоваться дополнительное разрешение. Например:
- Сборка: чтение и выполнение
- Код: чтение, запись и управление ими
- Среда: чтение и управление ими
- Проект и команда: чтение, запись и управление ими
- Группы переменных: чтение и создание
- Иметь разрешение на доступ и изменение параметров пользователя, где управляются PATs.
- Уровни доступа: имеют по крайней мере базовый доступ.
- Рекомендации по обеспечению безопасности. Ознакомьтесь с рекомендациями по обеспечению безопасности для управления PAT, например использование их только при необходимости и регулярной смене их.
Создание личного маркера доступа
Войдите в свою организацию (
https://dev.azure.com/{Your_Organization}
).На домашней странице откройте параметры пользователя и выберите личные маркеры доступа.
Выберите +Создать маркер.
Присвойте маркеру имя, выберите организацию, в которой вы хотите использовать маркер, а затем установите маркер автоматически истекает после заданного количества дней.
Выберите области для этого маркера, чтобы авторизовать определенные задачи.
Например, чтобы создать маркер для агента сборки и выпуска для проверки подлинности в Azure DevOps, задайте область маркера пулам агентов (чтение и управление). Чтобы прочитать события журнала аудита и управлять или удалять потоки, выберите "Чтение журнала аудита" и нажмите кнопку "Создать".
Примечание.
Возможно, вы не сможете создавать полноуровневые PAT. В этом случае администратор Azure DevOps в идентификаторе Microsoft Entra включил политику, которая ограничивает определенный настраиваемый набор областей. Дополнительные сведения см. в разделе "Управление PATs" с помощью политик и ограничения создания полноуровневых PAT. Для определяемого пользователем ПАТ необходимой области для доступа к API
vso.governance
управления компонентами не можно выбрать в пользовательском интерфейсе.После завершения скопируйте маркер и сохраните его в безопасном расположении. Для обеспечения безопасности он снова не отображается.
Используйте PAT в любом месте, где учетные данные пользователя требуются для проверки подлинности в Azure DevOps.
Внимание
- Обратитесь к PAT с той же осторожностью, что и пароль, и сохраните его в конфиденциальности.
- Войдите с помощью нового PAT в течение 90 дней для организаций, поддерживаемых идентификатором Microsoft Entra; в противном случае ПАТ становится неактивным. Дополнительные сведения см. в разделе "Частота входа пользователей" для условного доступа.
Notifications
В течение срока существования 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.
- Установите Git для Windows.
Существующие репозитории
Удалите существующий источник: если вы ранее добавили источник с помощью имени пользователя, удалите его, выполнив следующую команду:
git remote remove origin
Проверка подлинности с помощью PAT: если возникают проблемы со стандартной проверкой подлинности, выполните следующую команду, чтобы пройти проверку подлинности с помощью командной строки:
git remote add origin https://dev.azure.com/<PAT>@<company_machineName>:/<project-name>/_git/<repo_name>
git push -u origin --all
Ссылка
path to git repo = /_git/do
на структуру пути URL-адреса, используемую в репозиториях Git Для Azure DevOps. Сегмент/_git/
указывает, что вы обращаетесь к репозиторию Git и заменитеdo
фактическим именем репозитория. Например, если ваш репозиторий называетсяmy-repo
, путь будет "/_git/my-repo
".Клонируйте репозиторий: если вы используете Git и должны пройти проверку подлинности, выполните следующую команду:
git clone https://{organization}@dev.azure.com/{organization}/_git/{repository}
Замените
{organization}
имя организации Azure DevOps и{repository}
именем репозитория.
Использование 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 см. в следующих статьях:
- Настройка диспетчеров учетных данных Git
- Доступ к REST API
- Использование NuGet на Mac
- Проверка подлинности клиентов отчетов
- Начало работы с Azure DevOps CLI
Изменение ПАТ
Выполните следующие действия.
- Повторно создайте ПАТ, чтобы создать новый маркер, который делает его недействительным.
- Расширение PAT для увеличения срока действия.
- Измените область ПАТ, чтобы изменить свои разрешения.
На домашней странице откройте параметры пользователя и выберите " Профиль".
В разделе "Безопасность" выберите личные маркеры доступа. Выберите маркер, который нужно изменить, а затем измените.
Измените имя маркера, срок действия маркера или область доступа, связанную с маркером, а затем нажмите кнопку "Сохранить".
Отмена ПАТ
Вы можете отозвать PAT в любое время по следующим и другим причинам:
- Отмените ПАТ, если вы подозреваете, что он скомпрометирован.
- Отмените ПАТ, если он больше не нужен.
- Отмените ПАТ для применения политик безопасности или требований соответствия требованиям.
На домашней странице откройте параметры пользователя и выберите " Профиль".
В разделе "Безопасность" выберите личные маркеры доступа. Выберите маркер, для которого требуется отозвать доступ, а затем нажмите кнопку "Отозвать".
Выберите " Отменить" в диалоговом окне подтверждения.
Дополнительные сведения см. в разделе "Отмена pats пользователей" для администраторов.
Изменения в формате
По состоянию на июль 2024 года мы значительно изменили формат PATs, выданных Azure DevOps. Эти изменения обеспечивают дополнительные преимущества безопасности и улучшают средства обнаружения секретов, доступные в наших предложениях партнеров, таких как GitHub Advanced Security для Azure DevOps. Этот новый формат PAT следует рекомендуемму формату во всех продуктах Майкрософт. Включение более идентифицируемых битов повышает скорость обнаружения ложных срабатываний этих средств обнаружения секретов и позволяет нам быстрее устранять обнаруженные утечки.
Ключевые изменения:
- Увеличенная длина маркера: новые маркеры теперь имеют длину 84 символов, при этом 52 символа являются случайными данными. Эта увеличенная длина повышает общую энтропию, что делает маркеры более устойчивыми к потенциальным атакам подбора.
- Исправлена подпись: маркеры, выданные нашей службой, включают фиксированную
AZDO
подпись на позициях 76-80.
Требуется действие.
- Повторно создайте существующие PATS: настоятельно рекомендуется повторно создать все PAT, которые в настоящее время используются, чтобы воспользоваться этими улучшениями безопасности.
- Поддержка интегратора: интеграторы должны обновлять свои системы, чтобы соответствовать новым и существующим длинам маркеров.
Внимание
Оба формата остаются действительными в обозримом будущем, но мы активно рекомендуем клиентам перейти к новому формату 84 символов. При увеличении нового формата мы рассмотрим выход из более старого 52-символьного формата и всех маркеров, выданных в этом стиле.
Связанные статьи
- Сведения о безопасности, проверке подлинности и авторизации
- Просмотр разрешений и доступа по умолчанию для Azure DevOps
- Отмена пользовательских PATS (для администраторов)
- Управление субъектами-службами и управляемыми удостоверениями в Azure DevOps
Вопросы и ответы
Вопрос. Почему не удается изменить или повторно создать область 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 по-прежнему не работает, проверьте, истек ли срок действия.
Вопрос. Разделы справки создавать ключи доступа, которые не привязаны к конкретному лицу в целях развертывания?
Ответ. В Azure DevOps можно создать ключи доступа, которые не привязаны к конкретному лицу с помощью субъектов-служб или управления удостоверениями. Дополнительные сведения см. в статье "Управление подключениями к службе" с помощью секретов Azure Key Vault в Azure Pipelines.