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


Проверка подлинности с помощью Azure Repos

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

Безопасная проверка подлинности является основой для защиты репозиториев Azure Repos и Azure DevOps Server Git. С помощью нескольких доступных вариантов проверки подлинности— токены OAuth Microsoft Entra, личные маркеры доступа и ключи SSH— выбор правильного метода обеспечивает безопасность и производительность рабочего процесса разработки.

Токены Microsoft Entra OAuth являются рекомендуемым подходом для современных команд разработки, предлагая повышенную безопасность с помощью стандартов OAuth 2.0 и простой интеграции с корпоративными системами удостоверений. Независимо от того, работаете ли вы из командной строки, используя клиенты Git, или интегрируете с конвейерами CI/CD, выбор метода проверки подлинности с соответствующими ограничениями области снижает риски безопасности при сохранении необходимого доступа.

Всегда отменяйте или смените учетные данные, если они больше не нужны. Эта практика поддерживает безопасность репозитория и следует принципу наименее привилегированного доступа.

Механизмы проверки подлинности

Маркеры Microsoft Entra являются предпочтительным методом аутентификации для операций Git и REST API. Они предлагают расширенные функции безопасности и могут использоваться везде, где используются личные маркеры доступа. Эти токены создаются для субъекта-пользователя или управляемой идентификации и/или субъекта-службы.

Краткое руководство по Azure CLI. Вы можете получить токен Microsoft Entra для немедленного использования с операциями Git с помощью Azure CLI. Этот метод идеально подходит для тестирования или однократных операций.

Для проверки подлинности пользователя:

 az login
 az account get-access-token --resource 499b84ac-1321-427f-aa17-267ca6975798 --query "accessToken" --output tsv

Для проверки подлинности субъекта-службы: Сначала войдите в качестве субъекта-службы, а затем получите маркер:

az login --service-principal -u <client-id> -p <client-secret> --tenant <tenant-id>
az account get-access-token --resource 499b84ac-1321-427f-aa17-267ca6975798 --query "accessToken" --output tsv

Пример использования с Git:

$accessToken = az account get-access-token --resource 499b84ac-1321-427f-aa17-267ca6975798 --query "accessToken" --output tsv
git -c http.extraheader="AUTHORIZATION: bearer $accessToken" clone https://dev.azure.com/{yourOrgName}/{yourProjectName}/_git/{yourRepoName}

Личные маркеры доступа (альтернативный вариант)

Замечание

Хотя личные маркеры доступа по-прежнему поддерживаются, токены Microsoft Entra OAuth рекомендуются для повышения безопасности и современных методов проверки подлинности.

Личные токены доступа (PATs) предоставляют доступ к Azure DevOps, не требуя прямого использования вашего имени пользователя и пароля. Срок действия этих маркеров позволяет ограничить область доступа к данным.

Используйте PATS, когда:

  • У вас нет ключей SSH, настроенных в системе
  • Необходимо ограничить разрешения, предоставленные учетными данными.
  • Токены OAuth Microsoft Entra недоступны в вашем сценарии

Для взаимодействия с 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

Ключи SSH

Проверка подлинности ключей с помощью SSH работает с помощью пары открытых и закрытых ключей, создаваемых на компьютере. Вы связываете открытый ключ с именем пользователя из Интернета. Azure DevOps шифрует данные, отправленные вам с помощью этого ключа при работе с Git. Вы расшифровываете данные на компьютере с закрытым ключом, который никогда не предоставляет общий доступ или отправляется по сети.

Анимированный GIF-файл с добавлением открытого ключа SSH в Azure DevOps

SSH — отличный вариант, если он уже настроен в вашей системе, просто добавьте открытый ключ в Azure DevOps и клонируйте репозитории с помощью SSH. SSH может быть предпочтительнее для Linux, macOS или Windows под управлением Git для Windows , которые не могут использовать диспетчеры учетных данных Git или личные маркеры доступа для проверки подлинности HTTPS.

Дополнительные сведения см. в статье "Настройка SSH с помощью Azure DevOps".

Генерация маркеров с помощью диспетчера учетных данных Git

Используйте диспетчер учетных данных Git (GCM), чтобы избежать ввода ваших учетных данных каждый раз и обеспечить большую безопасность маркера при доступе к репозиториям Azure. Войдите на веб-портал, создайте маркер и используйте маркер в качестве пароля при подключении к Azure Repos. Маркеры Microsoft Entra (предпочтительный) или PAT создаются по запросу, если у вас установлен и сохранен диспетчер учетных данных локально для использования с командной строкой Git или другим клиентом.

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

  • Удалить существующий источник: Если вы ранее добавили источник с помощью имени пользователя, удалите его, выполнив следующую команду:

    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, используемую в Azure DevOps для репозиториев Git. Сегмент /_git/ указывает, что вы обращаетесь к репозиторию Git, и вы должны заменить do фактическим именем репозитория. Например, если репозиторий называется my-repo, путь будет иметь значение/_git/my-repo.

  • Клонировать репозиторий: Если вы используете Git и нужно пройти аутентификацию, выполните следующую команду:

    git clone https://{organization}@dev.azure.com/{organization}/_git/{repository}

    Замените {organization} именем организации Azure DevOps и {repository} именем репозитория.