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

# AWS CodeCommit

> 교차 계정 IAM 역할을 사용하여 AWS CodeCommit을 Iru Compliance에 연결하고 리포지토리 인벤토리, 브랜치 보호 및 풀 리퀘스트 기록을 수집합니다.

### AWS CodeCommit 정보

**CodeCommit**은 **리전별** 서비스이므로 Iru는 활성화된 리전을 순회합니다. **`codecommit:GitPull`**, **`BatchGet*`**, **`Describe*`**, **`Get*`**, **`List*`** 및 풀 리퀘스트 승인 평가가 포함된 **`AWSCodeCommitReadOnly`** 정책을 연결하세요. 리포지토리가 **고객 관리형 KMS** 키를 사용하는 경우 해당 키의 ARN에 대해 **`kms:Decrypt`** 권한을 추가하세요.

### 작동 방식

Iru는 자체 AWS 계정에서 실행됩니다. 사용자 계정의 **CodeCommit** 리포지토리 및 관련 메타데이터를 읽으려면, 마법사의 **External ID**로 보호되는 **`sts:AssumeRole`** 권한을 통해 Iru가 **수임**할 수 있고 읽기 전용 **`codecommit:`** 권한(예: **`AWSCodeCommitReadOnly`** 또는 [**AWS**](#aws) 탭의 인라인 JSON)이 있는 **IAM 역할**을 생성합니다. 그런 다음 역할의 **ARN**을 Iru에 붙여 넣습니다.

| 세부 정보 | 값 |
| - | - |
| **카테고리** | 개발자 도구 |
| **인증** | 교차 계정 IAM 역할 |

### 사전 요구 사항

* **역할**을 생성할 수 있는 IAM 권한.
* 증거를 수집할 CodeCommit 리포지토리 최소 1개.

### AWS CodeCommit을 Iru에 연결

<Tabs>
  <Tab title="Iru Compliance">
    <Note>
      여기서 시작하세요. 소스 마법사를 열고 **신뢰 정책**을 복사합니다(**외부 ID**도 기록해 두세요). AWS에서 역할을 생성할 준비가 되면 [**AWS**](#aws) 탭으로 전환하여 [**AWS에서 IAM 역할 생성**](#create-the-iam-role-in-aws)을 따르세요. **Role ARN**을 확보한 후 [**Iru Compliance**](#iru-compliance) 탭으로 돌아와 아래의 [**Iru에서 역할 ARN 제출**](#submit-the-role-arn-in-iru)을 완료하세요.
    </Note>

    #### 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="AWS CodeCommit 켜기">
        **AWS CodeCommit**을 찾습니다(**범주** 또는 **이름 또는 설명으로 검색** 사용). 해당 카드에서 **토글**을 켭니다. **Iru가 외부 서비스에 대한 액세스를 요청하고 있습니다** 마법사 탭은 열어 둡니다.
      </Step>

      <Step title="신뢰 정책 JSON 복사">
        마법사에는 IAM 역할에서 사용해야 하는 **신뢰 정책** JSON(**Principal** 및 **sts:ExternalId**)이 표시됩니다. 아래는 구조의 **예시**입니다. 계정, 보안 주체 ARN 및 외부 ID가 정확히 일치하도록 **마법사에 표시된 실제 JSON을 복사하세요**.

        ```json copy=false lines theme={null}
        {
          "Version": "2012-10-17",
          "Statement": [
            {
              "Effect": "Allow",
              "Principal": {
                "AWS": "arn:aws:iam::753695775620:role/IruConnect"
              },
              "Condition": {
                "StringEquals": {
                  "sts:ExternalId": "YOUR_EXTERNAL_ID"
                }
              },
              "Action": "sts:AssumeRole"
            }
          ]
        }
        ```
      </Step>

      <Step title="AWS로 전환하여 역할 생성">
        참고용으로 Iru 마법사 탭을 열어 둔 채 [**AWS**](#aws) 탭으로 전환하여 [**AWS에서 IAM 역할 생성**](#create-the-iam-role-in-aws)을 따르세요.
      </Step>
    </Steps>

    #### Iru에서 역할 ARN 제출

    <Note>
      새 역할의 **Role ARN**을 확보할 수 있도록 먼저 [**AWS**](#aws) 탭([**AWS에서 IAM 역할 생성**](#create-the-iam-role-in-aws)까지)을 완료하세요.
    </Note>

    <Steps>
      <Step title="IAM Role ARN 붙여 넣기">
        Iru 마법사 탭으로 돌아갑니다. 커넥터가 요청하는 위치에 **Role ARN**을 붙여 넣습니다.
      </Step>

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

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

  <Tab title="AWS">
    <Note>
      이 역할을 생성하기 전에 [**Iru Compliance**](#iru-compliance) 탭에서 [**Iru에서 신뢰 정책 가져오기**](#get-the-trust-policy-from-iru)를 완료하세요. **Trusted entity**를 구성할 때는 실제 마법사의 **외부 ID**와 신뢰 정책을 사용하세요.
    </Note>

    #### AWS에서 IAM 역할 생성

    <Steps>
      <Step title="역할 생성 워크플로 시작">
        **IAM** → **Roles** → **Create role**을 엽니다.
      </Step>

      <Step title="신뢰할 수 있는 엔터티 구성">
        **AWS account** → **Another AWS account**를 선택합니다. **`753695775620`**(또는 Iru에 표시된 ID)을 입력합니다. **Require external ID**를 활성화하고 Iru의 외부 ID를 붙여 넣습니다.
      </Step>

      <Step title="CodeCommit 읽기 액세스 연결">
        **`AWSCodeCommitReadOnly`** 정책을 연결합니다.
      </Step>

      <Step title="선택 사항 - CMK로 암호화된 리포지토리용 KMS 복호화">
        리포지토리에서 고객 관리형 KMS 키를 사용하는 경우 **인라인 정책**을 추가합니다(**REGION**, **ACCOUNT**, **CMK-ID** 교체).

        ```json lines theme={null}
        {
          "Version": "2012-10-17",
          "Statement": [
            {
              "Effect": "Allow",
              "Action": ["kms:Decrypt"],
              "Resource": "arn:aws:kms:REGION:ACCOUNT:key/CMK-ID"
            }
          ]
        }
        ```
      </Step>

      <Step title="역할 이름 지정 및 ARN 복사">
        역할 이름을 지정하고 역할을 생성한 다음 **Role ARN**을 복사합니다. [**Iru Compliance**](#iru-compliance) 탭으로 다시 전환하여 [**Iru에서 역할 ARN 제출**](#submit-the-role-arn-in-iru)을 완료하세요.
      </Step>

      <Step title="신뢰 관계 확인">
        **Trust relationships**가 마법사의 JSON과 일치하는지 확인합니다.
      </Step>
    </Steps>

    <Note>
      [**Iru Compliance**](#iru-compliance) 탭에서 계속 진행하여 **Role ARN**을 붙여 넣고 마법사를 완료하세요([**Iru에서 역할 ARN 제출**](#submit-the-role-arn-in-iru)).
    </Note>
  </Tab>
</Tabs>

### 문제 해결

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

  <Accordion title="리포지토리에서 AccessDenied 발생">
    해당 리포지토리의 CMK에 대해 **`kms:Decrypt`** 권한을 추가하세요.
  </Accordion>

  <Accordion title="리포지토리 없음">
    AWS에서 사용하는 **리전**이 리포지토리가 있는 리전과 일치하는지 확인하세요.
  </Accordion>

  <Accordion title="AssumeRole 거부됨">
    외부 ID가 일치하지 않습니다.
  </Accordion>
</AccordionGroup>

### 고려 사항

<CardGroup cols={2}>
  <Card title="CodeCommit은 신규 고객 액세스 종료가 발표…" icon="circle-info">
    CodeCommit은 **2024년 7월**에 **신규 고객 액세스 종료**가 발표되었습니다. 마이그레이션을 계획하고 리포지토리를 이전하면 이 소스를 사용 중지하세요.
  </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>
