個人用アクセス トークンを使用する

Azure DevOps サービス |Azure DevOps Server |Azure DevOps Server 2022

個人用アクセス トークン (PAT) は、Azure DevOps認証の代替パスワードです。 PAT によってユーザーが識別され、使用可能なリソースと操作が決定されます。 パスワードと同じ注意を払って PAT を扱います。

注意事項

より安全な認証方法を使用できる場合は、AT を使用しないでください。 アプリケーションと自動化の場合は、可能な限りMicrosoft Entraトークン、マネージド ID、またはサービス プリンシパルを使用します。

ツールがMicrosoft Entra認証をサポートしていない場合は、最小限のスコープと最短の実用的な有効期間で組織スコープの PAT を使用します。

Important

Azure DevOpsでは、グローバルな AT が廃止されます。 既存のグローバル AT はすべて、2026 年 12 月 1 日に動作を停止します。 それらを今すぐ組織スコープの PAT または Microsoft Entra 認証に移行してください。 詳細については、「Azure DevOpsでのグローバル個人用アクセス トークンの廃止」を参照してください。

前提条件

  • Azure DevOps組織またはAzure DevOps Server コレクションへのアクセス。
  • PAT がアクセスするリソースと操作に必要なアクセス許可。 PAT は、所有者が持っている以上のアクセス許可を付与できません。
  • 組織のポリシーに基づいて PAT を作成するアクセス許可。 管理者は PAT の作成、スコープ、有効期間を制限できます。 詳細については、「 ポリシーを使用した AT の管理」を参照してください。

