> ## Documentation Index
> Fetch the complete documentation index at: https://docs.iru.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Microsoft Azure DevOps

> Microsoft Entra ID OAuth로 Microsoft Azure DevOps를 Iru Compliance에 연결하여 프로젝트 설정, 리포지토리, 브랜치 정책, 풀 리퀘스트, 파이프라인, 권한 및 조직 감사 활동을 수집합니다.

### Microsoft Azure DevOps 정보

Iru는 Azure DevOps REST API에서 **프로젝트**, **리포지토리**, **브랜치 정책**, **풀 리퀘스트**, **빌드 및 릴리스 파이프라인**, **사용자 및 그룹**, **서비스 연결**, **감사 로그 이벤트**를 읽습니다. 인증은 다른 Microsoft Azure 소스와 동일한 **Launch OAuth Authentication** 마법사를 사용하여 **Microsoft Entra ID**를 통한 위임된 **OAuth 2.0**으로 이루어집니다. 회사 계정으로 로그인하며, Iru는 개인 액세스 토큰을 요청하지 않습니다. 수집 범위는 해당 계정이 이미 볼 수 있는 조직과 프로젝트로 제한됩니다. 파이프라인 **변수 이름**은 수집되지만 **시크릿 값은 수집되지 않습니다**.

### 작동 방식

```http theme={null}
OAuth 2.0 authorization code flow (Microsoft Entra ID)
```

Iru는 Azure DevOps에 대해 Microsoft의 OAuth 2.0 authorization code 흐름을 사용합니다. 팝업에서 로그인하고 동의하면 Iru는 수명이 짧은 액세스 토큰을 받고 자동으로 갱신합니다. 요청되는 범위는 Azure DevOps 권한 모델을 따릅니다(`vso.code`, `vso.build`, `vso.release`, `vso.graph`, `vso.audit_log`와 같은 읽기 액세스). 개인 액세스 토큰을 생성하거나 붙여넣지 마세요. 마법사는 이를 받지 않습니다.

| 항목 | 값 |
| - | - |
| **범주** | 개발자 도구 |
| **인증** | OAuth 2.0(Microsoft Entra ID) |

