Azure DevOps 서비스 | Azure DevOps Server | Azure DevOps Server 2022
PAT(개인용 액세스 토큰)는 Azure DevOps 인증을 위한 대체 암호입니다. PAT는 귀하를 식별하고 사용 가능한 리소스 및 작업을 결정합니다. PAT를 암호와 동일한 주의로 처리합니다.
주의
보다 안전한 인증 방법을 사용할 수 있는 경우 PAT를 사용하지 않습니다. 애플리케이션 및 자동화의 경우 가능하면 Microsoft Entra 토큰, 관리 ID 또는 서비스 주체를 사용합니다.
도구가 Microsoft Entra 인증을 지원하지 않는 경우 최소 범위와 가장 짧은 실제 수명을 가진 조직 범위 PAT를 사용합니다.
Important
Azure DevOps 전역 PAT를 사용 중지합니다. 모든 기존 글로벌 PAT는 2026년 12월 1일에 작동을 중지합니다. 이제 조직 범위의 PAT 또는 Microsoft Entra 인증으로 마이그레이션합니다. 자세한 내용은 Azure DevOps 전역 개인용 액세스 토큰 사용 중지를 참조하세요.
필수 조건
- Azure DevOps 조직 또는 Azure DevOps Server 컬렉션에 액세스합니다.
- PAT가 액세스하는 리소스 및 작업에 필요한 권한입니다. PAT는 소유자가 가진 것보다 더 많은 권한을 부여할 수 없습니다.
- 조직의 정책에 따라 PAT를 만들 수 있는 권한입니다. 관리자는 PAT 만들기, 범위 및 수명을 제한할 수 있습니다. 자세한 내용은 정책을 사용하여 PAT 관리를 참조하세요.
PAT 만들기
귀하의 조직(
https://dev.azure.com/{organization})에 로그인하세요.홈페이지에서 사용자 설정을
열고 개인용 액세스 토큰을 선택합니다.
+ 새 토큰을 선택합니다.
이름을 입력하고, 조직 하나를 선택하고, 만료 날짜를 설정합니다.
원하는 작업에 필요한 범위 만 선택합니다.
예를 들어 자체 호스팅 에이전트를 등록하려면 에이전트 풀을 선택합니다(읽기 및 관리). 관리자는 전체 범위의 PAT를 제한하거나 특정 범위에 대해 허용 목록 항목을 요구할 수 있습니다.
만들기를 선택하고, 토큰을 복사하고, 안전한 위치에 저장합니다. 토큰 값이 다시 나타나지 않습니다.
비고
다음 스크린샷은 Azure DevOps 서비스를 보여 줍니다. Azure DevOps Server 인터페이스는 약간 다를 수 있습니다.
Azure DevOps Server 웹 포털에 로그인합니다(
https://{server}/{collection}또는http://{server}:{port}/tfs/{collection}).홈페이지에서 사용자 설정을
열고 개인용 액세스 토큰을 선택합니다.
+ 새 토큰을 선택합니다.
이름을 입력하고, 컬렉션을 선택하고, 만료 날짜를 설정합니다.
원하는 작업에 필요한 범위 만 선택합니다.
예를 들어 자체 호스팅 에이전트를 등록하려면 에이전트 풀을 선택합니다(읽기 및 관리).
만들기를 선택하고, 토큰을 복사하고, 안전한 위치에 저장합니다. 토큰 값이 다시 나타나지 않습니다.
Microsoft Entra ID 지원하는 조직의 경우 90일 이내에 새 PAT로 로그인하거나 비활성 상태가 됩니다. 자세한 내용은 조건부 액세스에 대한 사용자 로그인 빈도를 참조 하세요.
알림
Azure DevOps 만료되기 전에 PAT 및 다른 알림을 만들 때 알림을 보냅니다.
조직 정책에서 더 이상 PAT를 다시 생성할 수 없는 경우 만료 전자 메일은 제한을 식별합니다. 허용 목록 항목이 필요한 경우 프로젝트 컬렉션 관리자 에게 문의하세요.
전자 메일 구성에 대한 자세한 내용은 SMTP 서버 구성 및 경고 및 피드백 요청에 대한 전자 메일 사용자 지정을 참조하세요.
예기치 않은 알림
예기치 않은 알림은 관리자 또는 도구가 PAT를 생성했음을 의미할 수 있습니다. 일반적인 토큰 이름은 다음과 같습니다.
-
git: https://dev.azure.com/{organization} on {machine}- Git이 Azure Repos 리포지토리에 연결할 때 생성됩니다. -
Service Hooks: Azure App Service: Deploy web appAzure App Service 배포를 구성할 때 만들어집니다. -
Microsoft Teams IntegrationMicrosoft Teams 통합이 구성되면 만들어집니다.
PAT를 인식하지 못하는 경우 이를 해지 하고 암호를 변경합니다. Microsoft Entra 계정의 경우 관리자에게 익숙하지 않은 로그인 활동을 검토하도록 요청합니다.
PAT을 사용하세요.
일회성 요청, 로컬 프로토타입 또는 Microsoft Entra 인증을 지원하지 않는 도구에 PAT를 사용합니다. 프로덕션 애플리케이션 또는 서비스에 대한 장기 자격 증명으로 PAT를 사용하지 마세요.
Azure DevOps HTTP 기본 인증 헤더를 통해 PAT를 허용합니다. 사용자 이름은 비어 있을 수 있습니다. 문자열을 Base64로 인코딩 :{PAT}하고 이 헤더에서 결과 값을 사용합니다.
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
프로토타입이 작동되면 위임된 사용자 액세스 또는 애플리케이션 액세스를 위한 서비스 주체 또는 관리 ID에 대한 Microsoft Entra OAuth로 마이그레이션합니다.
PAT 수정
PAT의 이름, 만료 또는 범위를 변경할 수 있습니다. PAT를 다시 생성하면 새 토큰 값이 만들어지고 이전 값이 무효화됩니다. 만료되었거나 해지된 PAT는 수정하거나 다시 생성할 수 없습니다. 대신 새 만들기를 만듭니다.
홈페이지에서 사용자 설정을
열고 개인용 액세스 토큰을 선택합니다.PAT를 선택한 다음 편집을 선택합니다.
토큰 이름, 만료 또는 범위를 변경한 다음 저장을 선택합니다.
PAT 해지
PAT가 손상되었거나, 더 이상 필요하지 않거나, 필요한 것보다 더 많은 액세스 권한이 있는 경우 PAT를 해지합니다.
홈페이지에서 사용자 설정을
열고 개인용 액세스 토큰을 선택합니다.PAT 를 선택한 다음 취소를 선택합니다.
확인 대화 상자에서 해지(Revoke)를 선택합니다.
만료 또는 해지된 PAT 바꾸기
PAT가 만료되거나 해지되면 Azure DevOps 이를 사용하는 후속 인증 시도를 거부합니다. 파이프라인, 스크립트, 패키지 클라이언트 또는 Git 작업은 일반적으로 다음에 인증할 때 실패합니다. Azure DevOps 해지가 이미 설정된 모든 연결을 종료한다고 보장하지는 않습니다.
만료되기 전에 PAT 회전
피할 수 있는 서비스 중단 없이 PAT를 대체하려면 다음을 수행합니다.
필요한 권한만 포함하고 만료 기간은 짧게 설정한 조직 범위의 PAT를 만듭니다.
비밀 저장소에 새 값을 저장합니다. Git 원격 URL, 소스 코드,
.git/config파이프라인 YAML 또는 로그에 PAT를 포함하지 마세요.모든 종속성을 업데이트하기 전에 비프로덕션 작업 또는 하나의 통합으로 새 PAT를 테스트합니다.
이전 PAT를 저장하는 각 서비스 또는 도구를 업데이트합니다.
Integration 자격 증명을 업데이트할 위치 Git Git 자격 증명 관리자 또는 다른 보안 자격 증명 관리자 Azure Pipelines 비밀 변수, 변수 그룹 또는 서비스 연결 Azure Artifacts Azure Artifacts 자격 증명 공급자 또는 패키지 관리자의 보안 구성 스크립트 및 REST 클라이언트 비밀 저장소 또는 보호된 환경 변수 타사 도구 도구의 보안 자격 증명 저장소 업데이트된 모든 통합을 테스트합니다. 영향을 받는 파이프라인, Git 작업, 패키지 작업, 스크립트 또는 API 요청을 실행하고 인증 실패를 확인합니다.
이전 PAT를 취소합니다.
각 PAT의 소유자, 용도, 범위, 만료 및 종속 통합의 인벤토리를 유지합니다. 조직의 정책 및 시나리오의 위험에 따라 만료 전에 PAT를 바꿉니다.
만료 또는 해지 후 복구
PAT가 예기치 않게 작동을 중지하는 경우:
- 개인용 액세스 토큰 페이지에서 PAT의 상태 및 만료를 확인합니다.
- 영향을 받는 통합에 필요한 범위만 사용하여 대체 PAT를 만듭니다.
- 사용할 수 없는 PAT를 저장한 통합을 업데이트합니다.
- 각 통합을 테스트하고 예약된 다음 작업에서 인증 실패를 모니터링합니다.
실패 이유가 명확하지 않은 경우 PAT 감사 이벤트를 검토하여 PAT가 만료되었는지, 업데이트되었는지 또는 해지되었는지 확인합니다.
수명 주기 관리 API를 사용하여 PAT 관리
PAT 수명 주기 관리 API를 사용하여 프로그래밍 방식으로 사용자 고유의 PAT를 나열, 만들기, 업데이트 및 해지합니다.
이러한 API에는 사용자가 위임한 흐름에서 Microsoft Entra 액세스 토큰이 필요합니다.
vso.pats 범위를 사용합니다. 서비스 주체 및 관리 ID는 사용자를 나타내지 않으므로 PAT를 만들거나 관리할 수 없습니다.
| 수술 | Request |
|---|---|
| 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
}
목록 응답은 patTokens 배열에 있는 토큰을 반환합니다. create 응답은 비밀을 한 번 반환합니다 patToken.token. 해당 값을 안전하게 저장하고 로그에 기록하지 않습니다. 이전 토큰을 폐기하려면 표에 표시된 쿼리 매개변수로 해당 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 정책을 구성합니다.
조직 소유자는 조직 설정>정책에서 개별 조직에 대한 PAT 만들기를 제한할 수 있습니다. 역할, 정책 동작 및 허용 목록 절차는 정책을 사용하여 PAT 관리를 참조하세요.
PAT 형식
PAT 문자열은 비밀 탐지를 개선하고 가양성을 줄일 수 있도록 식별 가능한 형식을 사용합니다.
- PAT는 52개의 임의 문자를 포함하여 84자 길이입니다.
- Azure DevOps PAT는 76~80 위치에 고정
AZDO된 서명을 포함합니다.
통합에서 PAT의 유효성을 검사하는 경우 84자 형식을 지원합니다. 유출된 토큰 제어에 대해서는 유출된 PAT 자동 취소를 참조하세요.
PAT 사용에 대한 모범 사례
대안 고려
- 애플리케이션 및 자동화에 Microsoft Entra 토큰을 사용합니다.
- 일회성 명령의 경우 Azure CLI 통해 Microsoft Entra 토큰을 획득합니다.
- Git의 경우 Git 자격 증명 관리자를 사용합니다. Azure Artifacts 경우 Azure Artifacts 자격 증명 공급자를 사용합니다.
PAT 만들기
- 조직 범위의 PAT만 생성하세요. 글로벌 PAT는 2026년 12월 1일에 작동을 중지합니다.
- 각 도구 또는 워크플로에 대해 다른 PAT를 사용합니다.
- 작업에 필요한 범위만 선택합니다.
- 수명을 실용적으로 짧게 유지합니다.
- 개인 데이터 또는 토큰 값의 일부를 표시 이름에 포함하지 마세요.
PAT 관리
- PAT를 공유하지 마세요.
- Azure Key Vault 같은 보안 비밀 저장소에 PAT를 저장합니다.
- 만료되기 전에 PAT를 바꾸고 더 이상 필요하지 않은 경우 해지합니다.
- PAT가 노출되거나 손상된 경우 즉시 취소합니다.
관리자의 경우
- 전체 범위의 PAT를 제한하고 보안 요구 사항에 따라 최대 수명을 설정합니다.
- 필요하지 않은 조직에서 PAT 만들기를 제한합니다.
- 지원되는 토큰 관리 API를 사용하여 사용자 PAT를 해지합니다.
- 서비스 및 자동화에 Microsoft Entra 인증을 선호합니다.
위험한 PAT 검토 및 대응
보안 검토의 일부로:
- 전체 범위, 긴 수명, 전역 액세스 또는 문서화된 소유자 및 목적이 없는 PAT를 식별합니다.
- 감사 로그에서 PAT 만들기, 업데이트, 공개 검색, 만료 및 해지 이벤트를 검토합니다. 토큰 액세스가 기록되지 않으므로 감사 로그를 사용하여 PAT를 활성 또는 부실로 분류하지 마세요.
- 노출되거나, 손상되거나, 불필요한 PAT를 해지합니다. 오프보딩의 경우 지원되는 토큰 관리 API 를 사용하여 사용자의 PAT를 해지하고 영향을 받는 통합을 소유자에게 알립니다.
- 전역 및 전체 범위의 PAT를 제한하고, 최대 수명을 설정하고, 유출된 PAT의 자동 해지를 제어하도록 테넌트 및 조직 PAT 정책을 구성합니다.
- 감사 이벤트를 내보내거나 보존 요구 사항이 90일을 초과하는 경우 감사 스트림을 구성합니다.
FAQ
한 조직으로 범위가 지정된 PAT를 편집하거나 다시 생성할 수 없는 이유는 무엇인가요?
PAT 범위가 지정된 조직에 로그인합니다. Access 범위 필터를 변경하여 동일한 Microsoft Entra 테넌트의 모든 조직에서 PAT를 나열할 수 있지만 해당 조직에서만 조직 범위 PAT를 편집할 수 있습니다.
사용자 계정을 사용하지 않도록 설정하면 PAT는 어떻게 되나요?
계정이 비활성화되거나 조직에서 제거되면 해당 PAT는 더 이상 해당 조직의 리소스에 액세스할 수 없습니다. Azure DevOps 자동으로 PAT를 삭제하지 않습니다. 액세스가 복원되면 만료되지 않았거나 해지된 PAT가 사용자의 현재 사용 권한과 함께 작동합니다.
모든 Azure DevOps REST API와 함께 PAT를 사용할 수 있나요?
아니요. 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 패키지를 게시할 수 있나요?
아니요. Azure Artifacts PAT를 API 키로 전달하는 것을 지원하지 않습니다. 로컬 개발 환경에서 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는 한 작업에서 PAT를 다시 생성하지 않습니다. 이전 PAT를 나열하여 메타데이터를 가져오고, 필요한 범위 및 만료를 사용하여 새 PAT를 만들고, 모든 종속 통합을 업데이트 및 테스트한 다음, 해당 을 사용하여 이전 PAT를 해지합니다 authorizationId. 올바른 경로는 수명 주기 관리 API를 사용하여 PAT 관리를 참조하세요.
PAT 수명 주기 관리 API를 호출할 때 관리자 승인 메시지가 표시되는 이유는 무엇인가요?
테넌트의 보안 정책에는 Microsoft Entra 애플리케이션이 조직 리소스에 액세스하기 전에 관리자 동의가 필요합니다. 테넌트 관리자에게 문의하세요.