次の方法で共有


Azure Repos での認証

Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019

Azure Repos と Azure DevOps Server Git リポジトリへの安全なアクセスには、適切な認証方法を選択することが重要です。 コマンド プロンプトから作業する場合でも、HTTPS または SSH をサポートする Git クライアントを使用する場合でも、必要なアクセス権を提供するだけでなく、タスクに必要なスコープを制限する資格情報を選択することが重要です。

リポジトリのセキュリティを維持するために資格情報が不要になった場合は、常に資格情報を取り消します。 この方法により、コードを安全かつ効率的に操作できる柔軟性が確保されると同時に、承認されていないアクセスからコードを保護することもできます。

認証メカニズム

Microsoft Entra OAuth トークン

Microsoft Entra を使用して、REST APIにアクセスするためのトークンを生成します。 Microsoft Entra トークンは、個人用アクセス トークンが使用される場所であればどこでも使用できます。 Azure CLI から 1 回限りのアクセス トークンを取得して git fetch を呼び出す方法に関する便利なヒントを次に示します。

$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}

ヒント

毎回資格情報を入力しなくて済むようにするには、Git Credential Manager (GCM) の使用を検討してください。 Microsoft Entra トークンを生成するには、既定の資格情報の種類を Oauth として GCM を使用します。

個人用アクセス トークン

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

システムに SSH キーが設定されていない場合、または資格情報によって付与されるアクセス許可を制限する必要がある場合は、AT を使用して認証します。

Git の操作にはユーザー名が必要です。これは空の文字列以外の任意のユーザー名です。 HTTP 基本認証で PAT を使用するには、次のコード ブロックに示されているように、$MyPatBase64-encode を行います。

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

ヒント

PAT を定期的に使用している場合は、資格情報を毎回入力せずに済むように、Git Credential Manager (GCM) の使用を検討してください。 さらに、Oauth として既定の資格情報の種類を持つ GCM を使用して、PAT ではなく Microsoft Entra トークンを可能な限り生成することを検討してください。

SSH キー

SSH によるキー認証は、コンピューターで作成する公開と秘密のキーのペア経由で機能します。 公開キーを Web のユーザー名に関連付けます。 Azure DevOps は、ユーザーが Git を操作するときに、そのキーを使用してユーザーに送信するデータを暗号化します。 コンピューター上のデータは、決してネットワーク経由で共有や送信が行われることのない秘密キーで暗号化解除します。

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

SSH は、システムに既に設定されている場合に最適なオプションです。公開キーを Azure DevOps に追加し、SSH を使用してリポジトリをクローンするだけです。 Linux、macOS、または Windows Git for Windows を実行している場合、HTTPS 認証に Git 資格情報マネージャー を使用したり、個人用アクセス トークンを したりできない場合は、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} をリポジトリの名前に置き換えます。