다음을 통해 공유


개인용 액세스 토큰 사용

Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019

PAT(개인용 액세스 토큰)는 Azure DevOps에 인증하기 위한 대체 암호로 사용됩니다. 이 PAT는 귀하를 식별하고 접근성 및 액세스 범위를 결정합니다. 따라서 암호와 동일한 수준의 주의로 PAT를 처리합니다.

Microsoft 도구를 사용하는 경우 MSA(Microsoft 계정) 또는 Microsoft Entra ID는 인식되고 지원되는 방법입니다. Microsoft 또는 Microsoft Entra 계정을 지원하지 않는 타사 도구를 사용하거나 이러한 도구와 기본 자격 증명을 공유하지 않으려는 경우 PAT가 적합한 대안입니다.

이 문서에서는 Azure DevOps에 대한 PAT를 만들고, 사용하고, 수정하고, 해지하는 방법에 대해 설명합니다.

다음 방법을 사용하여 PAT를 관리할 수 있습니다.

Microsoft 이외의 도구에 대한 PAT를 설정하려면 Git 자격 증명 관리자를 사용하거나 수동으로 생성할 수 있습니다. 적절한 인증 메커니즘을 선택하려면 인증 지침을 검토하는 것이 좋습니다. PAT는 광범위한 솔루션이 필요하지 않은 소규모 프로젝트에 대한 간단한 대안을 제공합니다. 자격 증명 관리자가 없으면 사용자는 매번 자격 증명을 입력합니다.

필수 조건

  • 사용 권한:
    • PAT가 관리되는 사용자 설정에 액세스하고 수정할 수 있는 권한이 있습니다.
      • 사용 권한 확인: 사용 권한을 확인하려면 Azure DevOps에서 다음 프로세스 중 하나를 수행합니다.
        • 프로필로 이동하여 사용자 설정>개인 액세스 토큰을 선택합니다. 여기에서 PAT를 보고 관리할 수 있는 경우 필요한 권한이 있습니다.
        • 프로젝트로 이동하여 프로젝트 설정>사용 권한을 선택합니다. 목록에서 사용자 계정을 찾아 할당된 권한을 확인합니다. 토큰 또는 사용자 설정 관리와 관련된 권한을 찾습니다.
    • 조직에 정책이 있는 경우 Azure DevOps 관리자가 특정 권한을 부여하거나 허용 목록에 추가하여 PAT를 만들고 관리해야 할 수 있습니다.
    • PAT를 사용하여 수행하려는 작업에 따라 추가 권한이 필요할 수 있습니다. 예:
      • 빌드: 읽기 및 실행
      • 코드: 읽기, 쓰기, 관리
      • 환경: 읽기 및 관리
      • 프로젝트 및 팀: 읽기, 쓰기, 관리
      • 변수 그룹: 읽기 및 만들기
  • 액세스 수준: 최소한 기본 액세스 권한이 있습니다.
  • 보안 모범 사례: 필요한 경우에만 사용하고 정기적으로 회전하는 등 PAT를 관리하기 위한 보안 모범 사례를 숙지합니다.