공식 참고 자료: [REST API overview](https://learn.microsoft.com/en-us/rest/api/azure/devops/), [Authorize access to REST APIs with OAuth 2.0](https://learn.microsoft.com/en-us/azure/devops/integrate/get-started/authentication/oauth).

### 사전 요구 사항

* Iru가 읽을 Azure DevOps 조직(`https://dev.azure.com/contoso`의 `contoso`)에 로그인할 수 있는 **Microsoft Entra ID** 계정.
* Iru가 읽을 모든 프로젝트에 대한 가시성. OAuth는 위임 방식이므로 Iru는 해당 계정의 프로젝트 액세스 권한을 상속합니다. 프로젝트를 볼 수 없는 계정은 해당 프로젝트에 대해 아무것도 반환하지 않습니다.
* Microsoft 동의 화면이 열릴 수 있도록 Iru 사이트에 대해 브라우저 **팝업** 허용. 프로젝트 범위를 결정하세요. 브랜치 정책이 범위에서 제외되면 Iru는 코드 리뷰 또는 승인 컨트롤을 확인할 수 없습니다.

### Microsoft Azure DevOps를 Iru에 연결

<Tabs>
  <Tab title="Azure DevOps">
    <Note>
      Compliance에서 소스를 연결하기 전에 이 탭을 완료하세요.
    </Note>

    <Steps>
      <Step title="Azure DevOps에 로그인">
        Iru 마법사에서 사용할 **Microsoft Entra ID** 계정(Iru가 읽을 테넌트 및 조직과 동일)으로 `https://dev.azure.com/{your-organization}`에 로그인합니다.
      </Step>

      <Step title="프로젝트 액세스 확인">
        범위에 포함된 모든 프로젝트를 열 수 있는지 확인합니다. Iru는 이 계정이 이미 액세스할 수 있는 항목만 수집할 수 있습니다.
      </Step>

      <Step title="브라우저에서 팝업 허용">
        커넥터 마법사에서 Microsoft 동의 화면이 열릴 수 있도록 Iru 호스트 이름에 대한 **팝업**을 허용합니다.
      </Step>

      <Step title="다중 테넌트 관련 주의 사항 확인">
        회사에서 여러 Microsoft Entra ID 테넌트를 사용하는 경우, OAuth 팝업이 올바른 회사 계정을 선택하도록 동일한 브라우저 프로필에서 개인 Microsoft 계정에서 로그아웃하거나 비공개 창을 사용하세요.
      </Step>

      <Step title="개인 액세스 토큰을 생성하지 않음">
        Iru는 OAuth 2.0으로 인증합니다. 마법사에 PAT를 붙여넣지 마세요.
      </Step>
    </Steps>

    <Note>
      [**Iru Compliance**](#iru-compliance) 탭에서 계속 진행하세요.
    </Note>
  </Tab>

  <Tab title="Iru Compliance">
    <Note>
      먼저 [**Azure DevOps**](#azure-devops) 탭을 완료하세요.
    </Note>

    <Steps>
      <Step title="소스 열기">
        Iru Compliance의 왼쪽 탐색 모음에서 **컴플라이언스**를 펼치고 **소스**를 선택합니다.

        <Frame>
          <img src="https://mintcdn.com/iru/tI0HDLDwHj8r9Ile/assets/media/images/iru-navigation-compliance-sources.png?fit=max&auto=format&n=tI0HDLDwHj8r9Ile&q=85&s=87dcef15fc17d2fb9a6e53f454e41710" alt="왼쪽 탐색: Compliance가 펼쳐지고 Sources가 선택됨" width="410" height="1024" data-path="assets/media/images/iru-navigation-compliance-sources.png" />
        </Frame>
      </Step>

      <Step title="Microsoft Azure DevOps 켜기">
        **Microsoft Azure DevOps**를 찾습니다(**범주** 또는 **이름 또는 설명으로 검색** 사용). 해당 카드에서 **토글**을 켭니다. 커넥터 마법사를 위한 브라우저 탭 또는 창이 열릴 수 있습니다.
      </Step>

      <Step title="OAuth 인증 시작">
        **Launch OAuth Authentication**을 선택합니다. 마법사에 **Perform OAuth Authentication**이 표시됩니다.
      </Step>

      <Step title="로그인 및 동의">
        Microsoft 창이 열리면 Azure DevOps에서 확인한 것과 동일한 회사 계정으로 로그인하고 동의 화면에서 **Accept**를 선택합니다.
      </Step>

      <Step title="연결 완료">
        OAuth 창이 닫히고 Iru가 교환을 완료하면 마법사에 **연결 구성됨**이 표시됩니다. 마법사에서 **조직** 이름도 요청하는 경우 이름만 입력합니다(예: 전체 URL이 아닌 `contoso`).
      </Step>

      <Step title="소스가 활성인지 확인">
        **Iru가 외부 서비스에 대한 액세스를 요청하고 있습니다** 브라우저 탭을 닫은 다음 **컴플라이언스** → **소스**로 돌아가 **Microsoft Azure DevOps** 카드가 **활성**인지 확인합니다.
      </Step>
    </Steps>
  </Tab>
</Tabs>

### 문제 해결

<AccordionGroup>
  <Accordion title="소스를 켜도 아무것도 열리지 않음">
    Iru 사이트에 대한 **팝업 차단** 설정을 확인한 후 다시 시도하세요.
  </Accordion>

  <Accordion title="인증이 실패하거나 Microsoft 창이 나타나지 않음">
    **팝업 차단** 설정을 확인한 다음 올바른 Microsoft Entra ID 테넌트의 회사 계정으로 로그인하세요.
  </Accordion>

  <Accordion title="리포지토리는 표시되지만 브랜치 정책, 풀 리퀘스트 또는 파이프라인이 표시되지 않음">
    로그인한 계정에 해당 객체에 대한 읽기 액세스 권한이 없습니다. 범위에 포함된 모든 프로젝트를 볼 수 있는 계정으로 로그인하거나, 관리자에게 해당 액세스 권한을 부여받은 후 다시 연결하세요.
  </Accordion>

  <Accordion title="프로젝트가 완전히 누락됨">
    OAuth를 완료한 계정이 해당 프로젝트를 볼 수 없습니다. 범위에 포함된 모든 프로젝트에 액세스할 수 있는 계정으로 다시 연결하세요.
  </Accordion>

  <Accordion title="일정 기간 비활성 후 카드에 Broken이 표시됨">
    연결이 활성 상태인 동안 액세스 토큰이 갱신됩니다. 새로 고침이 중단되면 소스를 껐다가 다시 켠 후 OAuth를 다시 완료하세요. 이는 PAT 만료가 아닙니다. Iru는 이 소스에 개인 액세스 토큰을 사용하지 않습니다.
  </Accordion>
</AccordionGroup>

### 관련 문서

<CardGroup cols={2}>
  <Card title="Sources 관리" icon="plug" href="/ko/compliance/sources-management">
    모든 Compliance 소스를 찾아보고 관리합니다.
  </Card>

  <Card title="Compliance 시작하기" icon="rocket" href="/ko/compliance/getting-started-with-compliance">
    프레임워크, 작업 및 **아티팩트**.
  </Card>

  <Card title="Iru 개요" icon="layer-group" href="/ko/iru/platform-overview/iru-overview">
    Endpoint, Compliance 및 Identity가 함께 작동하는 방식.
  </Card>

  <Card title="Artifacts 관리" icon="folder-open" href="/ko/compliance/artifacts-management">
    소스 및 작업에서 수집한 증거를 업로드, 검토 및 정리합니다.
  </Card>
</CardGroup>
