Azure DevOps Services |Azure DevOps Server 2022 および Azure DevOps Server 2019
個人用アクセス トークン (PAT) は、Azure DevOps に認証するための代替パスワードとして機能します。 この PAT は、ユーザーを識別し、アクセスのアクセシビリティとスコープを決定します。 パスワードと同じレベルの注意を払って、PAT を扱います。
Microsoft ツールを使用すると、Microsoft アカウント (MSA) または Microsoft Entra ID が認識され、サポートされます。 Microsoft Entra アカウントをサポートしていないツールを使用している場合、またはプライマリ資格情報を共有したくない場合は、代替の認証方法として AT を使用することを検討してください。 ただし、可能な限り、Microsoft Entra トークン PAT 経由で使用することをお勧めします。
重要
リスクの高い個人用アクセス トークンよりも安全な Microsoft Entra トークンをお勧めします。 PAT 使用量の削減に向けた取り組みの詳細をご覧ください。 認証ガイダンスを確認して、ニーズに適した認証メカニズムを選択してください。
前提条件
カテゴリ | 要求事項 |
---|---|
アクセス許可 | ユーザー設定へのアクセスと、パーソナルアクセストークン (PAT) が管理されている箇所の設定変更を許可するための権限。 - プロファイル に移動し、 ユーザー設定>個人アクセス トークンを選択します。 ここで PAT を表示および管理できる場合は、必要なアクセス許可があります。 - プロジェクトに移動し、 プロジェクト設定>Permissions を選択します。 一覧でユーザー アカウントを見つけて、自分に割り当てられているアクセス許可を確認します。 トークンまたはユーザー設定の管理に関連するアクセス許可を探します。 - 組織にポリシーが設定されている場合、管理者が特定のアクセス許可を付与するか、許可リストに追加することで、PAT を作成および管理するための権限が必要になることがあります。 - PAT は、トークンを作成したユーザーアカウントに関連付けられています。 PAT で実行されるタスクによっては、追加のアクセス許可が必要になる場合があります。 |
アクセス レベル | 少なくとも Basic アクセス。 |
タスク | 必要な場合にのみ PAT を使用し、定期的に回転させます。 AT を使用する場合のベスト プラクティスに関するセクションを参照してください。 |
PAT を作成する
組織にサインインします (
https://dev.azure.com/{Your_Organization}
)。ホーム ページからユーザー設定
を開き、[個人用アクセス トークン] を選択します。
[+ New Token] を選択します。
トークンに名前を付け、トークンを使用する組織を選択し、設定した日数後にトークンの有効期限が自動的に切れるよう設定します。
このトークンのスコープを選択して、特定のタスクを認証します。
たとえば、ビルドおよびリリース エージェントのトークンを作成し、Azure DevOps に認証するには、トークンのスコープを エージェント プール (読み取り & 管理) に設定します。 監査ログ イベントを読み取り、ストリームを管理または削除するには、[監査ログを読み取る]を選択し、[作成] を選択します。
注
管理者は、 フル スコープの PAT の作成を制限したり、パッケージ化スコープの PAT のみに制限したりする場合があります。 より多くのスコープにアクセスする必要がある場合は、管理者に連絡して許可リストにアクセスしてください。 一部のスコープ (
vso.governance
など) は、広く一般に使用されていない場合は UI で使用できない可能性があります。完了したら、トークンをコピーし、安全な場所に格納します。 セキュリティ上、再度表示されることはありません。
Azure DevOps での認証にユーザー資格情報が必要な任意の場所で PAT を使用します。
重要
- パスワードと同じ注意を払って PAT を扱い、機密性を保ちます。 PATS を共有しないでください。
- Microsoft Entra ID によってサポートされている組織の場合は、90 日以内に新しい PAT でサインインしないと、非アクティブになります。 詳細については、「条件付きアクセスへのユーザーのサインイン頻度」を参照してください。
通知
PAT の有効期間中、ユーザーは 2 つの通知を受け取ります。1 つは PAT が作成されたときと、有効期限が切れる 7 日前です。
PAT を作成すると、次の例のような通知を受け取ることがあります。 この通知は、PAT が正常に組織に追加されたことを確認する役割を果たします。
有効期限の通知メールは、有効期限の 3 日前に送信されます。 管理者が 組織内の PAT を作成する機能を削除した場合、そのメールは、ユーザーが AT を再生成できなくなることを示します。 プロジェクト コレクション管理者に連絡して、その組織でのPAT作成を続けるための許可を許可リストに追加するよう依頼してください。
詳細については、「SMTP サーバーを構成し、アラートとフィードバック要求のメールをカスタマイズする」を参照してください。
予期しない通知
予期しない PAT 通知を受け取った場合は、管理者またはツールによって PAT が作成された可能性があります。 いくつかの例を次に示します。
- git.exe 経由で、Azure DevOps Git リポジトリに接続すると、"git:
https://dev.azure.com/{Your_Organization}
on YourMachine" という名前のトークンが作成されます。 - 自分または管理者が Azure App Service Web アプリのデプロイを設定すると、"Service Hooks: Azure App Service: Deploy Web app" という名前のトークンが作成されます。
- "WebAppLoadTestCDIntToken" という名前のトークンは、ユーザーまたは管理者が Web ロード テストをパイプラインの一部として設定するときに作成されます。
- Microsoft Teams Integration Messaging Extension が設定されると、"Microsoft Teams Integration" という名前のトークンが作成されます。
警告
- PAT を誤って存在していると考えられる場合、取り消し (およびパスワードを変更)してください。
- Microsoft Entra ユーザーの場合は、管理者に問い合わせて、不明なソースまたは場所が組織にアクセスしたかどうかを確認します。
- 「パブリック GitHub リポジトリに誤ってチェックインした PAT」に関する FAQ を参照してください。
PAT を使用する
PAT は、パスワードと同様にデジタル ID として機能します。 1 回限りの要求を実行したり、アプリケーションをローカルでプロトタイプ作成したりするための簡単な方法として、PAT を使用できます。 コードで PAT を使用して REST API 要求を 認証し、要求の承認ヘッダーに PAT を含めることでワークフローを自動化します。
重要
アプリ コードが動作したら、Microsoft Entra OAuth に切り替えて、 アプリのユーザーに代わってトークンを取得 するか、 サービス プリンシパルまたはマネージド ID を使用してアプリケーションとしてトークンを取得します。 AT を使用してアプリやスクリプトを長期的に実行し続けることは推奨されません。 Microsoft Entra トークンは、PAT が使用されている任意の場所で使用できます。 アドホック要求 用に Azure CLI を使用して Microsoft Entra トークンを取得 することを検討してください。
HTTP ヘッダーを介して PAT を提供するには、まずそれを Base64
文字列に変換する必要があります。 その後、HTTP ヘッダーとして次の形式で指定できます。
Authorization: Basic BASE64_USERNAME_PAT_STRING
PAT を変更する
次の手順を実行します。
- PAT を再生成して新しいトークンを作成すると、前のトークンが無効になります。
- PAT を拡張して有効期間を延長します。
- PAT のスコープを変更してアクセス許可を変更します。
ホーム ページからユーザー設定
を開き、[個人用アクセス トークン] を選択します。
変更するトークンを選択し、編集します。
トークン名、トークンの有効期限、またはトークンに関連付けられているアクセスのスコープを編集し、[保存] を選択します。
PAT を取り消す
PAT は、次のような理由でいつでも取り消すことができます。
- セキュリティ侵害: PAT が侵害、漏洩、またはログまたはパブリック リポジトリで公開されていると思われる場合は、すぐに PAT を取り消します。
- 不要: 作成されたプロジェクト、サービス、または統合が完了または廃止されたときに PAT を取り消します。
- ポリシー コンプライアンス: PAT を取り消して、セキュリティ ポリシー、コンプライアンス要件、または組織のトークン ローテーション スケジュールを適用します。
- ユーザーの変更: チーム メンバーが組織を離れたり、ロールを変更したり、アクセスが不要になった場合に PAT を取り消します。
- スコープの縮小: アクセス機能を制限する必要がある場合は、アクセス許可を減らして PAT を取り消して再作成します。
- 定期的なメンテナンス: 定期的なセキュリティ検疫とトークンライフサイクル管理の一環として PAT を取り消します。
PAT を取り消すには、次の手順を実行します。
ホーム ページからユーザー設定
を開き、[個人用アクセス トークン] を選択します。
[セキュリティ] で、[個人アクセス トークン] 選択します。 アクセスを取り消すトークンを選択し、[取り消す] を選択します。
確認ダイアログで [取り消す] を選択します。
PAT ライフサイクル管理 API
PAT ライフサイクル管理 API は、UI を介して大量のトークンを維持することが持続できない場合に役立つ場合があります。 PAT ローテーションをプログラムで管理することで、PAT を定期的に回転させ、既定の有効期間を短縮することもできます。 サンプル Python アプリは、Microsoft Entra テナントと Azure DevOps 組織で構成できます。
これらの API に関する注意事項を次に示します。
- Microsoft Entra アクセス トークンは、この API にアクセスするために必要です。通常、新しいトークンを作成する場合は、より強力な形式の認証が推奨されるためです。
- "代理ユーザー" フローを使用するユーザーまたはアプリのみが、パーソナルアクセストークン (PAT) を生成できます。 Microsoft Entra アクセス トークンを発行しない "アプリケーションの代理" フローまたは認証フローを使用するアプリは、この API では使用できません。 そのため、 サービス プリンシパルまたはマネージド ID は、AT を作成または管理できません。
- 以前は PAT ライフサイクル管理 API では
user_impersonation
スコープのみがサポートされましたが、vso.pats
が使用可能になり、これらの API で使用するための推奨スコープが提供されるようになりました。 以前にこれらの API を呼び出すためにuser_impersonation
に依存していたすべてのアプリをダウンスコープします。
書式の変更
2024 年 7 月の時点で、PAT 文字列の形式が更新 され、漏洩した PAT 検出ツール と パートナー オファリングのシークレット検出が改善されました。 この新しい PAT 形式には、これらの検出ツールの誤検知率を向上させ、検出されたリークをより迅速に軽減するために、より多くの識別可能なビットが含まれています。
- 新しいトークンの長さは 84 文字になり、52 文字のデータがランダム化され、全体的なエントロピが向上し、トークンがブルート フォース攻撃に対してより耐性を持つようになりました。
- サービスによって発行されたトークンには、76 から 80 桁の固定
AZDO
署名が含まれます。
そのデータの前に発行された PAT を使用している場合は、PAT を再生成します。 PAT と統合し、PAT 検証が組み込まれている場合は、新規と既存の両方のトークン長に対応するように検証コードを更新します。
警告
どちらの形式も、近い将来有効なままです。 新しい形式の採用が増えると、古い 52 文字の PAT が廃止される可能性があります。
個人アクセス トークン (PATs) を使用するための最良の方法
代替案を検討する
- 有効期間の長い PAT を作成するのではなく、アドホック要求用に Azure CLI を使用して Microsoft Entra トークンを取得します。
- Git Credential Manager や Azure Artifacts Credential Manager などの資格情報マネージャーを使用して、認証を
oauth
または Microsoft Entra トークンに設定して、資格情報の管理を簡略化します。
PAT の作成
- PAT 名に個人データを含めないでください。 実際の PAT トークンの一部またはすべてを含むように PAT 名の名前を変更しないでください。
- すべての組織で必要な場合を除き、グローバルな AT の作成は避けてください。
- フローまたはユーザー ケースごとに異なるトークンを使用します。
- 各 PAT に必要な最小スコープのみを選択します。 特定のタスクに必要な最小限の特権を付与し、1 つの広範なスコープのトークンを使用する代わりに、異なるワークフローのスコープが制限された個別の AT を作成します。 PAT に読み取り専用アクセス許可が必要な場合は、必要になるまで書き込みアクセス許可を指定しないでください。
- PAT の寿命を短くします (週単位の方が理想的です。短い方が適しています)。
PAT の管理
- PAT を共有しないでください。
- AZURE KeyVault などのセキュリティで保護されたキー管理ソリューションに、PAT を格納します。
- UI または PAT ライフサイクル管理 API を使用して、PAT を定期的にローテーションまたは再生成します。
- 不要になったら、パーソナルアクセストークンを取り消します。
- ファースト パーティ製ツールで、シークレット漏洩の検出と失効をより適切に行うには、PAT をローテーションして新しい PAT 形式 を使用します。
管理者向け
- テナント管理者は、ポリシー を設定して 、グローバル PAT の作成、完全なスコープの PAT 作成、および有効期間の長い PAT 期間を制限できます。
- テナント管理者は、PAT が侵害された場合に組織ユーザーの PAT を取り消すことができます。
- 組織の管理者は、 組織での PAT の作成を制限できます。 それでも PAT が必要な場合は、その作成を許可リストにあるもののみに制限します。
よく寄せられる質問
Q: 1 つの組織にスコープされた PAT を編集または再生成できないのはなぜですか?
A: PAT の対象範囲が設定された組織にサインインします。 Access スコープ フィルターを変更することで、同じ Microsoft Entra ID 内の任意の組織にサインインしている場合に、その PAT を表示できますが、組織スコープのトークンは、特定の組織にサインインした場合にのみ編集できます。
Q: ユーザー アカウントが無効になっている場合、PAT はどうなりますか?
A: ユーザーが Azure DevOps から削除されると、PAT は 1 時間以内に無効になります。 組織が Microsoft Entra ID に接続されている場合、PAT はユーザーに属しているため、Microsoft Entra ID でも無効になります。 サービスを実行し続けるために、PAT を別のユーザーまたはサービス アカウントにローテーションすることをお勧めします。
Q: すべての Azure DevOps REST API で PAT を使用できますか?
A:いいえ。 ほとんどの Azure DevOps REST API で PAT を使用できますが、 組織とプロファイル、 PAT 管理ライフサイクル API では Microsoft Entra トークンのみがサポートされます。
Q: PAT を GitHub のパブリック リポジトリに誤ってチェックインした場合はどうなりますか?
A: Azure DevOps は、GitHub 上のパブリック リポジトリにチェックインされた PAT をスキャンします。 漏洩したトークンが見つかると、すぐにトークン所有者に詳細なメール通知が送信され、Azure DevOps 組織の監査ログにイベントが記録されます。 影響を受けるユーザーに漏洩したトークンを取り消し、取消新しいトークンに置き換えてもらうことで、この問題を軽減することをお勧めします。
自動で漏洩した個人用アクセス トークンの取り消しポリシーを無効にしない限り、漏洩した PAT は直ちに取り消されます。 詳細については、「漏洩した PAT を自動的に取り消す」を参照してください。
Q: dotnet/nuget.exe コマンドラインを使用して NuGet パッケージを Azure Artifacts フィードに発行するために、ApiKey として個人用アクセス トークンを使用できますか?
A:いいえ。 Azure Artifacts では、APIKey として PAT を渡すことはできません。 ローカル開発環境を使用する場合は、Azure Artifacts Credential Provider をインストールして Azure Artifacts で認証することをお勧めします。 詳細については、dotnet、NuGet.exe の次の例を参照してください。 Azure Pipelines を使用してパッケージを発行する場合は、NuGet 認証 タスクを使用してフィードで認証します。 の例
Q: PAT が機能しなくなったのはなぜですか?
A: PAT 認証では、完全な認証フローを使用して Azure DevOps に定期的にサインインする必要があります。 多くのユーザーは 30 日に 1 回サインインするだけで十分ですが、Microsoft Entra 構成によっては、より頻繁にサインインする必要がある場合があります。 PAT が機能しなくなった場合は、まず、組織にサインインして、完全な認証プロンプトを完了してみてください。 PAT が引き続き機能しない場合は、有効期限が切れているかどうかを確認します。
IIS 基本認証を有効にすると、Azure DevOps Server での PAT の使用が無効になります。 IIS 基本認証は常にオフにしておくことをお勧めします。
警告
IIS 基本認証で Git を使用すると、ユーザー認証に AT が必要になるため、Git は中断されます。 IIS 基本認証で使用するために Git 要求に追加のヘッダーを追加できますが、このアクションはお勧めしません。 Windows 認証では PAT の使用も禁止されるため、追加のヘッダーはすべての Azure DevOps Server インストールに使用する必要があります。 追加のヘッダーには、 user:PAT
の base 64 エンコードも含める必要があります。
git -c http.extraheader='Authorization: Basic [base 64 encoding of "user:password"]' ls-remote http://tfsserver:8080/tfs/DefaultCollection/_git/projectName
Q: ユーザーに関連付けられていないアクセス トークンを作成するにはどうすればよいですか?
A: すべての AT は、それを作成したユーザー ID に関連付けられます。 アプリケーションでは個人アクセストークン (PAT) を作成することはできません。
Azure DevOps では、 アプリケーション サービス プリンシパルまたはマネージド ID によって発行された Microsoft Entra トークンを使用して、特定のユーザーにリンクされていないアクセス トークンを生成できます。 パイプラインの場合は、 サービス接続 を使用して、ユーザー固有の資格情報に依存することなく、自動化されたタスクを安全に認証および承認します。
Q: API を使用して PAT を再生成またはローテーションするにはどうすればよいですか? UI でそのオプションを見ましたが、API に同様のメソッドがありません。
A: UI で使用できる "再生成" 機能では、API を使用してレプリケートできるいくつかのアクションが実際に実行されます。
PAT をローテーションするには、次の手順を実行します。
- GET 呼び出しで PAT メタデータを表示する
- POST 呼び出しを使用して、古い PAT ID を持つ新しい PAT を作成します。
- DELETE 呼び出しを使用して古い PAT を取り消します。
Q: 期限切れ、失効、または非アクティブな AT が Azure DevOps トークンの一覧に表示されたままになる期間はどのくらいですか?
A: 有効期限が切れている、または取り消された AT は、使用または再生成できなくなります。 これらの非アクティブなトークンは、有効期限または失効後数か月間表示され、表示から自動的に削除されます。
Q: Microsoft Entra アプリを使用して PAT ライフサイクル管理 API を呼び出そうとすると、[管理者の承認が必要] ポップアップが表示されます。
A: アプリケーションが組織内の組織のリソースにアクセスするには、テナントのセキュリティ ポリシーに管理者の同意が必要です。 テナント管理者に連絡します。
Q: サービス プリンシパルを使用して、個人アクセス トークン (PAT) を作成または管理できますか。
A: いいえ。AT はユーザー ID に属しています。 Microsoft Entra サービス プリンシパルまたはマネージド ID は 、PAT が受け入れられるほとんどの場所で使用できる有効期間の短い Microsoft Entra トークンを生成できます。 Azure DevOps 全体の PAT 使用量を減らす取り組みの詳細を確認し、PAT を Microsoft Entra トークンに置き換える方法について説明します。