Azure DevOps에서의 Service Connection에 대해

Last Update: 공유

Azure DevOps Pipeline에서 Azure Resource를 사용하여 처리하기 위해서는 Azure Resource에 대한 접근 권한이 필요합니다. 실 예로 Azure Pipeline의 구성을 위해 임의의 Task을 추가하여 실행할 경우에 해당 Task를 실행 시 Azure Resource의 접근을 위해 Azure Subscription 정보를 입력하는 경우가 있는 데, 이에 해당하는 적절한 Service Connection을 생성하여 입력 처리하는 것이 일반적입니다. 이때 필요한 Service Connection은 다음과 같은 과정을 거쳐서 생성할 수 있습니다.

Azure DevOps Service Connection 추가

  1. Azure DevOps 포털에 로그인합니다.
  2. 해당 Project의 Project settings에 들어갑니다.
  3. Service Connections에서 새로운 Service Connection을 생성합니다.
  4. New Service Connection에서 Azure Resource Manager를 선택합니다.
  5. Authentication Metod는 Service principal (automatic)을 선택한 후 다음을 누릅니다.
  6. Scope level은 Subscription으로 선택하고 하단의 Security는 “Grant access permission to all pipelines” 체크합니다.
  7. Subscription, Resource Group(기존에 생성한 Resource Group을 선택) 그리고, Service Connection 이름(예를 들어, ”AppConnection”)을 입력하고 저장합니다.

정상적으로 Service Connection이 생성되면, AppConnection이라는 이름의 Service Connection이 생성이 되며, 이를 클릭하면 아래와 같은 메뉴를 확인할 수 있습니다.

  • Manage Service Connection roles
  • Manage Service Principal

Manage Service Principal

“Manage Service Principal”을 클릭하면, Azure 포털에 존재하는 Service Principal을 확인할 수 있는 데, 일반적으로 “조직이름-프로젝트이름-UUID” 형태의 이름을 가지고 있습니다. 해당 Service Principal의 좌측 메뉴에 Certificates $ secret을 확인해 보면, 기본적으로 Client secrets가 존재하고, 이에 대한 만료일이 지정되어 있기 때문에 이에 대해서는 반드시 확인하여 만료이후에 Azure Pipeline 처리에 문제가 되지 않도록 관리해야 합니다.
간혹 갱신 이후에 “Failed to obtain the Json Web Token(JWT) using service principal client ID. Exception message: AADSTS7000215: Invalid client secret is provided.” 이와 같은 오류가 발생할 수 있는 데, 이 경우에는 아래와 같은 단계를 통해서 문제를 피할 수 있습니다.

  1. Service Connections에서 문제가 되는 Service Connection을 선택하고 Edit를 클릭합니다.
  2. Description(optional)을 수정하고 저장합니다. (Verify는 하지 마십시오.)
  3. Service Connection Edit 화면을 빠져나간 후에 해당 페이지를 refresh합니다.
  4. 다시 Edit 화면으로 들어가서 Verify를 선택합니다.
  5. 다시 저장 버튼을 클릭하여 저장합니다.

Manage service connection roles

또한, “Manage service connection roles”를 클릭하면, Azure Portal로 이동하면서 해당 Service Principal 이 속한 Subscription 정보의 Access Control(IAM)를 확인할 수 있습니다. IAM의 role assignments 메뉴를 확인하면, Azure DevOps에서 등록된 Service Principal 이 “App” type의 Contributor Role로써 등록이 된 것으로 확인할 수 있습니다.

만일, 추가적인 권한이 필요하다면,

  1. Add Role Assignment 메뉴로 들어가서
  2. “Role”에 필요한 권한을 선택하고,
  3. “Assign access to”에 “user, group or service principal”을 선택, 그리고, “select”에 앞서서 생성한 Service Principal을 검색하여 선택하면,

원하는 Role에 Azure DevOps에서 생성한 Service Principal을 추가할 수 있습니다.

※본 정보의 내용(첨부문서, 링크처 등을 포함)은 작성일 현재이며, 예고없이 변경될 수 있습니다.