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

# Snowflake

> 키 페어 JWT 인증과 ACCOUNT_USAGE 액세스로 Snowflake를 Iru Compliance에 연결하여 역할 부여, 사용자 및 데이터 거버넌스 증거를 수집합니다.

### Snowflake 정보

Iru는 주로 **`SNOWFLAKE.ACCOUNT_USAGE`** 뷰를 통해 Snowflake에서 **웨어하우스 및 계정 사용량**, **데이터베이스/스키마 메타데이터**, **역할 및 권한 부여**, **로그인/쿼리 기록**을 수집합니다. 인증에는 **키 페어 인증**을 사용합니다. **RSA 개인 키**로 서명된 수명이 짧은 **JWT**를 Iru가 사용하는 Snowflake **사용자**에 등록된 **공개 키**로 검증합니다.

### 작동 방식

```http lines theme={null}
Authorization: Bearer YOUR_SIGNED_JWT
X-Snowflake-Authorization-Token-Type: KEYPAIR_JWT
```

JWT는 **수명이 짧으며**(약 **60초**), Iru는 구성된 키와 계정 세부 정보를 사용하여 JWT를 다시 생성합니다.

| 세부 정보 | 값 |
| - | - |
| **카테고리** | 데이터베이스 |
| **인증** | 키 페어 JWT |

공식 참고 자료: [Key-pair authentication](https://docs.snowflake.com/en/user-guide/key-pair-auth), [Account identifiers](https://docs.snowflake.com/en/user-guide/admin-account-identifier), [REST API](https://docs.snowflake.com/en/developer-guide/snowflake-rest-api/snowflake-rest-api), [ACCOUNT\_USAGE](https://docs.snowflake.com/en/sql-reference/account-usage).

### 사전 요구 사항

* 전용 서비스 사용자에게 `RSA_PUBLIC_KEY`를 할당할 수 있는 **`SECURITYADMIN`**(또는 동등한 권한).
* **2048비트**(또는 그 이상) RSA 키 페어를 생성할 **OpenSSL**(또는 다른 도구).
* **계정 식별자**(`orgname-accountname` 권장, 필요한 경우 리전/클라우드가 포함된 레거시 로케이터).

### Snowflake를 Iru에 연결

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

    <Steps>
      <Step title="Snowflake 관리자 액세스 확인">
        통합 사용자에 대해 **`ALTER USER`** 및 **`GRANT`** 문을 실행할 수 있도록 **`SECURITYADMIN`**(또는 동등한 권한)으로 Snowsight 또는 클래식 콘솔에 로그인합니다.
      </Step>

      <Step title="안전한 워크스테이션 준비">
        **OpenSSL**(또는 보안 팀이 승인한 다른 RSA 도구)이 설치된 신뢰할 수 있는 컴퓨터를 사용합니다. `snowflake_private_key.pem`은 볼트에만 보관합니다. git에 커밋하거나 Snowflake 지원팀에 보내지 마세요.
      </Step>

      <Step title="RSA 키 페어 생성">
        OpenSSL 예시:

        ```bash lines theme={null}
        openssl genrsa -out snowflake_private_key.pem 2048
        openssl rsa -in snowflake_private_key.pem -pubout -out snowflake_public_key.pem
        ```

        `snowflake_private_key.pem`을 보호하세요. 커밋하거나 Snowflake와 공유하지 마세요.
      </Step>

      <Step title="Snowflake 사용자에 공개 키 등록">
        관리자로서 `snowflake_public_key.pem`에서 PEM 헤더와 줄 바꿈을 제거하여 base64 본문만 남긴 다음 다음을 실행합니다.

        ```sql theme={null}
        ALTER USER YOUR_USERNAME SET RSA_PUBLIC_KEY='YOUR_PUBLIC_KEY';
        ```

        Snowflake는 교체를 위해 사용자당 **두 개**의 키(`RSA_PUBLIC_KEY` / `RSA_PUBLIC_KEY_2`)를 허용합니다. 새 키를 `RSA_PUBLIC_KEY_2`에 할당하고 Iru를 업데이트한 다음 이전 키를 삭제하세요.
      </Step>

      <Step title="마법사용 JWT 생성">
        **Snowflake CLI** 또는 라이브러리를 사용합니다. 예:

        ```bash lines theme={null}
        snow connection generate-jwt \
          --account YOUR_ACCOUNT_IDENTIFIER \
          --user YOUR_USERNAME \
          --private-key-path snowflake_private_key.pem
        ```

        초기 Iru 핸드셰이크를 위해 JWT 문자열을 복사합니다. 이후의 재생성은 제품에서 처리합니다.
      </Step>

      <Step title="ACCOUNT_USAGE 액세스 권한 부여">
        통합 사용자에게는 **`SNOWFLAKE`** 공유 메타데이터를 읽을 수 있는 역할이 필요합니다. 예:

        ```sql lines theme={null}
        GRANT IMPORTED PRIVILEGES ON DATABASE SNOWFLAKE TO ROLE YOUR_ROLE;
        GRANT ROLE YOUR_ROLE TO USER YOUR_USERNAME;
        ```
      </Step>
    </Steps>

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

  <Tab title="Iru Compliance">
    <Note>
      먼저 [**Snowflake**](#snowflake) 탭을 완료하세요.
    </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="Snowflake 켜기">
        **Snowflake**를 찾습니다(**범주** 또는 **이름 또는 설명으로 검색** 사용). 해당 카드에서 **토글**을 켭니다. 커넥터 마법사를 위한 브라우저 탭이나 창이 열릴 수 있습니다.
      </Step>

      <Step title="마법사에 계정 및 호스트 입력">
        계정에 맞는 호스트 패턴을 선택합니다.

        * 표준: `https://YOUR_ACCOUNT_IDENTIFIER.snowflakecomputing.com`
        * **PrivateLink**: `https://YOUR_ACCOUNT_IDENTIFIER.privatelink.snowflakecomputing.com`

        `account_identifier`를 입력하고 계속하기 전에 서버 변수를 확인합니다.
      </Step>

      <Step title="JWT 붙여넣기">
        메시지가 표시되면 **JWT**를 붙여넣습니다.
      </Step>

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

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

### 문제 해결

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

  <Accordion title="서버 변수 실패">
    마법사 세션이 만료되었습니다. 소스를 껐다가 다시 켠 후 다시 시도하세요.
  </Accordion>

  <Accordion title="JWT 검증 / 401">
    `DESCRIBE USER`를 실행하여 지문이 일치하고 개인 키가 등록된 공개 키와 쌍을 이루는지 확인하세요.
  </Accordion>

  <Accordion title="잘못된 계정 문자열">
    **`org-account`** 형식을 사용하는 것이 좋습니다. 레거시 로케이터에는 **리전/클라우드** 접미사가 필요할 수 있습니다.
  </Accordion>

  <Accordion title="PrivateLink">
    Iru 송신 트래픽이 엔드포인트에 도달할 수 있는지 확인하고, 필요한 경우 허용 목록에 추가하세요.
  </Accordion>

  <Accordion title="ACCOUNT_USAGE 누락">
    Iru 역할에 `SNOWFLAKE`에 대한 `IMPORTED PRIVILEGES`를 부여하세요.
  </Accordion>
</AccordionGroup>

### 고려 사항

<CardGroup cols={2}>
  <Card title="Iru는 테이블에 대해 임의의 쿼리를 실행하지…" icon="circle-info">
    Iru는 테이블에 대해 임의의 쿼리를 실행하지 **않습니다**. 거버넌스 중심의 메타데이터와 사용량 뷰를 읽습니다.
  </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>
