개인용 액세스 토큰 사용
Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019
PAT(개인용 액세스 토큰)는 Azure DevOps에 인증하기 위한 대체 암호로 사용됩니다. 이 PAT는 귀하를 식별하고 접근성 및 액세스 범위를 결정합니다. 따라서 암호와 동일한 수준의 주의로 PAT를 처리합니다.
Microsoft 도구를 사용하는 경우 MSA(Microsoft 계정) 또는 Microsoft Entra ID는 인식되고 지원되는 방법입니다. Microsoft Entra 계정을 지원하지 않는 도구를 사용하거나 이러한 도구와 기본 자격 증명을 공유하지 않으려는 경우 PAT가 적절한 대안이 될 수 있습니다. 그렇지 않으면 가능한 경우에는 PATs보다 Microsoft Entra 토큰을 추천합니다.
팁
인증 지침 검토하여 요구 사항에 맞는 적절한 인증 메커니즘을 선택하는 것이 좋습니다. 문서의 페이지에서는 일부 일반적인 PAT 시나리오에 대한 지침을 제공하며, 이러한 시나리오는 대신 Microsoft Entra 토큰을 사용하는 것이 더 나을 수 있습니다.
다음 방법을 통해 PAT를 관리할 수 있습니다.
- UI(사용자 인터페이스): 사용자 설정을 통해, 이 문서에 설명된 대로.
- PAT 수명 주기 관리 API
- Git 작업을 위한 Git 자격 증명 관리자. 자격 증명 관리자는 토큰 관리를 용이하게 합니다. 하나도 없으면 사용자는 매번 자격 증명을 입력해야 합니다.
필수 조건
-
사용 권한:
- PAT가 관리되는 사용자 설정에 액세스하고 수정할 수 있는 권한이 있습니다.
-
사용 권한 확인: 사용 권한을 확인하려면 Azure DevOps에서 다음 프로세스 중 하나를 수행합니다.
- 프로필로 이동하여 사용자 설정> 여기에서 PAT를 보고 관리할 수 있는 경우 필요한 권한이 있습니다.
- 프로젝트로 이동하여 프로젝트 설정> 선택합니다. 목록에서 사용자 계정을 찾아 할당된 권한을 확인합니다. 토큰 또는 사용자 설정 관리와 관련된 권한을 찾습니다.
-
사용 권한 확인: 사용 권한을 확인하려면 Azure DevOps에서 다음 프로세스 중 하나를 수행합니다.
- 조직에 정책이 있는 경우 Azure DevOps 관리자가 특정 권한을 부여하거나 허용 목록에 추가하여 PAT를 만들고 관리해야 할 수 있습니다.
- PAT는 토큰을 발행한 사용자 계정에 연결됩니다. PAT가 수행하는 작업에 따라 더 많은 권한이 필요할 수 있습니다.
- PAT가 관리되는 사용자 설정에 액세스하고 수정할 수 있는 권한이 있습니다.
- 액세스 수준: 최소한 기본 액세스 권한이 있습니다.
- 보안 모범 사례: PATs를 관리하기 위한 보안 모범 사례에 익숙해지십시오. 필요한 경우에만 사용하고 항상 정기적으로 교체합니다.
PAT 만들기
조직에 로그인합니다(
https://dev.azure.com/{Your_Organization}
).홈페이지에서 사용자 설정 를 연 다음 개인용 액세스 토큰을 선택합니다.
+ 새 토큰을 선택합니다.
토큰 이름을 지정하고, 토큰을 사용할 조직을 선택한 다음, 설정된 일 수 후에 토큰이 자동으로 만료되도록 설정합니다.
이 토큰의 범위를 선택하여 특정 작업에 대한 권한을 부여합니다.
예를 들어 Azure DevOps에 인증할 빌드 및 릴리스 에이전트에 대한 토큰을 만들려면 토큰의 범위를 에이전트 풀로 설정합니다(읽기 및 관리). 감사 로그 이벤트를 읽고 스트림을 관리하거나 삭제하려면 감사 로그 읽기를 선택한 다음 만들기를 선택합니다.
참고 항목
전체 범위의 PAT를 만들 수 없습니다. 이 경우 Microsoft Entra ID의 Azure DevOps 관리자가 특정 사용자 지정 정의 범위 집합으로 제한하는 정책을 사용하도록 설정했습니다. 자세한 내용은 정책을 사용하여 PAT 관리/전체 범위의 PAT 만들기 제한을 참조 하세요. 사용자 지정 정의 PAT의 경우 구성 요소 거버넌스 API
vso.governance
에 액세스하는 데 필요한 범위는 UI에서 선택할 수 없습니다.완료되면 토큰을 복사하여 안전한 위치에 저장합니다. 보안을 위해 다시 표시되지 않습니다.
Azure DevOps에서 인증을 위해 사용자 자격 증명이 필요한 모든 곳에서 PAT를 사용합니다.
Important
- 암호와 동일한 주의로 PAT를 처리하고 기밀로 유지합니다.
- Microsoft Entra ID에서 지원하는 조직의 경우 90일 이내에 새 PAT로 로그인합니다. 그렇지 않으면 PAT가 비활성 상태가 됩니다. 자세한 내용은 조건부 액세스에 대한 사용자 로그인 빈도를 참조 하세요.
Notifications
PAT의 수명 동안 사용자는 두 가지 알림을 받습니다. 즉, 생성 시 첫 번째 알림과 만료 7일 전의 두 번째 알림을 받습니다.
PAT를 만든 후 다음 예제와 유사한 알림을 받게 됩니다. 이 알림은 PAT가 조직에 성공적으로 추가되었음을 확인하는 역할을 합니다.
다음 이미지는 PAT가 만료되기 전의 7일 알림의 예를 보여 줍니다.
자세한 내용은 SMTP 서버 구성 및 경고 및 피드백 요청에 대한 전자 메일 사용자 지정을 참조 하세요.
예기치 않은 알림
예기치 않은 PAT 알림이 표시되면 관리자 또는 도구에서 PAT를 만든 것일 수 있습니다. 다음 몇 가지 예를 참조하십시오.
- git.exe 통해 Azure DevOps Git 리포지토리에 연결할 때 "git:
https://dev.azure.com/{Your_Organization}
on YourMachine"이라는 토큰이 만들어집니다. - "서비스 후크: Azure 앱 서비스: : 웹앱 배포"라는 토큰은 사용자 또는 관리자가 Azure 앱 Service 웹앱 배포를 설정할 때 만들어집니다.
- "WebAppLoadTestCDIntToken"이라는 토큰은 사용자 또는 관리자가 파이프라인의 일부로 웹 부하 테스트를 설정할 때 만들어집니다.
- Microsoft Teams 통합 메시징 확장이 설정되면 "Microsoft Teams 통합"이라는 토큰이 만들어집니다.
Warning
- 오류가 있는 것으로 의심되는 경우 PAT를 해지합니다. 단계에 따라 PAT를 해지하고 암호를 변경합니다.
- Microsoft Entra 사용자인지 관리자에게 문의하여 알 수 없는 원본 또는 위치에서 조직에 액세스했는지 확인합니다.
- 퍼블릭 GitHub 리포지토리에 대한 실수로 인한 PAT 체크 인에 대한 FAQ를 검토합니다.
PAT 사용
PAT는 암호와 마찬가지로 디지털 ID 역할을 합니다. PAT는 일회성 요청을 수행하거나 애플리케이션을 로컬로 프로토타입하는 빠른 방법으로 사용될 수 있습니다.
Important
코드가 작동할 때 기본 인증에서 Microsoft Entra OAuth 로 전환하기에 좋은 시기입니다. 아래에 지정하지 않는 한 PAT가 사용되는 모든 곳에서 Microsoft Entra 토큰을 사용할 수 있습니다.
코드에서 PAT를 사용하여 REST API 요청을 인증하고 워크플로를 자동화할 수 있습니다. 이렇게 하려면 HTTP 요청의 권한 부여 헤더에 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());
}
}
PAT를 사용하는 방법에 대한 몇 가지 더 많은 예제는 다음 문서에서 찾을 수 있습니다.
- Git 리포지토리를 인증하기
- Git 리포지토리에 연결하도록 Git 자격 증명 관리자(GCM)를 설정합니다.
- Mac에서 NuGet 사용
- 보고 클라이언트 인증
- Azure DevOps CLI 시작
PAT 수정
다음 단계를 수행합니다.
- PAT를 다시 생성하여 이전 토큰을 무효화하는 새 토큰을 만듭니다.
- PAT를 확장하여 유효 기간을 늘린다.
- PAT의 범위를 변경하여 권한을 변경합니다.
홈페이지에서 사용자 설정을 연 다음 프로필을 선택합니다.
보안에서 개인 액세스 토큰을 선택합니다. 수정할 토큰을 선택한 다음 편집합니다.
토큰 이름, 토큰 만료 또는 토큰과 연결된 액세스 범위를 편집한 다음 저장을 선택합니다.
PAT 해지
다음과 같은 이유로 언제든지 PAT를 해지할 수 있습니다.
- 손상된 것으로 의심되는 경우 PAT를 해지합니다.
- 더 이상 필요하지 않은 경우 PAT를 해지합니다.
- PAT를 해지하여 보안 정책 또는 규정 준수 요구 사항을 적용합니다.
홈페이지에서 사용자 설정을 연 다음 프로필을 선택합니다.
보안에서 개인 액세스 토큰을 선택합니다. 액세스를 취소할 토큰을 선택한 다음, 해지(Revoke)를 선택합니다.
확인 대화 상자에서 취소를 선택합니다.
자세한 내용은 관리자에 대한 사용자 PAT 취소를 참조 하세요.
서식 변경
2024년 7월을 기준으로 Azure DevOps에서 발급한 PAT의 형식이 크게 변경되었습니다. 이러한 변경은 더 많은 보안 이점을 제공하고 유출된 PAT 검색 도구 또는 파트너 제품통해 사용할 수 있는 비밀 검색 도구를 개선합니다. 이 새 PAT 형식은 모든 Microsoft 제품에서 권장되는 형식을 따릅니다. 식별 가능한 비트가 더 많이 포함되면 이러한 비밀 검색 도구의 가양성 검색 속도가 향상되고 감지된 누출을 더 빠르게 완화할 수 있습니다.
주요 변경 내용:
- 토큰 길이 증가: 새 토큰의 길이는 이제 84 자이며 52자가 임의 데이터입니다. 이 길이가 증가하면 전체 엔트로피가 향상되어 토큰이 잠재적 무차별 암호 대입 공격에 더 강합니다.
-
고정 서명: 서비스에서 발급한 토큰에는 76-80 위치에 고정
AZDO
서명이 포함됩니다.
작업 필요:
- 기존 PAT 다시 생성: 이러한 보안 향상 기능을 활용하기 위해 현재 사용 중인 모든 PAT를 다시 생성하는 것이 좋습니다.
- 통합자 지원: 통합자는 새 토큰 길이와 기존 토큰 길이를 모두 수용하도록 시스템을 업데이트해야 합니다.
Important
두 형식 모두 당분간 유효하지만 고객이 새로운 84자 형식으로 전환하는 것이 좋습니다. 새 형식의 채택이 증가함에 따라 이전 52자 형식과 해당 스타일로 발급된 모든 토큰을 사용 중지하는 것이 좋습니다.
PAT 모범 사례
- 항상 PAT를 Azure KeyVault와 같은 보안 키 관리 솔루션에 저장하세요 .
- 자격 증명 관리를 간단하게 만들기 위해 가능하면 언제든지 Git Credential Manager 또는 Azure Artifacts Credential Manager같은 자격 증명 관리자를 사용합니다. 이러한 도구에는 PAT 대신 Microsoft Entra 토큰을 사용하는 옵션이 있을 수 있습니다.
- PAT를 만들 때 PAT 이름에 PII(개인 식별 정보)를 넣지 마세요. PAT 토큰 문자열의 이름을 토큰 이름으로 바꾸지 마세요.
- PAT가 여러 조직에 액세스할 필요가 없는 경우 액세스해야 하는 조직만 선택합니다. 여러 조직에 액세스하기 위해 PAT가 필요한 워크플로가 있는 경우 해당 워크플로에 대해 별도의 전역 PAT를 만듭니다.
- 각 PAT에 필요한 범위만 선택합니다. 가능한 한, 범위가 적은 PAT를 각 워크플로마다 여러 개 만들고 완전한 범위 지정이 이루어진 단일 PAT 대신 사용하십시오. PAT에 읽기 권한만 필요한 경우 필요할 때까지 쓰기 권한을 제공하지 마세요.
- PAT의 수명을 짧게(즉, 매주) 유지하고 정기적으로 교체하거나 다시 생성합니다. UI 또는 PAT 수명 주기 관리 API통해 이 작업을 수행합니다.
- 테넌트 관리자는 전역 PAT 만들기, 전체 범위 PAT 만들기 및 수명이 긴 PAT 기간을 제한하는 정책을 설정할 수 있습니다. 또한 정책이 공용 리포지토리에서 검색된 유출된 PAT를 자동으로 해지하도록 설정할 수 있습니다. 이러한 정책을 사용하여 회사의 보안을 향상시킵니다.
- 더 이상 필요하지 않은 경우 PAT를 해지합니다. 테넌트 관리자는 PAT가 손상된 경우 조직 사용자에 대한 PAT를
해지할 수 있습니다. - PAT를 새 형식으로 갱신하여 비밀이 유출되었는지 검색하는 기능을 개선하세요.
FAQ
Q: 단일 조직으로 범위가 지정된 PAT를 편집하거나 다시 생성할 수 없는 이유는 무엇인가요?
A: PAT 범위가 지정된 조직에 로그인되어 있는지 확인합니다. 동일한 Microsoft Entra ID의 조직에 로그인하는 동안 모든 PAT를 볼 수 있지만 범위가 지정된 조직에 로그인한 경우에만 조직 범위 토큰을 편집할 수 있습니다.
Q: 사용자 계정을 사용하지 않도록 설정하면 PAT는 어떻게 되나요?
A: 사용자가 Azure DevOps에서 제거되면 PAT는 1시간 이내에 무효화됩니다. 조직이 Microsoft Entra ID에 연결된 경우 PAT는 사용자에 속하기 때문에 Microsoft Entra ID에서도 무효화됩니다. 서비스를 계속 실행하려면 PAT를 다른 사용자 또는 서비스 계정으로 회전하는 것이 좋습니다.
Q: REST API를 통해 PAT를 갱신하는 방법이 있나요?
A: 예, PAT 수명 주기 관리 API를 사용하여 PAT를 갱신, 관리 및 만드는 방법이 있습니다.
Q: 모든 Azure DevOps REST API에서 PAT를 사용할 수 있나요?
A: 아니요. 대부분의 Azure DevOps REST API에서 기본 인증을 사용할 수 있지만
Q: 실수로 PAT를 GitHub의 퍼블릭 리포지토리 확인하면 어떻게 되나요?
A: Azure DevOps는 GitHub의 공용 리포지토리에 체크 인된 PAT를 검색합니다. 유출된 토큰을 찾으면 즉시 토큰 소유자에게 자세한 이메일 알림을 보내고 Azure DevOps 조직의 감사 로그에 이벤트를 기록합니다. 유출된 개인 액세스 토큰 정책을 자동으로 해지하지 않는 한 유출된 PAT를 즉시 해지합니다. 영향을 받는 사용자는 유출된 토큰을 해지하고 새 토큰으로 바꿔 문제를 완화하는 것이 좋습니다.
자세한 내용은 자동으로 유출된 PAT 해지(Revoke)를 참조 하세요.
Q: 개인 액세스 토큰을 ApiKey로 사용하여 dotnet/nuget.exe 명령줄을 사용하여 Azure Artifacts 피드에 NuGet 패키지를 게시할 수 있나요?
A: 아니요. Azure Artifacts는 개인용 액세스 토큰을 ApiKey로 전달하는 것을 지원하지 않습니다. 로컬 개발 환경을 사용하는 경우 Azure Artifacts 자격 증명 공급자를 설치하여 Azure Artifacts로 인증하는 것이 좋습니다. 자세한 내용은 dotnet, NuGet.exe 예제를 참조하세요. Azure Pipelines를 사용하여 패키지를 게시하려면 NuGet 인증 작업을 사용하여 피드 예제를 사용하여 인증합니다.
Q: PAT 작동이 중단된 이유는 무엇인가요?
A: PAT 인증을 사용하려면 전체 인증 흐름을 사용하여 Azure DevOps에 정기적으로 로그인해야 합니다. 30일마다 한 번씩 로그인하는 것은 많은 사용자에게 충분하지만 Microsoft Entra 구성에 따라 더 자주 로그인해야 할 수도 있습니다. PAT가 작동을 중지하는 경우 먼저 조직에 로그인하고 전체 인증 프롬프트를 완료합니다. PAT가 여전히 작동하지 않는 경우 만료되었는지 확인합니다.
PAT가 실패할 수 있는 몇 가지 알려진 이유는 다음과 같습니다.
- IIS 기본 인증을 사용하도록 설정하면 Azure DevOps Server에서 PAT 사용이 무효화됩니다. Azure DevOps 온-프레미스에서 IIS 기본 인증을 사용하는 방법은 을(를) 참고하고,을(를) 참조하세요.
Q: 배포를 위해 특정 사용자와 연결되지 않은 액세스 키를 만들 어떻게 할까요? 있나요?
A: Azure DevOps에서 서비스 주체 또는 ID 관리를 사용하여 특정 사용자에 연결되지 않은 액세스 키를 만들 수 있습니다. 자세한 내용은 서비스 연결 관리, Azure Pipelines에서 Azure Key Vault 비밀 사용을 참조하세요.
::: 모니커 엔드
관련된 문서
- 보안, 인증 및 권한 부여에 대해 알아보기
- Azure DevOps에 대한 기본 권한 및 액세스 검토
- REST API 사용하여 PAT(개인용 액세스 토큰) 관리
- 사용자 PAT 해지(관리자용)
- Azure DevOps에서 서비스 주체 및 관리 ID 관리
- 정책을 사용하여 사용자 개인용 액세스 토큰 관리