> ## 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.

# GitHub

> 개인 액세스 토큰으로 GitHub를 Iru Compliance에 연결하여 리포지토리 인벤토리, 브랜치 보호, 조직 멤버십 및 감사 로그를 수집합니다.

### GitHub 정보

**GitHub** 커넥터는 **GitHub 조직**에서 리포지토리 메타데이터, 브랜치 보호, 팀 멤버십, 조직 설정, 감사 로그 및 관련 보안 구성을 읽습니다. 이 데이터는 Iru Compliance에서 작업 및 컨트롤에 매핑할 수 있는 아티팩트로 표시됩니다. 통합은 **읽기 전용**입니다. Iru는 부여한 범위에 대해 GitHub API가 허용하는 범위를 넘어 풀 리퀘스트를 열거나, 설정을 변경하거나, 리포지토리를 수정하지 않습니다.

### 작동 방식

Iru는 **Bearer** 토큰으로 전송되는 \*\*개인 액세스 토큰(PAT)\*\*을 사용하여 GitHub REST API를 호출합니다.

```http theme={null}
Authorization: Bearer github_pat_XXXX
```

**Fine-grained PAT**(권장)를 사용하면 리포지토리와 권한의 범위를 좁게 지정할 수 있습니다. **Classic PAT**도 작동하지만 범위가 더 넓고 최소 권한을 적용하기 어렵습니다.

조직에서 **SAML SSO**를 적용하는 경우, PAT를 생성한 후 조직에 대해 PAT를 **승인**해야 합니다. 그렇지 않으면 조직 수준 데이터에 대한 API 호출이 실패합니다.

| 항목 | 값 |
| - | - |
| **범주** | 개발자 도구 |
| **인증** | Bearer 토큰(fine-grained 또는 classic PAT) |
| **GitHub 요금제** | GitHub Free, Team 또는 Enterprise와 호환(GitHub 자체의 API 및 감사 로그 제공 여부에 따름) |

공식 참고 자료: [Managing personal access tokens](https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens), [REST authentication](https://docs.github.com/en/rest/authentication/authenticating-to-the-rest-api), [Rate limits](https://docs.github.com/en/rest/using-the-rest-api/rate-limits-for-the-rest-api).

### 사전 요구 사항

* Iru가 읽을 조직의 멤버(또는 소유자)로서의 GitHub 액세스 권한.
* 감사 로그와 조직 전체 보안 설정이 필요한 경우(컴플라이언스 프로그램의 요구 사항에 따라) 해당 조직에 대한 **소유자** 액세스 권한.
* 아래 표에 맞는 **읽기** 권한을 가진 PAT(fine-grained PAT 기준).

**최소 fine-grained PAT 권한(일반적인 경우)**

| 영역 | 권한 |
| - | - |
| **Repository** | **Contents**(읽기), **Metadata**(읽기), **Administration**(읽기) |
| **조직** | **Members**(읽기), **Administration**(읽기) |

컨트롤에 추가 읽기 범위가 필요한 경우에만 권한을 늘리세요.

### GitHub를 Iru에 연결

#### Fine-grained 개인 액세스 토큰 생성

<Steps>
  <Step title="Developer settings 열기">
    GitHub에 로그인합니다. 프로필 사진 → **설정** → **Developer settings** → **Personal access tokens** → **Fine-grained tokens**를 선택합니다.
  </Step>

  <Step title="새 토큰 생성">
    **Generate new token**을 선택합니다.
  </Step>

  <Step title="이름, 만료 및 리소스 범위 설정">
    명확한 **이름**(예: **Iru Compliance**)과 **만료** 기간을 설정합니다(fine-grained PAT는 최대 **366일**까지 사용할 수 있으므로 미리 교체할 수 있도록 알림을 설정하세요). 조직 수준 데이터가 필요한 경우 **Resource owner**에서 **조직**을 선택합니다. **Repository access**에서 **All repositories** 또는 컴플라이언스 대상 리포지토리만 선택합니다.
  </Step>

  <Step title="리포지토리 및 조직 권한 설정">
    **권한**에서 위의 **사전 요구 사항**에 나열된 리포지토리 및 조직 **읽기** 권한을 최소한 활성화합니다.
  </Step>

  <Step title="토큰 생성 및 복사">
    토큰을 생성하고 즉시 복사합니다. 토큰은 한 번만 표시됩니다.
  </Step>

  <Step title="SAML SSO 승인(필요한 경우)">
    조직에서 **SAML SSO**를 사용하는 경우 **설정** → **Developer settings** → **Personal access tokens**를 열고 토큰을 찾아 **Configure SSO**를 선택한 다음 조직에 대해 **Authorize**합니다.
  </Step>
</Steps>

#### Iru에서 커넥터 설정 완료

<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="GitHub 켜기">
    **GitHub**를 찾습니다(**범주** 또는 **이름 또는 설명으로 검색** 사용). 해당 카드에서 **토글**을 켭니다. 새 탭에서 커넥터 마법사가 열립니다.
  </Step>

  <Step title="개인 액세스 토큰 붙여넣기">
    Bearer 토큰 단계가 표시되면 PAT를 **Token** 필드에 붙여넣고 제출합니다.
  </Step>

  <Step title="연결 완료">
    **Bearer 토큰 제출**을 선택합니다. 연결에 성공하면 마법사에 **연결 구성됨**이 표시됩니다.
  </Step>

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

### 문제 해결

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

  <Accordion title="401 Unauthorized">
    PAT가 전부 복사되었는지, 만료되지 않았는지, 취소되지 않았는지 확인하세요.
  </Accordion>

  <Accordion title="조직 데이터 누락">
    조직 전체를 읽으려면 PAT의 **resource owner**가 개인 계정만이 아니라 조직이어야 합니다. 필요한 경우 새 PAT를 생성하세요.
  </Accordion>

  <Accordion title="SSO 필요">
    SAML SSO에 대해 PAT를 승인하세요(**Fine-grained 개인 액세스 토큰 생성** 참조).
  </Accordion>

  <Accordion title="Resource not accessible by PAT">
    컨트롤에 필요한 리포지토리 및 조직 권한으로 PAT를 다시 생성하세요.
  </Accordion>

  <Accordion title="속도 제한">
    인증된 REST 요청은 GitHub의 속도 제한을 공유합니다(GitHub 문서 참조). Iru는 해당 제한 내에서 작업을 일괄 처리하지만, 지속적인 급증은 동기화를 지연시킬 수 있습니다.
  </Accordion>
</AccordionGroup>

### 고려 사항

<CardGroup cols={2}>
  <Card title="가장 작은 범위의 fine-grained PAT를 권장합니다…" icon="circle-info">
    컨트롤을 충족하는 범위 내에서 가장 작은 리포지토리 집합과 읽기 범위를 가진 **fine-grained PAT**를 사용하는 것이 좋습니다.
  </Card>

  <Card title="만료 전에 PAT를 교체하고 커넥터를 업데이트하세요…" icon="shield">
    증거 수집이 중단되지 않도록 만료 전에 PAT를 교체하고 커넥터를 업데이트하세요.
  </Card>

  <Card title="Iru는 허용된 API가 노출하는 메타데이터와 구성을 읽습니다…" icon="server">
    Iru는 허용된 API가 노출하는 메타데이터와 구성을 읽으며, 조직에서 적용하는 GitHub 권한을 우회하지 않습니다.
  </Card>
</CardGroup>

### 관련 문서

<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>
