個人用アクセス トークンを使用する
Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019
個人用アクセス トークン (PAT) は、Azure DevOps に認証するための代替パスワードとして機能できます。 この記事では、Azure DevOps の PAT を作成、使用、変更、取り消すプロセスについて説明します。
PAT について
個人用アクセス トークン (PAT) は、Azure DevOps のセキュリティ資格情報として機能します。 この PAT は、ユーザーを識別するだけでなく、アクセスのアクセシビリティとスコープも決定します。 そのため、PAT はパスワードと同じくらい重要であり、同じレベルの注意を払って処理する必要があります。
Microsoft ツールを使用している場合は、Microsoft アカウント (MSA) または Microsoft Entra ID が認識され、サポートされている方法です。 ただし、Microsoft または Microsoft Entra アカウントをサポートしていないサード パーティ製のツールを使用している場合や、これらのツールでプライマリ資格情報を共有することを嫌がる場合は、より安全な代替手段として PAT が使用されます。
次の 2 つの方法で、AT を作成および管理します。
- ユーザー インターフェイス (UI):この記事で詳しく説明するように、ユーザー設定を使用した
- PAT ライフサイクル管理 API
Microsoft 以外のツールの AT を確立するには、 Git 資格情報マネージャーを使用するか 手動で生成します。 適切な認証メカニズムの選択に役立つ認証ガイダンスを確認することをお勧めします。 AT は、広範なソリューションを必要としない小規模なプロジェクトに代わる簡単な手段として機能します。 資格情報マネージャーが使用中でない限り、ユーザーは毎回資格情報を入力する必要があります。
PAT の作成
組織にサインインします (
https://dev.azure.com/{Your_Organization}
)。ホーム ページからユーザー設定
を開き、[個人用アクセス トークン] を選択します。
[+ New Token] を選択します。
トークンに名前を付け、トークンを使用する組織を選択し、設定した日数後にトークンの有効期限が自動的に切れるよう設定します。
このトークンの スコープ を選択して、特定のタスク 承認します。
たとえば、 build およびリリース エージェントを有効にするトークンを作成 Azure DevOps に対する認証を行うには、トークンのスコープを Agent プール (読み取りおよび管理) に制限します。 監査ログ イベントを読み取り、ストリームを管理および削除するには、 監査ログの読み取りを選択し、 Create を選択します。
Note
フル スコープの AT の作成が制限される場合があります。 その場合、Microsoft Entra ID の Azure DevOps 管理者が、特定のカスタム定義のスコープ セットに制限するポリシーを有効にしました。 詳細については、「 ポリシーを使用して AT を管理する/フル スコープの AT の作成を制限するを参照してください。 カスタム定義 PAT の場合、コンポーネント ガバナンス API
vso.governance
にアクセスするために必要なスコープは、UI では選択できません。完了したら、トークンをコピーし、安全な場所に格納します。 セキュリティ上、再び表示されることはありません。
Azure DevOps での認証にユーザー資格情報が必要な任意の場所で PAT を使用します。
重要
- パスワードと同じ注意を払って PAT を処理し、秘密にしておきます。
- Microsoft Entra ID によってサポートされている組織の場合、90 日以内に新しい PAT でサインインする必要があります。そうしないと PAT が非アクティブになります。 詳細については、「条件付きアクセス ユーザーのサインイン頻度を参照してください。
通知
PAT の有効期間中、ユーザーは 2 つの通知を受け取ります。これは、作成時の最初の通知と、有効期限の 7 日前の 2 番目の通知です。
PAT を作成すると、次の例のような通知が表示されます。 この通知は、PAT が正常に組織に追加されたことを確認する役割を果たします。
次の図は、PAT の有効期限が切れる前の 7 日間の通知の例を示しています。
詳細については、「 SMTP サーバーを構成し、アラートとフィードバック要求の電子メールをカスタマイズするを参照してください。
予期しない通知
予期しない PAT 通知が表示された場合は、管理者またはツールによって PAT が作成された可能性があります。 いくつか例を挙げます。
- git.exe経由で Azure DevOps Git リポジトリに接続すると、"git: yourMachine に
https://dev.azure.com/{Your_Organization}
" という名前のトークンが作成されます。 - "Service Hooks: : Azure アプリ Service: : Deploy Web app" という名前のトークンは、Azure アプリ Service Web アプリのデプロイがユーザーまたは管理者によって設定されたときに作成されます。
- "WebAppLoadTestCDIntToken" という名前のトークンは、ユーザーまたは管理者が Web ロード テストをパイプラインの一部として設定するときに作成されます。
- Microsoft Teams Integration Messaging Extension が設定されると、"Microsoft Teams Integration" という名前のトークンが作成されます。
警告
PAT がエラーで存在すると思われる場合は、PAT を し パスワードを変更することを検討してください。 Microsoft Entra ユーザーとして、管理者に問い合わせて、組織が不明なソースまたは場所によって使用されたかどうかを確認します。 また、パブリック GitHub リポジトリへの accidental PAT チェックインに関する FAQ を参照してください。
PAT を使用する
PAT はデジタル ID として機能し、パスワードと同様に、利用時にユーザーを表します。
Git
Git の操作にはユーザー名が必要です。これは空の文字列以外の任意のユーザー名です。
HTTP 基本認証で PAT を使用するには、次のコード ブロックに含まれる$MyPat
にBase64-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
トークンの安全性を高めるために、資格情報マネージャーを使用して、毎回資格情報を入力する必要がないようにします。 Git Credential Manager をお勧めします。 Git for Windows が必要です。
既存のリポジトリ
既存のリポジトリの場合、ユーザー名を使用して配信元を既に追加している場合は、最初に次のコマンドを実行します。
git remote remove origin
それ以外の場合は、次のコマンドを実行します。
git remote add origin https://dev.azure.com/<PAT>@<company_machineName>:/<path-to-git-repo> path to git repo = <project name>/_git/<repo_name> git push -u origin --all
コードで PAT を使用する
コードで PAT を使用できます。
HTTP ヘッダーを介して PAT を提供するには、まずそれを Base64
文字列に変換します。 次の例は、C# を使用して Base64
に変換する方法を示しています。
Authorization: Basic BASE64_USERNAME_PAT_STRING
結果の文字列は、次の形式で HTTP ヘッダーとして指定できます。
次の例では、C# の HttpClient クラス を使用します。
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 に切り替えるのが適切なタイミングです。
AT の使用方法の詳細と例については、次の記事を参照してください。
PAT を変更する
PAT の再生成、拡張、または スコープの変更。 再生成されると、前の PAT が未承認になります。
ホーム ページでユーザー設定を開き、 Profile を選択します。
[セキュリティ] で、[個人アクセス トークン 選択します。 変更するトークンを選択し、編集します。
トークン名、トークンの有効期限、またはトークンに関連付けられているアクセスのスコープを編集し、 保存を選択します。
PAT を取り消す
PAT は、さまざまな理由でいつでも取り消すことができます。
ホーム ページでユーザー設定を開き、 Profile を選択します。
[セキュリティ] で、[個人アクセス トークン 選択します。 アクセスを取り消すトークンを選択し、 Revoke を選択します。
確認ダイアログで Revoke を選択します。
関連記事
- セキュリティ、認証、承認について
- Azure DevOps の既定のアクセス許可とアクセス
- ユーザーの AT を取り消す (管理者向け)
- Azure DevOps でサービス プリンシパルとマネージド ID を管理する
よく寄せられる質問
Q: 1 つの組織にスコープが設定されている PAT を編集または再生成できないのはなぜですか。
A: PAT のスコープが設定されている組織にサインインしていることを確認します。 同じ Microsoft Entra ID で任意の組織にサインインしている間すべての AT を表示できますが、編集組織スコープのトークンは、スコープが設定されている組織にサインインしている場合にのみ実行できます。
Q: ユーザー アカウントが無効になっている場合、PAT はどうなりますか?
A: ユーザーが Azure DevOps から削除されると、PAT は 1 時間以内に無効になります。 組織が Microsoft Entra ID に接続されている場合、PAT はユーザーに属しているため、Microsoft Entra ID でも無効になります。 サービスを実行し続けるために、ユーザーが PAT を別のユーザーまたはサービス アカウントにローテーションすることをお勧めします。
Q: REST API を使用して PAT を更新する方法はありますか。
A: はい。 PAT ライフサイクル管理 API を使用して、PAT を更新、管理、作成する方法があります。 詳細については、REST API を使用した MANage PAT および FAQ に関するページを参照してください。
Q: すべての Azure DevOps REST API で基本認証を使用できますか。
A: いいえ。 ほとんどの Azure DevOps REST API で基本認証を使用できますが、整理とプロファイルOAuthのみをサポートします。 詳細については、「 REST API を使用した PAT の管理を参照してください。
Q: PAT を GitHub のパブリック リポジトリに誤ってチェックインした場合はどうなりますか?
A: Azure DevOps は、GitHub 上のパブリック リポジトリにチェックインされた AT をスキャンします。 漏洩したトークンが見つかると、すぐにトークン所有者に詳細な電子メール通知が送信され、イベントが Azure DevOps 組織の audit ログに記録されます。 自動で漏洩した個人用アクセス トークンの取り消しポリシーを無効にしない限り、漏洩した PAT は直ちに取り消されます。 影響を受けるユーザーは、漏洩したトークンを し 新しいトークンに置き換えることで、直ちに軽減することをお勧めします。
詳細については、「 リークした AT を自動的に取り出す」を参照してください。
Q: 個人用アクセス トークンを ApiKey として使用して、dotnet/nuget.exe コマンド ラインを使用して NuGet パッケージを Azure Artifacts フィードに発行することはできますか。
A: いいえ。 Azure Artifacts では、個人用アクセス トークンを ApiKey として渡すことはサポートされていません。 ローカル開発環境を使用する場合は、Azure Artifacts で認証するために Azure Artifacts 資格情報プロバイダーをインストールすることをお勧めします。 詳細については、dotnet、NuGet.exe の次の例を参照してください。 Azure Pipelines を使用してパッケージを発行する場合は、 NuGet Authenticate タスクを使用して、フィード サンプルで認証します。
Q: PAT が機能しなくなったのはなぜですか?
A: PAT 認証では、完全な認証フローを使用して Azure DevOps に定期的にサインインする必要があります。 多くの場合、30 日に 1 回で十分ですが、Microsoft Entra の構成によっては、より頻繁にサインインする必要がある場合があります。 PAT が機能しなくなった場合は、最初に組織にサインインして、完全な認証プロンプトを確認してください。 その後も PAT が機能しない場合は、PAT の有効期限が切れているかどうかを確認してください。
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示