PAT を作成する

  1. 所属組織 (https://dev.azure.com/{organization}) にサインインします。

  2. ホーム ページで、 ユーザー設定を開き、[ 個人用アクセス トークン] を選択します。

    個人用アクセス トークンが選択されているユーザー設定のスクリーンショット。

  3. [+ New Token] を選択します。

    [新しいトークン] が選択されている [個人用アクセス トークン] ページのスクリーンショット。

  4. 名前を入力し、1 つの組織を選択し、有効期限を設定します。

    PAT 名、組織、および有効期限が構成されている作成ダイアログのスクリーンショット。

  5. 目的のタスクに必要 なスコープ のみを選択します。

    たとえば、セルフホステッド エージェントを登録するには、 エージェント プール (読み取りおよび管理) を選択します。 管理者は、フル スコープの AT を制限したり、特定のスコープの許可リスト エントリを要求したりする場合があります。

    新しい PAT に必要なスコープが選択されているスコープ オプションのスクリーンショット。

  6. [ 作成] を選択し、トークンをコピーして、セキュリティで保護された場所に格納します。 トークン値は再び表示されません。

    セキュリティで保護されたストレージ用にコピーする準備ができている新しい PAT のスクリーンショット。

注

次のスクリーンショットは、Azure DevOps サービスを示しています。 Azure DevOps Server インターフェイスは若干異なる場合があります。

  1. Azure DevOps Server Web ポータル (https://{server}/{collection} または http://{server}:{port}/tfs/{collection}) にサインインします。

  2. ホーム ページで、 ユーザー設定を開き、[ 個人用アクセス トークン] を選択します。

    個人用アクセス トークンが選択されているユーザー設定のスクリーンショット。

  3. [+ New Token] を選択します。

    [新しいトークン] が選択されている [個人用アクセス トークン] ページのスクリーンショット。

  4. 名前を入力し、コレクションを選択し、有効期限を設定します。

    PAT 名、コレクション、および有効期限が構成されている作成ダイアログのスクリーンショット。

  5. 目的のタスクに必要 なスコープ のみを選択します。

    たとえば、セルフホステッド エージェントを登録するには、 エージェント プール (読み取りおよび管理) を選択します。

    新しい PAT に必要なスコープが選択されているスコープ オプションのスクリーンショット。

  6. [ 作成] を選択し、トークンをコピーして、セキュリティで保護された場所に格納します。 トークン値は再び表示されません。

    セキュリティで保護されたストレージ用にコピーする準備ができている新しい PAT のスクリーンショット。

Microsoft Entra ID を使用している組織では、90 日以内に新しい PAT を使用してサインインしないと、その PAT は非アクティブになります。 詳細については、「条件付きアクセスへのユーザーのサインイン頻度」を参照してください。

通知

Azure DevOps PAT を作成すると通知が送信され、有効期限が切れる前に別の通知が送信されます。

PAT が作成されたことを確認する電子メールのスクリーンショット。

組織のポリシーで PAT の再生成が許可されなくなった場合は、有効期限の電子メールで制限が識別されます。 許可リスト エントリが必要な場合は、 プロジェクト コレクション管理者 に問い合わせてください。

電子メールの構成の詳細については、「 SMTP サーバーを構成し、アラートとフィードバック要求の電子メールをカスタマイズする」を参照してください。

予期しない通知

予期しない通知は、管理者またはツールが PAT を作成したことを意味する可能性があります。 一般的なトークン名は次のとおりです。

  • git: https://dev.azure.com/{organization} on {machine}: Git がAzure Repos リポジトリに接続するときに作成されます。
  • Service Hooks: Azure App Service: Deploy web appは、Azure App Service展開が構成されたときに作成されます。
  • Microsoft Teams Integration: Microsoft Teams統合の構成時に作成されます。

PAT が認識されない場合は、 それを取り消して パスワードを変更します。 Microsoft Entra アカウントの場合は、管理者に、未知のサインイン アクティビティを確認するよう依頼します。

PAT を使用する

1 回限りの要求、ローカル プロトタイプ、またはMicrosoft Entra認証をサポートしていないツールには PAT を使用します。 実稼働アプリケーションまたはサービスに対して、長期資格情報として AT を使用しないでください。

Azure DevOpsは、HTTP 基本認証ヘッダーを介して PAT を受け入れます。 ユーザー名は空にすることができます。 文字列 :{PAT}を Base64 エンコードし、結果の値を次のヘッダーで使用します。

Authorization: Basic BASE64_ENCODED_PAT

次の例では、 AZURE_DEVOPS_PAT 環境変数がセキュリティで保護されたシークレット ソースから設定されることを想定しています。

$patBytes = [Text.Encoding]::ASCII.GetBytes(":$env:AZURE_DEVOPS_PAT")
$headers = @{ Authorization = "Basic $([Convert]::ToBase64String($patBytes))" }

Invoke-RestMethod `
  -Uri "https://dev.azure.com/{organization}/{project}/_apis/build/builds?api-version=7.1" `
  -Headers $headers

プロトタイプが動作したら、委任されたユーザー アクセス用の Microsoft Entra OAuth に移行するか、アプリケーション アクセス用のサービス プリンシパルまたはマネージド ID に移行します。

PAT を変更する

PAT の名前、有効期限、またはスコープを変更できます。 PAT を再生成すると、新しいトークン値が作成され、前の値が無効になります。 期限切れまたは失効した PAT を変更または再生成することはできません。代わりに新しいものを作成してください。

  1. ホーム ページで、 ユーザー設定を開き、[ 個人用アクセス トークン] を選択します。

  2. PAT を選択し、[ 編集] を選択します。

    [編集] が選択されている既存の PAT のスクリーンショット。

  3. トークン名、有効期限、またはスコープを変更し、[ 保存] を選択します。

    保存する準備ができている更新された PAT 設定のスクリーンショット。

PAT を取り消す

PAT が侵害された場合、不要になった場合、または必要以上のアクセス権がある場合は、PAT を取り消します。

  1. ホーム ページで、 ユーザー設定を開き、[ 個人用アクセス トークン] を選択します。

  2. PAT を選択し、無効化 を選択します。

    [取り消し] が選択されている既存の PAT のスクリーンショット。

  3. 確認ダイアログで、[ 取り消し] を選択します。

    PAT を取り消す確認ダイアログのスクリーンショット。

期限切れまたは取り消された PAT を置き換える

PAT の有効期限が切れた後、または取り消された後、Azure DevOpsはそれを使用する後続の認証試行を拒否します。 パイプライン、スクリプト、パッケージ クライアント、または Git 操作は、通常、次回の認証時に失敗します。 Azure DevOpsでは、既に確立されているすべての接続が失効によって終了されるとは限りません。

有効期限が切れる前に PAT をローテーションする

回避可能なサービス中断なしで PAT を置き換えるには:

  1. 必要なスコープと短い有効期間のみを使用して、組織スコープの PAT を作成します。

  2. シークレット ストアに新しい値を格納します。 Git リモート URL、 .git/config、ソース コード、パイプライン YAML、またはログには、PAT を埋め込む必要はありません。

  3. すべての依存関係を更新する前に、非運用操作または 1 つの統合で新しい PAT をテストします。

  4. 古い PAT を格納する各サービスまたはツールを更新します。

    Integration 資格情報を更新する場所
    Git Git Credential Manager または別のセキュリティで保護された資格情報マネージャー
    Azure Pipelines シークレット変数、変数グループ、またはサービス接続
    Azure Artifacts Azure Artifacts資格情報プロバイダーまたはパッケージ マネージャーのセキュリティで保護された構成
    スクリプトと REST クライアント シークレット ストアまたは保護された環境変数
    サードパーティ製のツール ツールのセキュリティで保護された資格情報ストア
  5. 更新されたすべての統合をテストします。 影響を受けるパイプライン、Git 操作、パッケージ操作、スクリプト、または API 要求を実行し、認証エラーを確認します。

  6. 古い PAT を取り消します。

各 PAT の所有者、目的、スコープ、有効期限、依存する統合のインベントリを保持します。 組織のポリシーとシナリオのリスクに基づいて、有効期限が切れる前に AT を置き換えます。

有効期限切れまたは失効後の復旧

PAT が予期せず動作しなくなった場合:

  1. [ 個人用アクセス トークン ] ページで、PAT の状態と有効期限を確認します。
  2. 影響を受ける統合に必要なスコープのみを含む代替 PAT を作成します。
  3. 使用できない PAT を格納していた統合を更新します。
  4. 各統合をテストし、次にスケジュールされた操作で認証エラーを監視します。

エラーの理由が不明な場合は、 PAT 監査イベント を確認して、PAT の有効期限が切れたか、更新されたか、取り消されたかを判断します。

ライフサイクル管理 API を使用して PAT を管理する

PAT ライフサイクル管理 API を使用して、独自の PAT をプログラムで一覧表示、作成、更新、取り消します。

これらの API には、ユーザー委任フローからのMicrosoft Entraアクセス トークンが必要です。 vso.pats スコープを使用します。 サービス プリンシパルとマネージド ID は、ユーザーを表していないため、AT を作成または管理できません。

Operation リクエスト
PAT を一覧表示する GET https://vssps.dev.azure.com/{organization}/_apis/tokens/pats?api-version=7.1
PAT を作成する POST https://vssps.dev.azure.com/{organization}/_apis/tokens/pats?api-version=7.1
PAT を取り消す DELETE https://vssps.dev.azure.com/{organization}/_apis/tokens/pats?authorizationId={authorizationId}&api-version=7.1

Microsoft Entra トークンをベアラー トークンとして送信します。 作成リクエストでは、次のボディ形式を使用します。

{
  "displayName": "CI build access",
  "scope": "vso.build",
  "validTo": "{expiration-in-UTC}",
  "allOrgs": false
}

list 応答は、 patTokens 配列内のトークンを返します。 create 応答は、 patToken.tokenでシークレットを 1 回返します。 その値を安全に保存し、ログに書き込むことはありません。 古いトークンを取り消すには、テーブルに示されているクエリ パラメーターとして authorizationId を渡します。

完全なスキーマと例については、「 PAT の一覧表示」、「 PAT の作成」、「PAT の 取り消し」を参照してください。

PAT 監査イベントを確認する

Azure DevOps Services は、組織の監査ログに PAT ライフサイクル イベントを記録します。 [組織の設定] で [監査] を選択し、次のアクションをフィルター処理します。

Action Event
PAT が作成される Token.PatCreateEvent
PAT の有効期限が切れる Token.PatExpiredEvent
PAT がパブリック リポジトリにあります Token.PatPublicDiscoveryEvent
ユーザーが PAT を取り消す Token.PatRevokeEvent
Azure DevOps が PAT を取り消す Token.PatSystemRevokeEvent
PAT が変更または再生成される Token.PatUpdateEvent

トークン アクセス イベントは現在ログに記録されていません。 監査ログを使用してライフサイクルの変更を調査し、PAT がいつ使用されたか、使用されたかを判断しません。

監査ログの保持期間

監査イベントは 90 日間保持され、削除されます。 保持期間は設定できません。 イベントを長く保持するには、それらを CSV または JSON にエクスポートするか、外部のセキュリティ情報およびイベント管理 (SIEM) システムに監査ストリームを構成します。

詳細については、監査ログへのアクセス、エクスポート、フィルター処理およびAzure DevOps の監査イベントを参照してください。

PAT ポリシーを構成する

テナント管理者は、グローバルな PAT とフル スコープの PAT を制限し、最大 PAT 有効期間を設定し、リークした PAT の自動失効を制御できます。 組織の設定>Microsoft Entraでテナント レベルの PAT ポリシーを構成します。

組織の所有者は、 組織の設定>Policies で個々の組織の PAT の作成を制限できます。 ロール、ポリシーの動作、および許可リストの手順については、「 ポリシーを使用した AT の管理」を参照してください。

PAT 形式

PAT 文字列は、シークレット検出を改善し、誤検知を減らす識別可能な形式を使用します。

  • PAT は、52文字のランダムな文字を含む84文字です。
  • Azure DevOps PAT には、76 ~ 80 桁の固定AZDO署名が含まれています。

統合で AT が検証される場合は、84 文字の形式がサポートされます。 リークされたトークン制御については、「 リークした AT を自動的に取り消す」を参照してください。

個人アクセス トークン (PATs) を使用するための最良の方法

代替案を検討する

PAT の作成

  • 組織スコープの PAT のみを作成します。 グローバル AT は、2026 年 12 月 1 日に動作を停止します。
  • ツールまたはワークフローごとに異なる PAT を使用します。
  • タスクに必要なスコープのみを選択します。
  • 有効期間は実用的な限り短くしてください。
  • 表示名に個人データやトークン値の一部を含めないでください。

PAT の管理

  • パーソナルアクセス トークン (PATs) は共有しないでください。
  • AZURE KEY VAULTなど、セキュリティで保護されたシークレット ストアに AT を格納します。
  • 有効期限が切れる前に PAT を置き換え、不要になったら取り消します。
  • PAT が公開または侵害された場合は、すぐに PAT を取り消します。

管理者向け

リスクの高い PAT を確認して対応する

セキュリティ レビューの一環として、次の手順を実行します。

  1. 完全なスコープ、有効期間、グローバル アクセス、または文書化された所有者と目的がない AT を識別します。
  2. 監査ログで PAT の作成、更新、パブリック検出、有効期限、失効イベントを確認します。 トークン アクセスはログに記録されないため、監査ログを使用して PAT をアクティブまたは古いとして分類しないでください。
  3. 漏えいした、危殆化した、または不要な PAT を無効化します。 オフボードの場合は、サポートされている トークン管理 API を 使用してユーザーの PAT を取り消し、影響を受ける統合を所有者に通知します。
  4. グローバルおよびフル スコープの PAT を制限し、最大有効期間を設定し、リークした PAT の自動失効を制御するように、テナントと組織の PAT ポリシー を構成します。
  5. 保持要件が 90 日を超えた場合は、監査イベントをエクスポートするか、監査ストリームを構成します。

よく寄せられる質問

1 つの組織にスコープを設定した PAT を編集または再生成できないのはなぜですか?

PAT のスコープが設定されている組織にサインインします。 アクセス スコープ フィルターを変更することで、同じMicrosoft Entra テナント内の任意の組織の PAT を一覧表示できますが、組織スコープの PAT は、その組織からのみ編集できます。

ユーザーアカウントが無効になった場合、PAT はどうなりますか?

アカウントが無効になっているか、組織から削除されると、そのアカウントの AT は、その組織のリソースにアクセスできなくなります。 Azure DevOps では、PAT が自動的に削除されることはありません。 アクセスが復元された場合、有効期限が切れていない、または取り消された PAT は、ユーザーの現在のアクセス許可で機能します。

すべてのAzure DevOps REST API で PAT を使用できますか?

No. PAT は、ほとんどの Azure DevOps REST API で使用できます。 組織、プロファイル、PAT ライフサイクル管理 API など、一部の API にはMicrosoft Entraトークンが必要です。

パブリック GitHub リポジトリに PAT をコミットするとどうなりますか?

Azure DevOps は、パブリック GitHub リポジトリをスキャンして、漏えいした PAT を検出します。 トークンを検出すると、Azure DevOpsは所有者に通知し、監査イベントを記録します。 テナント ポリシーが自動失効を無効にしない限り、Azure DevOpsは漏洩した PAT を取り消します。 詳細については、「漏洩した PAT を自動的に取り消す」を参照してください。

PAT を API キーとして使用して NuGet パッケージを発行できますか?

No. Azure Artifactsでは、API キーとして PAT を渡すことはできません。 ローカル開発環境で、Azure Artifacts資格情報プロバイダーをインストールします。 Azure Pipelinesで、NuGet 認証タスクを使用します。

例については、「dotnet を使用した発行」、NuGet.exeを使用した発行、および Azure Pipelines を使用した NuGet パッケージの発行に関するページを参照してください。

PAT が機能しなくなったのはなぜですか?

PAT の有効期限が切れたか、取り消されたか、非アクティブになったか、スコープが不十分か、アクセス許可が変更されたユーザーに属しているかどうかを確認します。 Microsoft Entra IDによってサポートされている組織の場合は、Azure DevOpsにサインインし、完全な認証プロンプトを完了してから、もう一度やり直してください。 条件付きアクセスの構成では、より頻繁なサインインが必要になる場合があります。

Azure DevOps Serverの場合、IIS 基本認証では PAT 認証が禁止されます。 IIS 基本認証を無効のままにします。

ユーザーに関連付けられていないアクセス トークンを作成するにはどうすればよいですか?

PAT は常に、それを作成したユーザーに紐付けられます。 非ユーザー ID の場合は、アプリケーション サービス プリンシパルまたはマネージド ID に発行されたMicrosoft Entra トークンを使用します。 パイプラインの場合は、 サービス接続を使用します。

API を使用して PAT をローテーションするにはどうすればよいですか?

ライフサイクル管理 API は、1 回の操作で PAT を再生成しません。 古い PAT を一覧表示してメタデータを取得し、必要なスコープと有効期限を持つ新しい PAT を作成し、依存するすべての統合を更新してテストした後、その authorizationIdを使用して古い PAT を取り消します。 正しいルートについては、「 ライフサイクル管理 API を使用した PAT の管理」を参照してください。

PAT ライフサイクル管理 API を呼び出すと管理者承認メッセージが表示されるのはなぜですか?

Microsoft Entra アプリケーションが組織のリソースにアクセスするには、テナントのセキュリティ ポリシーに管理者の同意が必要です。 テナント管理者に問い合わせてください。