Azure Database for PostgreSQL 단일 서버에 대한 루트 CA 변경 내용의 변경 내용 이해

적용 대상: 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 단일 서버는 표준 유지 관리 및 보안 모범 사례의 일환으로 2022년 12월(2022/12)부터 루트 인증서 변경을 계획하고 있습니다. 이 문서에서는 변경 내용, 영향을 받는 리소스 및 응용 프로그램이 데이터베이스 서버에 대한 연결을 유지 관리하는 데 필요한 단계에 대한 자세한 정보를 제공합니다.

루트 인증서 업데이트가 필요한 이유는 무엇인가요?

지금까지 Azure Database for PostgreSQL 사용자는 미리 정의된 인증서만 사용하여 여기에 있는 PostgreSQL 서버에 연결할 수 있습니다. 그러나 CA(인증 기관) 브라우저 포럼은 최근 CA 공급업체가 비준수로 발급한 여러 인증서에 대한 보고서를 게시했습니다.

업계의 규정 준수 요구 사항에 따라 CA 공급업체는 비준수 CA에 대한 CA 인증서를 해지하여 준수 CA에서 발급한 인증서를 서버에서 사용하도록 요구하기 시작했고, 해당 준수 CA의 CA 인증서로 서명했습니다. Azure Database for PostgreSQL은 이러한 비규격 인증서 중 하나를 사용했으므로 인증서를 규정 준수 버전으로 회전하여 Postgres 서버에 대한 잠재적 위협을 최소화해야 했습니다.

새 인증서는 2022년 12월(2022/12)부터 롤아웃되어 적용되고 있습니다.

2022년 12월(2022/12)부터 어떤 변경이 예정되어 있었나요?

2022년 12월부터 BaltimoreCyberTrustRoot 루트 인증서DigiCertGlobalRootG2 루트 인증서로 알려진 규격 버전으로 대체됩니다. 애플리케이션이 데이터베이스 클라이언트 연결에서 sslmode 매개 변수 값으로 verify-ca 또는 verify-full을 활용하는 경우 연결을 유지하기 위해 인증서 저장소에 새 인증서를 추가하려면 지침을 따라야 합니다.

연결을 유지하기 위해 내 클라이언트를 변경해야 하나요?

클라이언트 쪽에는 코드 또는 애플리케이션 변경이 필요하지 않습니다. 아래의 인증서 업데이트 권장 사항을 따른 경우 BaltimoreCyberTrustRoot 루트 인증서가 결합된 CA 인증서에서 제거된 경우를 제외하고는 계속 연결할 수 있습니다. 연결을 유지하기 위해 추가 공지가 있을 때까지 결합된 CA 인증서에서 BaltimoreCyberTrustRoot를 제거하지 않는 것이 좋습니다.

클라이언트 인증서를 변경해야 하나요?

기본적으로 PostgreSQL은 서버 인증서의 확인을 수행하지 않습니다. 이는 이론적으로는 여전히 클라이언트를 모르고 서버 ID를 스푸핑할 수 있습니다(예: DNS 레코드를 수정하거나 서버 IP 주소를 인수). 스푸핑 가능성을 방지하려면 클라이언트에서 SSL 인증서 확인을 사용해야 합니다. 이러한 확인은 애플리케이션 클라이언트 연결 문자열 ssl 모드 값 - verify-ca 또는 verify-full을 통해 설정할 수 있습니다. 이러한 ssl 모드 값을 선택하는 경우 다음 섹션의 지침을 따라야 합니다.

