Azure Database for PostgreSQL - 단일 서버에서 TLS 연결 구성

적용 대상: Azure Database for PostgreSQL - 단일 서버

Important

Azure Database for PostgreSQL - 단일 서버는 곧 사용 중지됩니다. Azure Database for PostgreSQL - 유연한 서버로 업그레이드하는 것이 좋습니다. Azure Database for PostgreSQL - 유연한 서버로 마이그레이션하는 자세한 방법은 Azure Database for PostgreSQL 단일 서버는 어떻게 되나요?를 참조하세요.

Azure Database for PostgreSQL은 이전에 SSL(Secure Sockets Layer)로 알려진 TLS(전송 계층 보안)를 사용하여 PostgreSQL 서비스에 클라이언트 애플리케이션을 연결하는 것을 선호합니다. 데이터베이스 서버와 클라이언트 애플리케이션 간에 TLS 연결을 적용하면 서버와 애플리케이션 간의 데이터 스트림을 암호화하여 “메시지 가로채기(man-in-the-middle)” 공격으로부터 보호할 수 있습니다.

기본적으로 PostgreSQL 데이터베이스 서비스는 TLS 연결을 요구하도록 구성됩니다. 클라이언트 애플리케이션에서 TLS 연결을 지원하지 않는 경우 TLS 요구를 사용하지 않도록 선택할 수 있습니다.

Important

SSL 중간 인증서는 2024년 1월 31일(2024/1/31)부터 업데이트되도록 설정됩니다. 중간 인증서는 특히 최종 엔터티 인증서를 발급하기 위해 신뢰할 수 있는 루트에서 발급한 하위 인증서입니다. 결과는 중간 CA(또는 CAs)를 통해 신뢰할 수 있는 루트 CA에서 시작하여 사용자에게 발급된 SSL 인증서로 끝나는 인증서 체인입니다. 인증서 고정은 보안 세션을 설정할 때 인증되거나 고정된 인증서만 허용되는 보안 기술입니다. 다른 인증서를 사용하여 보안 세션을 설정하려는 시도는 거부됩니다. 현재 연도 동안 완전히 업데이트 되고verify-ca 또는 verify-full 연결 구문 클라이언트 지시문을 사용하여 인증서를 고정할 수 있는 신뢰할 수 있는 루트 CA와 달리 잘 설정된 중간 CA를 고정하는 표준은 없습니다. 그러나 다양한 프로그래밍 언어로 클라이언트 중간 인증서를 고정하는 사용자 지정 연결 스택을 만드는 이론적 기능이 있습니다. 위에서 설명한 것처럼 중간 인증서를 사용자 지정 코드로 고정하는 가능성 없는 시나리오에서는 이 변경의 영향을 받을 수 있습니다. CA를 고정하는지 확인하려면 인증서 고정 및 Azure 서비스를 참조하세요.

TLS 연결 적용

Azure Portal 및 CLI를 통해 프로비저닝된 모든 Azure Database for PostgreSQL 서버의 경우 기본적으로 TLS 연결 적용이 사용하도록 설정됩니다.

마찬가지로, Azure Portal의 해당 서버에 있는 “연결 문자열” 설정에서 미리 정의된 연결 문자열에는 TLS를 사용하여 데이터베이스 서버에 연결하기 위한 공용 언어의 필수 매개 변수가 포함됩니다. TLS 매개 변수는 “ssl=true”, “sslmode=require” 또는 “sslmode=required”와 같은 커넥터 및 다른 변형에 따라 달라집니다.

TLS 적용 구성

필요에 따라 TLS 연결 적용을 사용하지 않도록 설정할 수 있습니다. Microsoft Azure는 항상 향상된 보안을 위해 SSL 연결 적용 설정을 사용하는 것을 권장합니다.

Azure 포털 사용하기

Azure Database for PostgreSQL 서버를 방문하여 연결 보안을 선택합니다. 설정/해제 단추를 사용하여 SSL 연결 적용 설정을 사용하거나 사용하지 않도록 설정합니다. 그런 다음 저장을 선택합니다.

연결 보안 - TLS/SSL 적용 사용 안 함

SSL 적용 상태 표시기를 확인할 수 있는 개요 페이지에서 설정을 확인할 수 있습니다.

Azure CLI 사용

Azure CLI에서 Enabled 또는 Disabled 값을 각각 사용하여 ssl-enforcement 매개 변수를 사용하거나 사용하지 않도록 설정할 수 있습니다.

az postgres server update --resource-group myresourcegroup --name mydemoserver --ssl-enforcement Enabled

SSL 연결 확인 상태

다음 쿼리를 사용하여 Azure Database for PostgreSQL - 단일 서버 인스턴스의 SSL 사용량에 대한 프로세스, 클라이언트 및 애플리케이션에 대한 모든 정보를 수집할 수도 있습니다.

SELECT datname as "Database name", usename as "User name", ssl, client_addr, application_name, backend_type
   FROM pg_stat_ssl
   JOIN pg_stat_activity
   ON pg_stat_ssl.pid = pg_stat_activity.pid
   ORDER BY ssl;

