Openflow Connector for Snowflake to Kafka 설정
Openflow Connector for Snowflake to Kafka 설정
이 페이지에서는 Snowflake to Kafka용 Openflow Connector를 설치·구성하는 절차를 설명해요. Snowflake 계정 준비, 커넥터 설치, 그리고 흐름 파라미터(소스·대상·수집) 구성까지 차례로 다룹니다.
출처: Snowflake 문서
본문
Note
이 커넥터는 Snowflake Connector Terms에 의해 규율됩니다.
이 토픽은 Snowflake to Kafka용 Openflow Connector를 설정하는 단계를 설명합니다.
전제 조건
-
About Openflow Connector for Snowflake to Kafka를 검토했는지 확인하세요.
-
Set up Openflow - Snowflake Deployments 또는 Set up Openflow - BYOC를 완료했는지 확인하세요.
-
변경 사항을 조회할 Snowflake 스트림을 생성합니다.
-
Snowflake 스트림의 CDC 메시지를 받을 Kafka 토픽을 생성합니다.
Snowflake 계정 설정
Snowflake 계정 관리자로 다음 작업을 수행하세요. 기본 SNOWFLAKE_MANAGED 인증 전략에서는 런타임의 execute-as 역할이 커넥터가 Snowflake에 접근할 때 사용하는 신원이므로, 그 역할에 아래 권한을 부여합니다.
- 커넥터가 CDC 이벤트를 읽는 데 사용할 데이터베이스, 소스 테이블, 스트림 객체를 생성합니다. 예:
create database stream_db;
use database stream_db;
create table stream_source (user_id varchar, data varchar);
create stream stream_on_table on table stream_source;
- 런타임의 execute-as 역할에 스트림과 스트림의 소스 객체에 대한
SELECT권한, 그리고 이들을 포함하는 데이터베이스·스키마에 대한USAGE권한을 부여합니다. 예:
grant usage on database stream_db to role OPENFLOW_<RUNTIME_NAME>_EXECUTE_AS_RL;
grant usage on schema stream_db.public to role OPENFLOW_<RUNTIME_NAME>_EXECUTE_AS_RL;
grant select on stream_source to role OPENFLOW_<RUNTIME_NAME>_EXECUTE_AS_RL;
grant select on stream_on_table to role OPENFLOW_<RUNTIME_NAME>_EXECUTE_AS_RL;
- 커넥터가 사용할 웨어하우스를 지정합니다. 하나의 커넥터는 단일 테이블을 단일 Kafka 토픽으로 복제할 수 있습니다. 이런 종류의 처리에는 가장 작은 웨어하우스를 선택할 수 있습니다.
create warehouse if not exists <openflow_warehouse>
with
warehouse_size = 'XSMALL'
auto_suspend = 300
auto_resume = true;
grant usage, operate on warehouse <openflow_warehouse> to role OPENFLOW_<RUNTIME_NAME>_EXECUTE_AS_RL;
Note
Openflow - BYOC Deployments에 커넥터를 배포하고 권장되는 SNOWFLAKE_MANAGED 대신 KEY_PAIR 인증 전략을 사용한다면, 런타임의 관리 토큰에 의존하는 대신 이 동일한 execute-as 역할을 서비스 사용자에게 부여하게 됩니다. 서비스 사용자 역할에 부여할 권한은 2단계의 권한(스트림과 소스 객체에 대한 SELECT, 그리고 이들의 데이터베이스·스키마에 대한 USAGE)이지 대상 데이터베이스와 웨어하우스가 아닙니다. 서비스 사용자 생성은 Set up key-pair authentication for Openflow - BYOC Deployments를 참고하세요.
커넥터 설정
데이터 엔지니어로 커넥터를 설치·구성하려면 다음 작업을 수행하세요:
-
Openflow의 Connector library 탭으로 이동합니다.
-
Openflow 커넥터 페이지에서 커넥터가 통신해야 하는 Kafka 브로커 인스턴스 종류에 따라 커넥터를 찾아 선택합니다.
-
mTLS 버전: SSL(상호 TLS, mutual TLS) 보안 프로토콜을 사용하거나, SASL_SSL 프로토콜을 사용해 자체 서명 인증서를 쓰는 브로커에 연결한다면 이 커넥터를 선택하세요.
-
SASL 버전: 다른 보안 프로토콜을 사용한다면 이 커넥터를 선택하세요.
-
Install을 선택합니다.
-
Select runtime 대화상자에서 Available runtimes 드롭다운 목록에서 런타임을 선택합니다.
-
Add를 선택합니다.
-
Snowflake 계정 자격 증명으로 배포에 인증하고, 런타임 앱이 Snowflake 계정에 접근하도록 허용하라는 메시지가 나오면 Allow를 선택합니다. 커넥터 설치 과정은 완료하는 데 몇 분 정도 걸립니다.
-
Snowflake 계정 자격 증명으로 런타임에 인증합니다.
Openflow 캔버스에 커넥터 프로세스 그룹이 추가됩니다.
-
가져온 프로세스 그룹을 우클릭하고 Parameters를 선택합니다.
-
Flow parameters에 설명된 대로 필수 파라미터 값을 채웁니다.
흐름 파라미터
이 섹션은 다음 파라미터 컨텍스트에 따라 구성할 수 있는 흐름 파라미터를 설명합니다:
Kafka Sink 소스 파라미터
| Parameter | Description | Required |
|---|---|---|
| Snowflake Account Identifier | 다음을 사용할 때: | |
| SNOWFLAKE_MANAGED 인증 전략: 비어 있어야 합니다. | ||
| KEY_PAIR: 데이터가 저장될 [organization-name]-[account-name] 형식의 Snowflake 계정 이름. | Yes | |
| Snowflake Authentication Strategy | 다음을 사용할 때: |
Snowflake Openflow Deployment 또는 BYOC: SNOWFLAKE_MANAGED 사용.
이 토큰은 Snowflake가 자동으로 관리합니다.
BYOC 배포는 SNOWFLAKE_MANAGED를 사용하려면 execute-as roles를 미리 구성해야 합니다.
BYOC: 대안으로 BYOC는 인증 전략 값으로 KEY_PAIR를 사용할 수 있습니다. | Yes |
| Source Database | 소스 데이터베이스. 소비할 Snowflake Stream 객체를 포함해야 합니다. | Yes |
| Snowflake Private Key Password | 다음을 사용할 때:
SNOWFLAKE_MANAGED 인증 전략: 비어 있어야 합니다.
KEY_PAIR: Snowflake Private Key File과 연결된 비밀번호를 제공. | No |
| Snowflake Role | 다음을 사용할 때
SNOWFLAKE_MANAGED 인증 전략: 런타임의 execute-as 역할(또는 그 역할에 부여된 하위 역할) 사용. Openflow UI에서 런타임의 View Details로 이동하면 execute-as 역할을 찾을 수 있습니다.
KEY_PAIR 인증 전략: 서비스 사용자에게 구성된 유효한 역할 사용. | Yes |
| Snowflake Username | 다음을 사용할 때:
SNOWFLAKE_MANAGED 인증 전략: 비어 있어야 합니다.
KEY_PAIR: Snowflake 인스턴스에 연결하는 데 사용할 사용자 이름을 제공. | Yes |
| Snowflake Private Key | SNOWFLAKE_MANAGED 인증 전략 사용 시 비워 두세요. KEY_PAIR 사용 시 인증에 사용할 RSA 개인 키를 제공하세요. RSA 키는 PKCS8 표준에 따라 형식화되고 표준 PEM 헤더·푸터를 가져야 합니다. Snowflake Private Key File 또는 Snowflake Private Key 중 하나는 반드시 정의되어야 합니다. | Yes |
| Snowflake Private Key File | SNOWFLAKE_MANAGED 인증 전략 사용 시 비워 두세요. KEY_PAIR 사용 시 인증에 사용할 RSA 개인 키가 든 파일을 Snowflake에 업로드하세요. PKCS8 표준에 따라 형식화되고 표준 PEM 헤더·푸터를 가져야 합니다. 헤더 줄은 -----BEGIN PRIVATE로 시작합니다. 개인 키 파일을 업로드하려면 Reference asset 체크박스를 선택하세요. | No |
| Source Schema | 소스 스키마. 소비할 Snowflake Stream 객체를 포함해야 합니다. | Yes |
| Snowflake Warehouse | 쿼리를 실행하는 데 사용하는 Snowflake 웨어하우스. | Yes |
Kafka Sink 대상 파라미터
| Parameter | Description | Required |
|---|---|---|
| Kafka Bootstrap Servers | 데이터를 보낼 Kafka 브로커의 쉼표 구분 목록. | Yes |
| Kafka SASL Mechanism | 인증에 사용하는 SASL 메커니즘. Kafka Client sasl.mechanism 속성에 해당. |
|
| 가능한 값: | ||
| PLAIN | ||
| SCRAM-SHA-256 | ||
| SCRAM-SHA-512 | ||
| AWS_MSK_IAM | Yes | |
| Kafka SASL Username | Kafka에 인증할 사용자 이름. | Yes |
| Kafka SASL Password | Kafka에 인증할 비밀번호. | Yes |
| Kafka Security Protocol | 브로커와 통신하는 데 사용하는 보안 프로토콜. Kafka Client security.protocol 속성에 해당. |
|
| 가능한 값: | ||
| PLAINTEXT | ||
| SASL_PLAINTEXT | ||
| SASL_SSL | ||
| SSL | Yes | |
| Kafka Topic | Snowflake Stream의 CDC 메시지가 전송될 Kafka 토픽. | Yes |
| Kafka Message Key Field | Kafka 메시지 키로 사용될 데이터베이스 열 이름을 지정. 지정하지 않으면 메시지 키가 설정되지 않습니다. 지정하면 이 열의 값이 메시지 키로 사용됩니다. 이 파라미터 값은 대소문자를 구분합니다. | No |
| Kafka Keystore Filename | mTLS 인증을 위한 클라이언트 키와 인증서를 저장하는 키스토어의 전체 경로. mTLS 인증과 보안 프로토콜이 SSL일 때 필요. | No |
| Kafka Keystore Type | 키스토어의 유형. mTLS 인증에 필요. | |
| 가능한 값: | ||
| PKCS12 | ||
| JKS | ||
| BCFKS | No | |
| Kafka Keystore Password | 키스토어 파일을 보호하는 데 사용되는 비밀번호. | No |
| Kafka Key Password | 키스토어에 저장된 개인 키의 비밀번호. mTLS 인증에 필요. | No |
| Kafka Truststore Filename | 브로커 인증서를 저장하는 트러스트스토어의 전체 경로. 클라이언트는 이 트러스트스토어의 인증서로 브로커 신원을 검증합니다. | No |
| Kafka Truststore Type | 트러스트스토어 파일의 유형. | |
| 가능한 값: | ||
| PKCS12 | ||
| JKS | ||
| BCFKS | No | |
| Kafka Truststore Password | 트러스트스토어 파일의 비밀번호. | No |
Kafka Sink 수집 파라미터
| Parameter | Description | Required |
|---|---|---|
| Snowflake FQN Stream Name | 정규화된(fully qualified) Snowflake 스트림 이름. | Yes |
플로우 실행
-
캔버스를 우클릭하고 Enable all Controller Services를 선택합니다.
-
가져온 프로세스 그룹을 우클릭하고 Start를 선택합니다. 커넥터가 데이터 수집을 시작합니다.