OCSP 구성
OCSP 구성
이 주제는 OCSP의 개요, Snowflake에서의 사용, OCSP 문제 진단을 돕는 정보를 제공해요.
본문
개요
Snowflake는 OCSP(Online Certificate Status Protocol, 온라인 인증서 상태 프로토콜)를 사용해 Snowflake 클라이언트가 HTTPS를 통해 엔드포인트에 연결을 시도할 때 인증서가 폐기됐는지 판단하는 최대 보안을 제공해요.
Snowflake는 OCSP를 사용해 루트 인증 기관(CA)이 발급한 중간 인증서까지 신뢰 체인의 각 인증서를 평가해요. 각 인증서가 폐기되지 않았는지 확인하는 것은 Snowflake가 신원 확인 과정에서 신뢰할 수 있는 주체와 보안 연결을 설정하는 데 도움이 돼요.
클라이언트 또는 드라이버 버전과 이 페이지에 설명된 구성에 따라 OCSP를 끄고 OCSP가 인증서가 폐기됐다고 판단할 때 발생하는 조치를 조정할 수 있어요.
Fail-Open 또는 Fail-Close 동작
현재 사용자는 OCSP 이벤트 중에 Snowflake 클라이언트나 드라이버가 응답하는 방식에 대해 두 가지 동작 중 하나를 선택할 수 있어요.
- Fail-open
- Fail-close
Fail-Open
Snowflake는 OCSP CA 응답을 평가할 때 기본적으로 fail-open 접근 방식을 지원해요. fail-open 접근 방식의 특징은 다음과 같아요:
- 인증서가 폐기됐음을 나타내는 응답은 연결 실패로 이어져요.
- 다른 인증서 오류나 상태가 있는 응답은 연결을 허용하지만, 관련 세부 정보를 JSON 형식으로
WARNING수준의 로그에 표시해요.
사용자는 특정 드라이버 또는 커넥터의 로그를 모니터링해 fail-open 로그 이벤트의 빈도를 확인할 수 있어요. 이러한 이벤트 로그는 Snowflake 상태 페이지와 결합해 클라이언트 접근을 일시적으로 제한하거나 fail-close 동작으로 전환하는 등 최선의 조치를 결정할 수 있어요.
현재 fail-open 기본 접근 방식은 다음 클라이언트 및 드라이버 버전에 적용돼요.
| 클라이언트 / 드라이버 | 버전 |
|---|---|
| SnowSQL | v1.1.79 이상 |
| Python Connector | v1.8.0 이상 |
| JDBC Driver | v3.8.0 이상 |
| ODBC Driver | v2.19.0 이상 |
| SQL Alchemy | Python Connector를 v1.8.0 이상으로 업그레이드 |
| Spark | Maven 또는 SBT로 Spark 애플리케이션을 빌드하는 경우 v2.4.14 이상. Spark 클러스터에 JAR 파일을 첨부하는 경우 JDBC v3.8.0 이상. Databricks 내장 Spark 커넥터를 사용하는 경우 Databricks에 Spark 커넥터 업그레이드 요청. |
| Go Driver | v1.2.0 이상 |
| Node.js | v1.2.0 이상 |
Snowflake는 .NET 드라이버에 대한 OCSP 확인을 지원하지 않아요. 대신 .NET은 자체 프레임워크를 사용해 HTTPS 인증서의 유효성을 확인해요.
Fail-Close
fail-close 동작은 OCSP CA 응답을 해석하는 데 있어 더 제한적이에요. 클라이언트나 드라이버가 어떤 이유로든 유효한 OCSP CA 응답을 받지 못하면 연결이 실패해요.
이 동작은 fail-open 섹션에 나열된 버전을 기준으로 기본이 아니므로 fail-close는 각 드라이버 또는 커넥터 내에서 수동으로 구성해야 해요.
fail-close 동작을 유지하려면 해당 ocsp_fail_open 매개변수를 false로 설정하세요.
| 클라이언트 / 드라이버 | 설정 |
|---|---|
| SnowSQL | snowsql -o ocsp_fail_open=false |
| Python Connector | 자세한 내용은 Python Connector 문서의 fail-open 또는 fail-close 모드 선택 참조. |
| JDBC Driver | 자세한 내용은 JDBC Driver 문서의 fail-open 또는 fail-close 모드 선택 참조. |
| ODBC Driver | 다음 중 하나 선택: 연결 매개변수를 OCSP_FAIL_OPEN=false로 설정, 또는 환경 변수 $SIMBAINI를 사용해 해당 파일을 찾은 후 OCSPFailOpen=false로 설정. |
| SQL Alchemy | JDBC Driver 설정 참조. |
| Spark | Spark Connector에는 ocsp_fail_open 매개변수가 없음. Spark에서 fail-close는 JDBC 드라이버를 사용할 때만 유지될 수 있음. |
| Go Driver | 다음 중 하나 수행: Config의 OCSPFailOpen 연결 매개변수를 ocspFailOpenTrue 또는 ocspFailOpenFalse로 설정(예: import ( ... sf "github.com/snowflakedb/gosnowflake ... "), config: &Config{ Account: "xy12345", ..., OCSPFailOpen: sf.ocspFailOpenFalse, ... }), 또는 연결 문자열의 ocspFailOpen 연결 매개변수를 true나 false로 설정(예: user:pass@account/db/s?ocspFailOpen=false). 대소문자 차이(대문자/소문자)에 유의하세요. Go 연결 매개변수에 대한 자세한 내용은 GoDoc gosnowflake 문서 참조. |
| Node.js | 전역 매개변수 ocspFailOpen=false 설정. 자세한 내용은 Node.js 옵션 참조 참조. |
레거시 클라이언트 및 드라이버 버전
클라이언트나 드라이버 버전이 fail-open 섹션에 나열된 것보다 오래된 경우 fail-open 동작은 옵션이 아니에요. 따라서 fail-close 동작이 기본이에요.
OCSP와 관련해 레거시 클라이언트 및 드라이버 버전을 사용하는 Snowflake 배포에는 세 가지 옵션이 있어요:
- 클라이언트나 드라이버를 최신 버전으로 업그레이드(최선의 옵션).
- fail-close 동작을 계속 사용.
- 이 지식 베이스 문서(Snowflake 커뮤니티)에 설명된 대로 OCSP 모니터링을 끄기.
모범 사례
위험을 완화하기 위해 Snowflake는 통신을 안전하게 유지하는 다음 모범 사례를 권장해요.
- Snowflake 서비스에 프라이빗 연결을 사용하고 Snowflake에 대한 공개 접근을 차단하세요.
- 클라이언트 드라이버가 관리되는 데스크톱과 서버에서만 실행되도록 허용하세요.
- 클라이언트 드라이버 로그를 관리 시스템으로 보내거나 Snowflake에 업로드하세요. OCSP 확인 없이 이루어진 연결을 모니터링하세요.
Snowflake 서비스에 대한 프라이빗 연결 지원에는 Business Critical(이상)이 필요해요. 업그레이드 문의는 Snowflake 지원에 문의하세요.
Snowflake가 사용하는 CA 사이트 및 OCSP 응답기 호스트
Snowflake 계정에서 SYSTEM$ALLOWLIST 또는 SYSTEM$ALLOWLIST_PRIVATELINK 함수를 호출해 Snowflake가 OCSP 검증 확인에 사용하는 호스트를 얻을 수 있어요. 호스트 값은 Snowflake 계정이 존재하는 클라우드 플랫폼과 리전에 고유해요. 호스트 값이 다른 이유는 클라우드 플랫폼이 사용하는 CA와 인증서가 업데이트되거나 갱신되는 시점에 기반해요.
예를 들어:
SELECT t.VALUE:type::VARCHAR as type,
t.VALUE:host::VARCHAR as host,
t.VALUE:port as port
FROM TABLE(FLATTEN(input => PARSE_JSON(SYSTEM$ALLOWLIST_PRIVATELINK()))) AS t
WHERE type ILIKE ANY ('OCSP%');
+-----------------------+---------------------------------------------------------------+------+
| TYPE | HOST | PORT |
|-----------------------+---------------------------------------------------------------+------|
| OCSP_CACHE | ocsp.account1234.us-west-2.privatelink.snowflakecomputing.com | 80 |
| OCSP_CACHE_REGIONLESS | ocsp.my_org-my_account.privatelink.snowflakecomputing.com | 80 |
+-----------------------+---------------------------------------------------------------+------+
OCSP 인증 확인에는 포트 80 필요
Snowflake와의 모든 통신은 포트 443을 사용해 이루어져요. 하지만 OCSP 인증 확인은 포트 80을 통해 전송돼요. 워크스테이션이 방화벽 뒤에 있다면 조직의 네트워크 관리자가 포트 443과 80의 트래픽에 대해 방화벽을 열어 두었는지 확인하세요.