키 페어 인증 및 키 페어 회전
키 페어 인증 및 키 페어 회전 (Key-pair authentication and key-pair rotation)
이 문서는 Snowflake에 연결할 때 키 페어 인증(key-pair authentication)을 구성하고, 키 페어를 회전(rotation)하는 방법을 설명해요.
본문
개요
키 페어 인증은 Snowflake 계정에 연결할 때 사용하는 강화된 인증 방식이에요. 사용자 비밀번호 대신 공개 키/프라이빗 키 쌍을 사용해 인증해요. 이 방식은 OAuth와 함께 Snowflake의 강화된 인증 옵션 중 하나이며, 비밀번호를 사용하지 않기 때문에 보안이 더 강력해요.
키 페어 인증은 다음과 같은 클라이언트와 함께 사용할 수 있어요:
- Snowflake 커넥터 및 드라이버 (JDBC, ODBC, Python 등).
- SnowSQL 및 Snowflake CLI.
- Kafka 커넥터나 Spark 커넥터 같은 프로그래밍 방식 클라이언트.
키 페어 생성
키 페어 인증을 구성하려면 먼저 RSA 키 쌍을 생성해야 해요. 다음 명령으로 OpenSSL을 사용해 암호화되지 않은 프라이빗 키를 생성할 수 있어요:
openssl genrsa 2048 | openssl pkcs8 -topk8 -inform PEM -out rsa_key.p8 -nocrypt
암호화된 프라이빗 키를 생성하려면:
openssl genrsa 2048 | openssl pkcs8 -topk8 -inform PEM -out rsa_key.p8
이 명령은 프라이빗 키에 대한 암호(passphrase)를 묻게 돼요.
프라이빗 키에서 공개 키를 추출하려면:
openssl rsa -in rsa_key.p8 -pubout -out rsa_key.pub
참고: Snowflake는 2048비트 RSA 키를 권장해요. 프라이빗 키는 PKCS#8 형식이어야 하고, 암호화된 키는 지원되지만 일부 클라이언트에서 추가 구성이 필요할 수 있어요.
공개 키를 Snowflake 사용자에게 연결
공개 키를 Snowflake 사용자에게 연결하려면 ALTER USER 문을 실행하세요. 공개 키는 base64로 인코딩된 DER 또는 PEM 형식일 수 있어요.
PEM 형식인 경우:
ALTER USER jsmith SET RSA_PUBLIC_KEY = 'MIIBIjANBgkqh...';
base64로 인코딩된 DER 형식인 경우:
ALTER USER jsmith SET RSA_PUBLIC_KEY = 'MIIBIjANBgkqh...' RSA_PUBLIC_KEY_FP = 'SHA256:...';
참고: 공개 키를 설정할 때
RSA_PUBLIC_KEY_FP(지문)는 선택사항이지만, 지정하면 키를 강제 검증할 수 있어요.
클라이언트에서 키 페어 인증 사용
각 클라이언트에서 키 페어 인증을 구성하는 방법:
SQL 및 CLI 클라이언트
SnowSQL에서 키 페어 인증을 사용하려면 구성에서 private_key_file 옵션을 지정하세요:
private_key_file = /path/to/rsa_key.p8
private_key_file_pwd = <passphrase>
Snowflake CLI에서는 인증 옵션으로 프라이빗 키를 지정할 수 있어요.
JDBC / ODBC
JDBC 드라이버에서 프라이빗 키 파일을 연결 문자열에 지정하거나 private_key_file 커넥션 속성으로 설정하세요.
드라이버 및 커넥터
Python, Kafka, Spark 등 Snowflake 커넥터는 각자의 인증 구성에서 프라이빗 키 파일이나 프라이빗 키 문자열을 지정해 키 페어 인증을 지원해요.
키 페어 회전
키 페어 회전은 보안을 유지하기 위해 주기적으로 키를 교체하는 작업이에요. Snowflake는 다중 키 페어를 지원하므로, 회전 중에도 가동 중단 없이 새 키로 전환할 수 있어요.
회전 절차:
- 새 키 페어를 생성하세요 (위에서 설명한 대로).
- 새 공개 키를 Snowflake 사용자에게 연결하세요. Snowflake는 한 번에 최대 2개의 활성 공개 키(기본 키와 보조 키)를 지원해요:
ALTER USER jsmith SET RSA_PUBLIC_KEY = '<new_public_key>';
- 클라이언트 구성을 새 프라이빗 키를 사용하도록 업데이트하세요.
- 새 키가 정상 동작하는지 확인한 후, 옛 공개 키를 제거하세요:
ALTER USER jsmith UNSET RSA_PUBLIC_KEY;
중요: 새 키로 전환하기 전에 옛 키를 제거하면 클라이언트가 인증하지 못할 수 있어요. 새 키가 동작하는 것을 확인한 뒤에만 옛 키를 제거하세요.
문제 해결
키 페어 인증 관련 문제가 발생하면 키 페어 인증 문제 해결 문서를 참고하세요.