Loading...
MySQL 9.5 Reference Manual 9.5의 20.6.2 Securing Group Communication Connections with Secure Socket Layer (SSL)의 한국어 번역본입니다.
아래의 경우에 피드백에서 신고해주신다면 반영하겠습니다.
감사합니다 :)
보안 소켓은 그룹의 멤버들 사이의 그룹 통신 연결에 사용될 수 있습니다.
Group Replication 시스템 변수인 group_replication_ssl_mode는 그룹 통신 연결에 대해 SSL 사용을 활성화하고, 연결에 대한 보안 모드를 지정하는 데 사용됩니다. 이 값은 모든 그룹 멤버에서 동일해야 합니다. 값이 다르면 일부 멤버는 그룹에 조인할 수 없을 수 있습니다. 기본 설정은 SSL을 사용하지 않는다는 의미입니다. 이 변수는 다음과 같은 값을 가질 수 있습니다:
Table 20.1 group_replication_ssl_mode configuration values
| Value | Description |
|---|---|
DISABLED | 암호화되지 않은 연결을 설정합니다(기본값). |
REQUIRED | 서버가 보안 연결을 지원하는 경우 보안 연결을 설정합니다. |
VERIFY_CA | REQUIRED와 같지만, 추가로 구성된 인증 기관(CA) 인증서에 대해 서버 TLS 인증서를 검증합니다. |
VERIFY_IDENTITY | VERIFY_CA와 같지만, 추가로 연결을 시도하는 호스트와 서버 인증서가 일치하는지 검증합니다. |
SSL이 사용되는 경우, 보안 연결을 구성하는 방법은 그룹 통신에 XCom 또는 MySQL 통신 스택 중 어떤 것이 사용되는지에 따라 달라집니다.
XCom communication stack을 사용하는 경우
(group_replication_communication_stack=XCOM):
Group Replication의 그룹 통신 연결에 대한 나머지 설정은 서버의 SSL 구성에서 가져옵니다. 서버 SSL을 구성하기 위한 옵션에 대한 자세한 정보는 Command Options for Encrypted Connections를 참조하십시오. Group Replication의 그룹 통신 연결에 적용되는 서버 SSL 옵션은 다음과 같습니다:
Table 20.2 SSL Options
| Server Configuration | Description |
|---|---|
ssl_key | PEM 포맷의 SSL 비밀 키 파일 경로입니다. 클라이언트 쪽에서는 클라이언트 비밀 키이고, 서버 쪽에서는 서버 비밀 키입니다. |
ssl_cert | PEM 포맷의 SSL 공개 키 인증서 파일 경로입니다. 클라이언트 쪽에서는 클라이언트 공개 키 인증서이고, 서버 쪽에서는 서버 공개 키 인증서입니다. |
ssl_ca | PEM 포맷의 인증 기관(CA) 인증서 파일 경로입니다. |
ssl_capath | PEM 포맷의 신뢰할 수 있는 SSL 인증 기관(CA) 인증서 파일들을 포함하는 디렉터리 경로입니다. |
ssl_crl | PEM 포맷의 인증서 폐기 목록을 포함하는 파일 경로입니다. |
ssl_crlpath | PEM 포맷의 인증서 폐기 목록 파일들을 포함하는 디렉터리 경로입니다. |
ssl_cipher | 암호화된 연결을 위한 허용 암호 목록입니다. |
tls_version | 서버가 암호화된 연결을 위해 허용하는 TLS 프로토콜 목록입니다. |
tls_ciphersuites | 서버가 암호화된 연결을 위해 허용하는 TLSv1.3 암호 슈트입니다. |
주의
TLSv1 및 TLSv1.1 연결 프로토콜에 대한 지원은 MySQL 8.0에서 제거되었습니다. Group Replication 서버 인스턴스를 포함한 MySQL 클라이언트는 사용 중인 TLS 프로토콜 버전이 사용 중단된 버전이더라도 사용자에게 경고를 반환하지 않습니다. 자세한 내용은 Removal of Support for the TLSv1 and TLSv1.1 Protocols를 참조하십시오.
MySQL 9.5는 MySQL Server가 OpenSSL 1.1.1을 사용하여 컴파일된 경우 TLSv1.3 프로토콜을 지원합니다. 서버는 시작 시 OpenSSL 버전을 확인하며, 1.1.1보다 낮으면 TLSv1.3을 TLS 버전과 관련된 모든 서버 시스템 변수의 기본값에서 제거합니다. 여기에는 group_replication_recovery_tls_version가 포함됩니다.
MySQL 9.5 Group Replication은 TLSv1.3을 지원합니다.
group_replication_recovery_tls_version 및 group_replication_recovery_tls_ciphersuites를 사용하여, 필요하다면 기본값이 아닌 암호 슈트만을 포함한 암호 슈트 선택에 대한 클라이언트 지원을 구성하십시오.
tls_version 시스템 변수에 지정된 TLS 프로토콜 목록에서, 지정된 버전이 연속적인지 확인하십시오(예: TLSv1.2,TLSv1.3). 프로토콜 목록에 어떤 간격이라도 있으면(예: TLS 1.1을 생략하여 TLSv1,TLSv1.2를 지정한 경우) Group Replication은 그룹 통신 연결을 만들 수 없을 수 있습니다.
replication 그룹에서 OpenSSL은 모든 멤버가 지원하는 가장 높은 TLS 프로토콜의 사용을 협상합니다. 오직 TLSv1.3만 사용하도록 구성된 조인 멤버(tls_version=TLSv1.3)는 기존 멤버 중 어느 하나라도 TLSv1.3을 지원하지 않는 replication 그룹에 조인할 수 없습니다. 그 경우 그룹 멤버들은 더 낮은 TLS 프로토콜 버전을 사용하고 있기 때문입니다.
해당 멤버를 그룹에 조인시키려면, 조인 멤버가 기존 그룹 멤버가 지원하는 더 낮은 TLS 프로토콜 버전의 사용도 허용하도록 구성해야 합니다. 반대로, 조인 멤버가 TLSv1.3을 지원하지 않지만, 기존 그룹 멤버들이 모두 TLSv1.3을 지원하고 서로 간의 연결에 그 버전을 사용하고 있는 경우, 기존 그룹 멤버가 이미 적절한 더 낮은 TLS 프로토콜 버전의 사용을 허용하고 있거나, 그렇게 하도록 구성하는 경우에는 그 멤버가 조인할 수 있습니다.
그 상황에서는 각 멤버에서 조인 멤버로의 연결에 대해 OpenSSL이 더 낮은 TLS 프로토콜 버전을 사용합니다. 각 멤버의 다른 기존 멤버들과의 연결은 두 멤버가 모두 지원하는 가장 높은 프로토콜을 계속 사용합니다.
서버에 대해 허용된 TLS 프로토콜 버전 목록을 변경하기 위해 런타임에 tls_version 시스템 변수를 변경할 수 있습니다. Group Replication의 경우, 컨텍스트를 정의하는 시스템 변수의 현재 값들로부터 서버의 TLS 컨텍스트를 재구성하는 ALTER INSTANCE RELOAD TLS 문은 Group Replication이 실행 중일 때 Group Replication의 그룹 통신 연결에 대한 TLS 컨텍스트를 변경하지 않습니다.
이러한 연결에 재구성을 적용하려면, STOP GROUP_REPLICATION을 실행한 다음 START GROUP_REPLICATION을 실행하여 TLS 컨텍스트를 변경한 멤버(들)에서 Group Replication을 재시작해야 합니다.
비슷하게, 그룹의 모든 멤버가 더 높은 또는 더 낮은 TLS 프로토콜 버전을 사용하도록 변경하려면, 허용된 TLS 프로토콜 버전 목록을 변경한 후 각 멤버에서 Group Replication에 대한 롤링 재시작을 수행해야 하며, 롤링 재시작이 완료될 때 OpenSSL이 더 높은 TLS 프로토콜 버전의 사용을 협상하도록 해야 합니다. 런타임에 허용된 TLS 프로토콜 버전 목록을 변경하는 방법에 대한 지침은 Section 8.3.2, “Encrypted Connection TLS Protocols and Ciphers” 및 Server-Side Runtime Configuration and Monitoring for Encrypted Connections을 참조하십시오.
다음 예시는 서버에서 SSL을 구성하고, Group Replication 그룹 통신 연결에 대해 SSL을 활성화하는 my.cnf 파일의 일부를 보여줍니다:
1[mysqld] 2ssl_ca = "cacert.pem" 3ssl_capath = "/.../ca_directory" 4ssl_cert = "server-cert.pem" 5ssl_cipher = "DHE-RSA-AEs256-SHA" 6ssl_crl = "crl-server-revoked.crl" 7ssl_crlpath = "/.../crl_directory" 8ssl_key = "server-key.pem" 9group_replication_ssl_mode= REQUIRED
주의
컨텍스트를 정의하는 시스템 변수의 현재 값들로부터 서버의 TLS 컨텍스트를 재구성하는 ALTER INSTANCE RELOAD TLS 문은 Group Replication이 실행 중일 때 Group Replication의 그룹 통신 연결에 대한 TLS 컨텍스트를 변경하지 않습니다. 이러한 연결에 재구성을 적용하려면, STOP GROUP_REPLICATION을 실행한 다음 START GROUP_REPLICATION을 실행하여 Group Replication을 재시작해야 합니다.
조인 멤버와 기존 멤버 사이에서 분산 복구를 위해 만들어지는 연결은 위에서 설명한 옵션의 적용을 받지 않습니다. 이러한 연결은 Group Replication의 전용 분산 복구 SSL 옵션을 사용하며, 이는 Section 20.6.3.2, “Secure Socket Layer (SSL) Connections for Distributed Recovery”에 설명되어 있습니다.
MySQL communication stack을 사용하는 경우
(group_replication_communication_stack=MYSQL):
그룹의 분산 복구에 대한 보안 설정은 그룹 멤버 간의 일반 통신에 적용됩니다. 보안 설정을 구성하는 방법은 Section 20.6.3, “Securing Distributed Recovery Connections”을 참조하십시오.
20.6.1 Communication Stack for Connection Security Management
20.6.3 Securing Distributed Recovery Connections