次の方法で共有


Azure Repos での認証

Azure DevOps Services |Azure DevOps Server 2022 および Azure DevOps Server 2019

セキュリティで保護された認証は、Azure Repos と Azure DevOps Server Git リポジトリを保護するための基本です。 Microsoft Entra OAuth トークン、個人用アクセス トークン、SSH キーなど、複数の認証オプションを使用できるため、適切な方法を選択することで、開発ワークフローのセキュリティと生産性の両方が確保されます。

Microsoft Entra OAuth トークンは 、最新の開発チームに推奨されるアプローチであり、OAuth 2.0 標準によるセキュリティ強化とエンタープライズ ID システムとのシームレスな統合を提供します。 コマンド ラインから作業する場合でも、Git クライアントを使用する場合でも、CI/CD パイプラインと統合する場合でも、適切なスコープ制限を持つ認証方法を選択すると、必要なアクセスを維持しながらセキュリティ リスクが軽減されます。

資格情報が不要になったら、必ず取り消すかローテーションします。 この方法では、リポジトリのセキュリティが維持され、最小特権アクセスの原則に従います。

認証メカニズム

Microsoft Entra トークンは、Git 操作と REST API推奨される認証方法です。 これらは強化されたセキュリティ機能を提供し、個人用アクセス トークンが使用される場所であればどこでも使用できます。 これらのトークンは、ユーザー プリンシパルまたは マネージド ID やサービス プリンシパルに対して生成されます。

Azure CLI のクイック スタート: Azure CLI を使用して、Git 操作ですぐに使用できる Microsoft Entra トークンを取得できます。 この方法は、テストや 1 回限りの操作に最適です。

ユーザー認証の場合:

 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 トークンをお勧めします

個人用アクセス トークン (AT)、ユーザー名とパスワードを直接使用せずに Azure DevOps へのアクセスを提供します。 これらのトークンは有効期限が切れ、アクセスできるデータのスコープを制限できます。

次の場合は、個別アクセス トークンを使用します。

  • システムに SSH キーが設定されていない
  • 資格情報によって付与されるアクセス許可を制限する必要がある
  • Microsoft Entra OAuth トークンは、シナリオでは使用できません

Git の操作にはユーザー名が必要です。これは空の文字列以外の任意のユーザー名です。 HTTP 基本認証で PAT を使用するには、次のコード ブロックに示されているように、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 によるキー認証は、コンピューターで作成する公開と秘密のキーのペア経由で機能します。 公開キーを Web のユーザー名に関連付けます。 Azure DevOps では、Git を使用するときに、そのキーを使用して送信されたデータが暗号化されます。 コンピューター上のデータは、決してネットワーク経由で共有や送信が行われることのない秘密キーで暗号化解除します。

Azure DevOps への SSH 公開キーの追加を示すアニメーション GIF

SSH は、システムに既に設定されている場合に最適なオプションです。Azure DevOps に公開キーを追加し、SSH を使用してリポジトリを複製するだけです。 HTTPS 認証に Git 資格情報マネージャーまたは個人用アクセス トークンを使用できない Windows 用の Git を実行している Linux、macOS、または Windows では、SSH が推奨される場合があります。

詳細については、「 Azure DevOps を使用した SSH の設定を参照してください。

Git Credential Manager を使用してトークンを生成する

Git Credential Manager (GCM) を使用して、毎回資格情報を入力しないようにし、Azure Repos にアクセスするときにトークンの安全性を高めます。 Web ポータルにサインインし、トークンを生成し、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 は、Azure DevOps for Git リポジトリで使用される URL パス構造を指します。 /_git/ セグメントは、Git リポジトリにアクセスしていることを示しており、do を実際のリポジトリの名前に置き換える必要があります。 たとえば、リポジトリの名前が my-repoの場合、パスは '/_git/my-repo' になります。

  • リポジトリの複製: Git を使用していて認証が必要な場合は、次のコマンドを実行します。

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

    {organization} を Azure DevOps 組織名に置き換え、{repository} をリポジトリの名前に置き換えます。