애플리케이션 또는 프레임워크가 TLS 연결을 지원하는지 확인합니다.

데이터베이스 서비스용 PostgreSQL을 사용하는 일부 애플리케이션 프레임워크는 기본적으로 설치하는 동안 TLS를 사용하도록 설정하지 않습니다. PostgreSQL 서버가 TLS 연결을 적용하지만 애플리케이션이 TLS에 대해 구성되지 않은 경우 애플리케이션이 데이터베이스 서버에 연결하지 못할 수 있습니다. 애플리케이션의 설명서를 참조하여 TLS 연결을 사용하도록 설정하는 방법을 알아보세요.

TLS 연결에 대한 인증서 확인이 필요한 애플리케이션

경우에 따라 안전한 연결을 위해 애플리케이션에 신뢰할 수 있는 CA(인증 기관) 인증서 파일에서 생성되는 로컬 인증서 파일이 필요합니다. Azure Database for PostgreSQL 서버에 연결할 인증서는 https://www.digicert.com/CACerts/BaltimoreCyberTrustRoot.crt.pem에 있습니다. 인증서 파일을 다운로드하여 원하는 위치에 저장합니다.

소버린 클라우드의 서버에 대한 인증서는 다음 링크를 참조하세요. Azure Government, 21Vianet이 운영하는 Microsoft AzureAzure 독일.

psql을 사용하여 연결

다음 예제에서는 psql 명령줄 유틸리티를 사용하여 PostgreSQL 서버에 연결하는 방법을 보여 줍니다. sslmode=verify-full 연결 문자열 설정을 사용하여 TLS/SSL 인증서 확인을 적용합니다. 로컬 인증서 파일 경로를 sslrootcert 매개 변수에 전달합니다.

다음 명령은 psql 연결 문자열의 예제입니다.

psql "sslmode=verify-full sslrootcert=BaltimoreCyberTrustRoot.crt host=mydemoserver.postgres.database.azure.com dbname=postgres user=myusern@mydemoserver"

sslrootcert에 전달된 값이 저장한 인증서의 파일 경로와 일치하는지 확인합니다.

Azure Database for PostgreSQL 단일 서버의 TLS 적용

Azure Database for PostgreSQL - 단일 서버 TLS(전송 계층 보안)를 사용하여 데이터베이스 서버에 연결하는 클라이언트에 대한 암호화를 지원합니다. TLS는 데이터베이스 서버와 클라이언트 애플리케이션 간에 보안 네트워크 연결을 보장하여 규정 준수 요구 사항을 준수할 수 있도록 하는 업계 표준 프로토콜입니다.

TLS 설정

Azure Database for PostgreSQL 단일 서버는 클라이언트 연결에 TLS 버전을 적용하는 기능을 제공합니다. TLS 버전을 적용하려면 최소 TLS 버전 옵션 설정을 사용합니다. 이 옵션 설정에 허용되는 값은 다음과 같습니다.

최소 TLS 설정 지원되는 클라이언트 TLS 버전
TLSEnforcementDisabled(기본값) TLS 필요 없음
TLS1_0 TLS 1.0, TLS 1.1, TLS 1.2 이상
TLS1_1 TLS 1.1, TLS 1.2 이상
TLS1_2 TLS 버전 1.2 이상

예를 들어, 이 최소 TLS 설정 버전을 TLS 1.0으로 설정하면 서버에서 TLS 1.0, 1.1, 1.2 이상을 사용하는 클라이언트의 연결을 허용한다는 의미입니다. 또는 이를 1.2로 설정하면 TLS 1.2 이상을 사용하는 클라이언트의 연결만 허용되며 TLS 1.0과 TLS 1.1을 사용하는 모든 연결이 거부됩니다.

참고 항목

기본적으로 Azure Database for PostgreSQL은 최소 TLS 버전(설정 TLSEnforcementDisabled)을 적용하지 않습니다.

최소 TLS 버전을 적용한 후에는 나중에 최소 버전 적용을 사용하지 않도록 설정할 수 없습니다.

Azure Database for PostgreSQL 단일 서버의 TLS 설정을 지정하는 방법에 관한 자세한 내용은 TLS 설정을 구성하는 방법을 참조하세요.

Azure Database for PostgreSQL 단일 서버에서 암호화 지원

SSL/TLS 통신의 일부로 암호화 그룹의 유효성이 검사되며 지원 암호화 그룹만 데이터베이스 서버와 통신할 수 있습니다. 암호 그룹 유효성 검사는 게이트웨이 계층에서 제어되며 노드 자체에서 명시적으로 제어되지 않습니다. 암호 그룹이 아래 나열된 도구 모음 중 하나와 일치하지 않으면 들어오는 클라이언트 연결이 거부됩니다.

지원되는 암호 그룹

  • TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
  • TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
  • TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384
  • TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256

다음 단계

Azure Database for PostgreSQL을 위한 연결 라이브러리에서 다양한 애플리케이션 연결 옵션을 검토합니다.