클라이언트 인증서 업데이트 권장 사항

  • 아래 링크에서 BaltimoreCyberTrustRoot 및 DigiCertGlobalRootG2 Root CA 다운로드:

  • 필요에 따라 향후 중단을 방지하려면 신뢰할 수 있는 저장소에 다음 루트를 추가하는 것이 좋습니다.

  • BaltimoreCyberTrustRootDigiCertGlobalRootG2 인증서를 모두 포함하는 결합된 CA 인증서 저장소를 생성합니다.

    • DefaultJavaSSLFactory를 사용하는 Java(PostgreSQL JDBC) 사용자의 경우 다음을 실행합니다.

      keytool -importcert -alias PostgreSQLServerCACert  -file D:\BaltimoreCyberTrustRoot.crt.pem  -keystore truststore -storepass password -noprompt
      
      keytool -importcert -alias PostgreSQLServerCACert2  -file D:\DigiCertGlobalRootG2.crt.pem -keystore truststore -storepass password  -noprompt
      

      그런 다음, 원래 키 저장소 파일을 새로 생성된 파일로 바꿉니다.

      • System.setProperty("javax.net.ssl.trustStore","path_to_truststore_file");
      • System.setProperty("javax.net.ssl.trustStorePassword","password");
    • Windows의 .NET(Npgsql) 사용자의 경우 Windows 인증서 저장소인 신뢰할 수 있는 루트 인증 기관에 Baltimore CyberTrust RootDigiCert Global Root G2가 모두 있는지 확인합니다. 인증서가 없는 경우 누락된 인증서를 가져옵니다.

      Azure Database for PostgreSQL .net 인증서

    • SSL_CERT_DIR을 사용하는 Linux의 .NET(Npgsql) 사용자의 경우 BaltimoreCyberTrustRootDigiCertGlobalRootG2가 모두 SSL_CERT_DIR로 표시된 디렉터리에 있는지 확인합니다. 인증서가 없는 경우 누락된 인증서 파일을 만듭니다.

    • 다른 PostgreSQL 클라이언트 사용자의 경우 아래 형식과 같은 두 개의 CA 인증서 파일을 병합할 수 있습니다.


      -----BEGIN CERTIFICATE-----
      (Root CA1: BaltimoreCyberTrustRoot.crt.pem)
      -----END CERTIFICATE-----
      -----BEGIN CERTIFICATE-----
      (Root CA2: DigiCertGlobalRootG2.crt.pem)
      -----END CERTIFICATE-----

  • 원래 루트 CA pem 파일을 결합된 루트 CA 파일로 바꾸고, 응용 프로그램/클라이언트를 다시 시작합니다.

  • 나중에 새 인증서가 서버 쪽에 배포되면 CA pem 파일을 DigiCertGlobalRootG2.crt.pem으로 변경할 수 있습니다.

참고 항목

인증서가 변경될 때까지 Baltimore 인증서를 삭제하거나 변경하지 마세요. 변경이 완료되면 연락을 보내드립니다. 그 후에는 볼티모어 인증서를 삭제하는 것이 안전합니다.

BaltimoreCyberTrustRoot 인증서를 제거하면 어떻게 되나요?

Azure Database for PostgreSQL 서버에 연결하는 동안 연결 오류가 발생할 수 있습니다. 연결을 유지하려면 BaltimoreCyberTrustRoot 인증서를 사용하여 SSL을 다시 구성해야 합니다.

자주 묻는 질문

1. SSL/TLS를 사용하지 않는 경우에도 루트 CA를 업데이트해야 하나요?

SSL/TLS를 사용하지 않는 경우 아무 작업도 수행할 필요가 없습니다.

2. SSL/TLS를 사용하는 경우 루트 CA를 업데이트하려면 데이터베이스 서버를 다시 시작해야 하나요?

아니요, 새 인증서 사용을 시작하기 위해 데이터베이스 서버를 다시 시작할 필요가 없습니다. 이는 클라이언트 쪽 변경이며 들어오는 클라이언트 연결은 새 인증서를 사용하여 데이터베이스 서버에 연결할 수 있는지 확인해야 합니다.

3. 루트 인증서 확인에서 SSL/TLS를 사용하는지 확인하려면 어떻게 할까요?

연결 문자열을 검토하여 연결에서 루트 인증서를 확인하는지 여부를 식별할 수 있습니다.

  • 연결 문자열에 sslmode=verify-ca 또는 sslmode=verify-full가 포함되는 경우 인증서를 업데이트해야 합니다.
  • 연결 문자열에 sslmode=disable, sslmode=allow, sslmode=prefer 또는 sslmode=require가 포함되어 있으면 인증서를 업데이트할 필요가 없습니다.
  • 연결 문자열에서 sslmode를 지정하지 않는 경우 인증서를 업데이트할 필요가 없습니다.

연결 문자열을 추상화하는 클라이언트를 사용하는 경우 클라이언트 설명서를 검토하여 인증서를 확인하는지 여부를 파악합니다. PostgreSQL sslmode를 이해하려면 PostgreSQL 설명서에서 SSL 모드 설명을 검토합니다.

4. Azure Database for PostgreSQL과 함께 App Service를 사용하는 경우 어떤 영향이 있나요?

Azure App Service의 경우 Azure Database for PostgreSQL에 연결할 수 있는 두 가지 시나리오가 있으며 이는 애플리케이션에서 SSL을 사용하는 방식에 따라 다릅니다.

  • 이 새 인증서는 플랫폼 수준에서 App Service에 추가되었습니다. 애플리케이션의 App Service 플랫폼에 포함된 SSL 인증서를 사용하는 경우에는 아무 작업도 필요하지 않습니다.
  • 코드에 SSL 인증서 파일의 경로를 명시적으로 포함하는 경우 새 인증서를 다운로드하고 새 인증서를 사용하도록 코드를 업데이트해야 합니다. 이 시나리오의 좋은 예는 App Service 설명서에 공유된 대로 App Service에서 사용자 지정 컨테이너를 사용하는 경우입니다.

5. Azure Database for PostgreSQL과 함께 AKS(Azure Kubernetes Services)를 사용하면 어떤 영향이 있나요?

