
ALTER USER ... SET RSA_PUBLIC_KEY=...① Generate Key-Pair (OpenSSL)
② Assign Public Key → ALTER USER USER1 SET RSA_PUBLIC_KEY='...';
③ Configure Client (SnowSQL, Python, JDBC, ODBC ...)
④ Key-Pair Rotation
RSA_PUBLIC_KEY + RSA_PUBLIC_KEY_2)ALTER USER USER1 SET RSA_PUBLIC_KEY_2='...'; -- 새 키 추가
ALTER USER USER1 UNSET RSA_PUBLIC_KEY; -- 옛 키 제거
💡 암기 팁: "1개 추가(SET _2) → 1개 제거(UNSET)" = 키가 없는 공백시간이 없다
암호화 개인키(encrypted) 미지원 클라이언트 = Spark / Kafka / Go
암기: "스카고(Spark·Kafka·Go)는 암호화 안 됨"
나머지(Python, JDBC, ODBC, .NET, Node.js, SnowSQL)는 전부 지원 ✔
Snowflake는 인증·인가를 위해 OAuth 2.0 프로토콜을 지원한다.
→ 사용자 로그인 자격증명을 공유/저장하지 않고 접근 권한 부여 (open-standard)
| 구분 | Snowflake OAuth | External OAuth |
|---|---|---|
| 인가 서버(Authorization Server) | Snowflake 자신 | 외부 IdP(고객) |
| 주 용도 | 파트너 앱 (Tableau, Looker 등) | 기업 SSO / 머신-투-머신 |
💡 암기 포인트: "Snowflake OAuth = 눈송이가 직접 / External = 남(외부 IdP)이 대신"
FIRST_AUTHENTICATION_FACTOR = OAUTH_ACCESS_TOKENSystem for Cross-domain Identity Management
→ Snowflake와 서드파티 IdP 사이 인터페이스를 만들어 사용자/그룹(=role)을 자동 관리
→ RESTful API로 user/group 프로비저닝
RUN_AS_ROLE 값: OKTA_PROVISIONER / AAD_PROVISIONER / GENERIC_SCIM_PROVISIONER| 주제 | 1순위 암기 |
|---|---|
| Key Pair | 최소 2048-bit RSA, OpenSSL/PEM |
| Rotation | 최대 2개 키 (RSA_PUBLIC_KEY + _2), SET 추가 → UNSET 제거 |
| 암호화 미지원 | 스카고(Spark·Kafka·Go) |
| OAuth 두 경로 | Snowflake OAuth=Snowflake가 인가서버 / External=외부 IdP |
| OAuth 차단 역할 | ACCOUNT·ORG·GLOBALORG·SECURITY admin |
| OAuth 인증값 | OAUTH_ACCESS_TOKEN |
| SCIM | RESTful API, group=role, IdP 옥-엔-커 |
| SCIM 규칙 | SCIM 역할이 소유해야 동기화 |