Snowflake Postgres SSL 인증서¶
Snowflake Postgres는 클러스터에 대한 보안 SSL 연결로 실행됩니다. 클라이언트와 애플리케이션을 클러스터에 연결할 때 설정에 SSLMODE=require``를 포함하거나 ``libpq 기반이 아닌 드라이버에 대한 동등한 설정을 포함합니다. 자세한 내용과 연결 문제 해결 팁은 Snowflake Postgres에 연결하기 섹션을 참조하세요.
보안 계층을 추가하기 위해 관리자와 인스턴스 소유자는 루트 CA(인증 기관) 공용 인증서의 공용 인증서 부분 및 각 Snowflake Postgres 서버의 인증서에 서명하는 데 사용되는 개인 키 페어를 검색할 수 있습니다. 이러한 루트 CA 인증서(및 비공유 개인 키)는 각 Snowflake 계정에 고유합니다. 검색되면 루트 CA 인증서는 중간자 공격(MITM)으로부터 보호하기 위해 연결 시 제시된 서버 인증서의 추가 검증에 사용될 수 있습니다.
SSL 공용 루트 인증서 검색하기¶
DESCRIBE POSTGRES INSTANCE 명령으로 반환된 certificate 필드에서 루트 CA 인증서를 검색할 수 있습니다. 이 인증서는 지정된 계정의 모든 인스턴스에 대해 동일합니다.
DESCRIBE POSTGRES INSTANCE my_postgres
->> SELECT "property", "value"
FROM $1
WHERE "property" = 'certificate';
SSL 인증서 확인을 위한 Postgres 클라이언트 구성하기¶
클라이언트 호스트의 안전한 위치에 있는 파일에 “—–BEGIN CERTIFICATE—–” 및 “—–END CERTIFICATE—–” 줄을 포함하여 루트 CA 인증서 텍스트를 배치합니다. 재사용하려는 내용이 포함된 루트 CA 저장소 파일이 이미 있는 경우 Snowflake Postgres 루트 CA 인증서 텍스트를 추가할 수 있습니다.
연결 구성에서 다음을 수행합니다.
연결 매개 변수에 :codenowrap:`sslrootcert=/path/to/root/certfile`을 사용하여 루트 CA 공용 인증서 위치를 지정합니다.
연결 매개 변수에
sslmode=require대신sslmode=verify-ca또는sslmode=verify-full중 하나를 지정합니다.
참고
연결하는 클라이언트 시스템 사용자에 대한 sslrootcert``의 기본값은 ``$HOME/.postgresql/root.crt``입니다. 해당 위치에 루트 CA 인증서가 있는 경우 연결에 대한 ``sslrootcert 매개 변수를 지정할 필요가 없습니다.
이러한 두 가지 sslmode 값이 작동하는 방식은 다음과 같습니다.
verify-ca: 현재 루트 CA 공용 인증서를 통해 루트 CA 인증서 페어로 서명했는지 확인하여 서버를 신뢰할 수 있는지 검증합니다.
verify-full:
verify-ca검증을 수행하고 서버 호스트 이름이 서버 인증서에 저장된 이름과 일치하는지 추가로 검증합니다. Snowflake는 계정의 루트 CA로 서명된 모든 서버 인증서에 대해 이 기능이 작동하도록 보장합니다.
지정된 sslmode 매개 변수에 따라 서버 인증서를 검증할 수 없으면 SSL 연결이 실패합니다. Snowflake는 보안에 민감한 대부분의 환경에서 ``verify-full``을 권장합니다.
경고
루트 CA 인증서가 있는 경우 sslmode=require``는 ``sslmode=verify-ca``와 동일한 검증을 수행합니다. 다른 CA로 서명한 인증서가 있는 서버에 대해 ``$HOME/.postgresql/root.crt``에 루트 CA 인증서가 존재하는 경우는 SSL 연결 오류의 일반적인 원인입니다. 이 경우 해당 파일에 Snowflake 루트 CA 인증서의 텍스트를 추가하거나 연결의 ``sslrootcert 매개 변수로 지정된 다른 위치에 배치하면 됩니다.
참고
이러한 다양한 sslmode 설정 수준이 MITM 공격을 방지하는 방법에 대한 자세한 설명은 `다양한 sslmode 설정에서 제공되는 보호 <https://www.postgresql.org/docs/current/libpq-ssl.html#LIBPQ-SSL-PROTECTION>`_의 PostgreSQL 챕터를 참조하세요.