AKS(Azure Kubernetes Services)를 사용하여 Azure Database for PostgreSQL에 연결하려는 경우 전용 고객 호스트 환경에서 액세스하는 것과 유사합니다. 여기의 단계를 참조하세요.

6. Azure Data Factory를 사용하여 Azure Database for PostgreSQL에 연결하면 어떤 영향이 있나요?

Azure Integration Runtime을 사용하는 커넥터의 경우 커넥터는 Azure 호스팅 환경의 Windows 인증서 저장소에 있는 인증서를 활용합니다. 이러한 인증서는 이미 새로 적용된 인증서와 호환되므로 아무 작업도 필요하지 않습니다.

SSL 인증서 파일의 경로를 연결 문자열에 명시적으로 포함하는 자체 호스팅 통합 런타임을 사용하는 커넥터의 경우 새 인증서를 다운로드하고 이를 사용하도록 연결 문자열을 업데이트해야 합니다.

7. 이러한 변경에 대한 데이터베이스 서버 유지 관리 가동 중지 시간을 계획해야 하나요?

아니요. 여기서 변경된 내용은 데이터베이스 서버에 연결할 클라이언트 쪽에서만 변경되므로 데이터베이스 서버에 대한 유지 관리 가동 중지 시간이 필요하지 않습니다.

8. 2022년 11월 30일 이후에 새 서버를 만드는 경우 영향을 받게 되나요?

2022년 11월 30일 이후에 만든 서버의 경우 애플리케이션이 SSL을 사용하여 연결할 수 있도록 데이터베이스 클라이언트 SSL 인증서 저장소의 새 DigiCertGlobalRootG2 루트 인증서와 함께 BaltimoreCyberTrustRoot를 계속 사용합니다.

9. Microsoft에서 인증서를 업데이트하는 빈도는 어떻게 되나요? 또는 만료 정책은 무엇인가요?

Azure Database for PostgreSQL에서 사용하는 이러한 인증서는 신뢰할 수 있는 CA(인증 기관)에서 제공합니다. 따라서 이러한 인증서를 지원하는 것은 CA에서 이러한 인증서를 지원하는 것과 관련이 있습니다. BaltimoreCyberTrustRoot 인증서는 2025년에 만료될 예정이므로 Microsoft는 만료되기 전에 인증서를 변경해야 합니다. 또한 이러한 미리 정의된 인증서에 예기치 않은 버그가 있는 경우 서비스가 항상 안전하고 규정을 준수하도록 보장하기 위해 Microsoft에서 2021년 2월 15일에 수행된 변경과 비슷한 방식으로 인증서 회전을 빠르게 수행해야 합니다.

10. 읽기 복제본을 사용하는 경우 주 서버 또는 읽기 복제본에서만 이 업데이트를 수행해야 하나요?

이 업데이트는 클라이언트 쪽 변경이므로 클라이언트가 복제본 서버에서 데이터를 읽는 데 사용된 경우 해당 클라이언트에 대한 변경 내용도 적용해야 합니다.

11. SSL이 사용되고 있는지 확인하는 서버 쪽 쿼리가 있나요?

SSL 연결을 사용하여 서버에 연결하는지 확인하려면 SSL 확인을 참조하세요.

12. 내 인증서 파일에 DigiCertGlobalRootG2가 이미 있는 경우 필요한 작업이 있나요?

아니요. 인증서 파일에 DigiCertGlobalRootG2가 이미 있는 경우 아무 작업도 필요하지 않습니다.

13. 서버에서 보낸 인증서는 어떻게 검사할 수 있나요?

사용할 수 있는 많은 도구가 있습니다. 예를 들어 DigiCert에는 서버 이름의 인증서 체인을 보여주는 편리한 도구가 있습니다. (이 도구는 공개적으로 액세스할 수 있는 서버에서 작동합니다. VNET(가상 네트워크)에 포함된 서버에 연결할 수 없습니다). 사용할 수 있는 또 다른 도구는 명령줄의 OpenSSL입니다. 이 구문을 사용하여 인증서를 검사할 수 있습니다.

openssl s_client -starttls postgres -showcerts -connect <your-postgresql-server-name>:5432

14. 추가 질문이 있으면 어떻게 해야 하나요?

질문이 있는 경우, Microsoft Q&A에서 커뮤니티 전문가의 답변을 받으세요. 지원 계획이 있고 기술 지원이 필요한 경우 지원 요청을 만드세요.

  • 문제 유형에서 기술을 선택합니다.
  • 구독의 경우 사용자의 구독을 선택합니다.
  • 서비스에서 내 서비스를 선택한 다음, Azure Database for PostgreSQL – 단일 서버를 선택합니다.
  • 문제 유형에 대해 보안을 선택합니다.
  • 문제 하위 형식의 경우 Azure 암호화 및 인프라 이중 암호화를 선택합니다.