PAT 만들기

  1. 조직에 로그인합니다(https://dev.azure.com/{Your_Organization}).

  2. 홈페이지에서 사용자 설정 를 연 다음 개인용 액세스 토큰을 선택합니다.

    선택 항목, 개인용 액세스 토큰을 보여 주는 스크린샷

  3. + 새 토큰을 선택합니다.

    선택 영역, 새 토큰을 보여 주는 스크린샷

  4. 토큰 이름을 지정하고, 토큰을 사용할 조직을 선택한 다음, 설정된 일 수 후에 토큰이 자동으로 만료되도록 설정합니다.

    기본 토큰 정보의 항목을 보여 주는 스크린샷.

  5. 이 토큰의 범위를 선택하여 특정 작업에 대한 권한을 부여합니다.

    예를 들어 Azure DevOps에 인증할 빌드 및 릴리스 에이전트에 대한 토큰을 만들려면 토큰의 범위를 에이전트 풀로 설정합니다(읽기 및 관리). 감사 로그 이벤트를 읽고 스트림을 관리하거나 삭제하려면 감사 로그 읽기를 선택한 다음 만들기를 선택합니다.

    PAT에 대해 선택한 범위를 보여 주는 스크린샷

    참고 항목

    전체 범위의 PAT를 만들 수 없습니다. 이 경우 Microsoft Entra ID의 Azure DevOps 관리자가 특정 사용자 지정 정의 범위 집합으로 제한하는 정책을 사용하도록 설정했습니다. 자세한 내용은 정책을 사용하여 PAT 관리/전체 범위의 PAT 만들기 제한을 참조 하세요. 사용자 지정 정의 PAT의 경우 구성 요소 거버넌스 API vso.governance에 액세스하는 데 필요한 범위는 UI에서 선택할 수 없습니다.

  6. 완료되면 토큰을 복사하여 안전한 위치에 저장합니다. 보안을 위해 다시 표시되지 않습니다.

    토큰을 클립보드에 복사하는 방법을 보여 주는 스크린샷

Azure DevOps에서 인증을 위해 사용자 자격 증명이 필요한 모든 곳에서 PAT를 사용합니다.

Important

  • 암호와 동일한 주의로 PAT를 처리하고 기밀로 유지합니다.
  • Microsoft Entra ID에서 지원하는 조직의 경우 90일 이내에 새 PAT로 로그인합니다. 그렇지 않으면 PAT가 비활성 상태가 됩니다. 자세한 내용은 조건부 액세스에 대한 사용자 로그인 빈도를 참조 하세요.

Notifications

PAT의 수명 동안 사용자는 두 가지 알림을 받습니다. 즉, 생성 시 첫 번째 알림과 만료 7일 전의 두 번째 알림을 받습니다.

PAT를 만든 후 다음 예제와 유사한 알림을 받게 됩니다. 이 알림은 PAT가 조직에 성공적으로 추가되었음을 확인하는 역할을 합니다.

PAT 생성 알림을 보여 주는 스크린샷.

다음 이미지는 PAT가 만료되기 전의 7일 알림의 예를 보여 줍니다.

만료 알림 근처 PAT를 보여 주는 스크린샷.

자세한 내용은 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 역할을 합니다.

Git

Git 상호 작용에는 빈 문자열을 제외한 모든 항목이 될 수 있는 사용자 이름이 필요합니다. 다음 코드 블록에 표시된 것처럼 HTTP 기본 인증 Base64-encode $MyPat 에 PAT를 사용합니다.

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 remote remove origin

  • PAT로 인증: 표준 인증에 문제가 발생하는 경우 다음 명령을 실행하여 명령줄을 통해 인증합니다.

    git remote add origin https://dev.azure.com/<PAT>@<company_machineName>:/<project-name>/_git/<repo_name>

    git push -u origin --all

    Git path to git repo = /_git/do 리포지토리용 Azure DevOps에서 사용되는 URL 경로 구조를 참조합니다. 세그먼트는 /_git/ Git 리포지토리에 액세스하고 있음을 나타내며 리포지토리의 실제 이름으로 바꿔 do 야 합니다. 예를 들어 리포지토리의 이름이 지정 my-repo되면 경로는 ''/_git/my-repo입니다.

  • 리포지토리 복제: Git을 사용하고 인증해야 하는 경우 다음 명령을 실행합니다.

    git clone https://{organization}@dev.azure.com/{organization}/_git/{repository}

    Azure DevOps 조직 이름과 {repository} 리포지토리 이름으로 바꿉 {organization} 니다.

코드에서 PAT 사용

코드에서 PAT를 사용하여 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());
   }
}

코드가 작동하는 경우 기본 인증 에서 OAuth로 전환하는 것이 좋습니다.

PAT를 사용하는 방법에 대한 자세한 내용 및 예제는 다음 문서를 참조하세요.

PAT 수정

다음 단계를 수행합니다.

  • PAT를 다시 생성하여 이전 토큰을 무효화하는 새 토큰을 만듭니다.
  • PAT를 확장하여 유효 기간을 늘린다.
  • PAT의 범위를 변경하여 권한을 변경합니다.
  1. 홈페이지에서 사용자 설정을 연 다음 프로필을 선택합니다.

    PAT를 수정하기 위해 선택할 단추 시퀀스를 보여 주는 스크린샷

  2. 보안에서 개인 액세스 토큰을 선택합니다. 수정할 토큰을 선택한 다음 편집합니다.

    PAT를 수정하는 강조 표시된 편집 단추를 보여 주는 스크린샷

  3. 토큰 이름, 토큰 만료 또는 토큰과 연결된 액세스 범위를 편집한 다음 저장을 선택합니다.

    수정된 PAT를 보여 주는 스크린샷

PAT 해지

다음과 같은 이유로 언제든지 PAT를 해지할 수 있습니다.

  • 손상된 것으로 의심되는 경우 PAT를 해지합니다.
  • 더 이상 필요하지 않은 경우 PAT를 해지합니다.
  • PAT를 해지하여 보안 정책 또는 규정 준수 요구 사항을 적용합니다.
  1. 홈페이지에서 사용자 설정을 연 다음 프로필을 선택합니다.

    선택할 단추 시퀀스, Team Services, 미리 보기 페이지 및 PAT 해지 스크린샷

  2. 보안에서 개인 액세스 토큰을 선택합니다. 액세스를 취소할 토큰을 선택한 다음, 해지(Revoke)를 선택합니다.

    단일 토큰 또는 모든 토큰을 해지하기 위한 선택을 보여 주는 스크린샷

  3. 확인 대화 상자에서 취소를 선택합니다.

    PAT를 해지하는 확인 화면을 보여 주는 스크린샷

자세한 내용은 관리자에 대한 사용자 PAT 취소를 참조 하세요.

서식 변경

2024년 7월을 기준으로 Azure DevOps에서 발급한 PAT의 형식이 크게 변경되었습니다. 이러한 변경은 더 많은 보안 이점을 제공하고 Azure DevOps용 GitHub Advanced Security와 같은 파트너 제품을 통해 사용할 수 있는 비밀 검색 도구를 개선합니다. 이 새 PAT 형식은 모든 Microsoft 제품에서 권장되는 형식을 따릅니다. 식별 가능한 비트가 더 많이 포함되면 이러한 비밀 검색 도구의 가양성 검색 속도가 향상되고 감지된 누출을 더 빠르게 완화할 수 있습니다.

주요 변경 내용:

  • 토큰 길이 증가: 새 토큰의 길이는 이제 84 자이며 52자가 임의 데이터입니다. 이 길이가 증가하면 전체 엔트로피가 향상되어 토큰이 잠재적 무차별 암호 대입 공격에 더 강합니다.
  • 고정 서명: 서비스에서 발급한 토큰에는 76-80 위치에 고정 AZDO 서명이 포함됩니다.

작업 필요:

  • 기존 PAT 다시 생성: 이러한 보안 향상 기능을 활용하기 위해 현재 사용 중인 모든 PAT를 다시 생성하는 것이 좋습니다.
  • 통합자 지원: 통합자는 새 토큰 길이와 기존 토큰 길이를 모두 수용하도록 시스템을 업데이트해야 합니다.

Important

두 형식 모두 당분간 유효하지만 고객이 새로운 84자 형식으로 전환하는 것이 좋습니다. 새 형식의 채택이 증가함에 따라 이전 52자 형식과 해당 스타일로 발급된 모든 토큰을 사용 중지하는 것이 좋습니다.

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를 갱신, 관리 및 만드는 방법이 있습니다. 자세한 내용은 REST APIFAQ를 사용하여 PAT 관리를 참조하세요.

Q: 모든 Azure DevOps REST API에서 기본 인증을 사용할 수 있나요?

A: 아니요. 대부분의 Azure DevOps REST API에서 기본 인증을 사용할 수 있지만 조직 및 프로필은 OAuth만 지원합니다. 자세한 내용은 REST API를 사용하여 PAT 관리를 참조하세요.

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가 여전히 작동하지 않는 경우 만료되었는지 확인합니다.

Q: 배포를 위해 특정 사용자와 연결되지 않은 액세스 키를 만들 어떻게 할까요? 있나요?

A: Azure DevOps에서 서비스 주체 또는 ID 관리를 사용하여 특정 사용자에 연결되지 않은 액세스 키를 만들 수 있습니다. 자세한 내용은 서비스 연결 관리, Azure Pipelines에서 Azure Key Vault 비밀 사용을 참조하세요.