Loading...
MySQL 9.5 Reference Manual 9.5의 19.3.1 Setting Up Replication to Use Encrypted Connections의 한국어 번역본입니다.
아래의 경우에 피드백에서 신고해주신다면 반영하겠습니다.
감사합니다 :)
복제 시 필요한 바이너리 로그 전송에 암호화된 연결을 사용하려면, 소스와 레플리카 서버 모두가 암호화된 네트워크 연결을 지원해야 합니다. 어느 한쪽 서버라도 (암호화된 연결을 위해) 컴파일되거나 구성되지 않아 암호화된 연결을 지원하지 않으면, 암호화된 연결을 통한 복제는 불가능합니다.
복제를 위한 암호화된 연결 설정은 클라이언트/서버 연결에 대해 수행하는 것과 유사합니다. 소스에서 사용할 적절한 보안 인증서를 구하거나 생성해야 하고, 각 레플리카에도 동일한 인증 기관에서 발급한 유사한 인증서가 있어야 합니다. 또한 적절한 키 파일도 구해야 합니다.
암호화된 연결을 위해 서버와 클라이언트를 설정하는 방법에 대한 자세한 내용은 Section 8.3.1, “Configuring MySQL to Use Encrypted Connections”을 참조하십시오.
소스에서 암호화된 연결을 활성화하려면, 적절한 인증서와 키 파일을 생성하거나 구한 후, 다음 구성 파라미터를 소스의 my.cnf 파일의 [mysqld] 섹션에 추가하고, 필요한 경우 파일 이름을 변경하십시오:
1[mysqld] 2ssl_ca=cacert.pem 3ssl_cert=server-cert.pem 4ssl_key=server-key.pem
파일에 대한 경로는 상대 또는 절대 경로일 수 있습니다. 이 목적을 위해서는 항상 전체 경로를 사용하는 것이 좋습니다.
구성 파라미터는 다음과 같습니다:
ssl_ca: 인증 기관(CA) 인증서 파일의 경로 이름입니다. (ssl_capath는 유사하지만 CA 인증서 파일들의 디렉터리의 경로 이름을 지정합니다.)
ssl_cert: 서버 공개키 인증서 파일의 경로 이름입니다. 이 인증서는 클라이언트로 전송될 수 있으며, 클라이언트가 가지고 있는 CA 인증서를 기준으로 인증될 수 있습니다.
ssl_key: 서버 개인 키 파일의 경로 이름입니다.
레플리카에서 암호화된 연결을 활성화하려면 CHANGE REPLICATION SOURCE TO 문을 사용합니다.
CHANGE REPLICATION SOURCE TO를 사용하여 레플리카의 인증서와 SSL 개인 키 파일 이름을 지정하려면, 다음과 같이 적절한 SOURCE_SSL_xxx 옵션을 추가하십시오:1 -> SOURCE_SSL_CA = 'ca_file_name', 2 -> SOURCE_SSL_CAPATH = 'ca_directory_name', 3 -> SOURCE_SSL_CERT = 'cert_file_name', 4 -> SOURCE_SSL_KEY = 'key_file_name',
이 옵션들은 Command Options for Encrypted Connections에 설명된 것과 동일한 이름을 가진 --ssl-xxx 옵션에 대응합니다. 이러한 옵션이 효과를 발휘하려면 SOURCE_SSL=1도 설정되어야 합니다. 복제 연결의 경우, SOURCE_SSL_CA 또는 SOURCE_SSL_CAPATH 중 하나에 값을 지정하는 것은 --ssl-mode=VERIFY_CA를 설정하는 것과 동일합니다. 지정된 정보를 사용하여 유효한 일치하는 인증 기관(CA) 인증서가 발견되는 경우에만 연결 시도가 성공합니다.
SOURCE_SSL_VERIFY_SERVER_CERT 옵션을 추가하십시오:1 -> SOURCE_SSL_VERIFY_SERVER_CERT=1,
복제 연결의 경우, SOURCE_SSL_VERIFY_SERVER_CERT=1을 지정하는 것은 Command Options for Encrypted Connections에 설명된 대로 --ssl-mode=VERIFY_IDENTITY를 설정하는 것과 동일합니다. 이 옵션이 효과를 발휘하려면 SOURCE_SSL=1도 설정되어야 합니다. 호스트 이름 식별 검증은 자기 서명 인증서에서는 작동하지 않습니다.
SOURCE_SSL_CRL 또는 SOURCE_SSL_CRLPATH 옵션을 추가하십시오:1 -> SOURCE_SSL_CRL = 'crl_file_name', 2 -> SOURCE_SSL_CRLPATH = 'crl_directory_name',
이 옵션들은 Command Options for Encrypted Connections에 설명된 것과 동일한 이름을 가진 --ssl-xxx 옵션에 대응합니다. 이들이 지정되지 않으면 CRL 검사는 수행되지 않습니다.
SOURCE_SSL_CIPHER, SOURCE_TLS_VERSION, SOURCE_TLS_CIPHERSUITES 옵션을 사용하십시오:1 -> SOURCE_SSL_CIPHER = 'cipher_list', 2 -> SOURCE_TLS_VERSION = 'protocol_list', 3 -> SOURCE_TLS_CIPHERSUITES = 'ciphersuite_list',
SOURCE_SSL_CIPHER 옵션은 레플리카에서 복제 연결에 허용되는 하나 이상의 암호를 콜론으로 구분한 목록으로 지정합니다.
SOURCE_TLS_VERSION 옵션은 레플리카에서 복제 연결에 허용되는 TLS 암호화 프로토콜의 목록을 쉼표로 구분하여 지정하며, tls_version 서버 시스템 변수와 유사한 형식을 사용합니다. 연결 절차는 소스와 레플리카 모두가 허용하는 가장 높은 TLS 버전을 사용하도록 협상합니다. 연결이 가능하려면 레플리카는 소스와 최소한 하나 이상의 TLS 버전을 공통으로 가져야 합니다.
SOURCE_TLS_CIPHERSUITES 옵션은 TLSv1.3이 연결에 사용되는 경우, 레플리카에서 복제 연결에 허용되는 하나 이상의 암호 제품군을 콜론으로 구분한 목록으로 지정합니다. 이 옵션이 TLSv1.3이 사용되는 상황에서 NULL로 설정된 경우(이 옵션을 설정하지 않으면 기본값은 NULL입니다), 기본적으로 활성화된 암호 제품군들이 허용됩니다. 이 옵션을 빈 문자열로 설정하면 어떤 암호 제품군도 허용되지 않으며, 따라서 TLSv1.3은 사용되지 않습니다.
이 목록에서 지정할 수 있는 프로토콜, 암호, 암호 제품군은 MySQL을 컴파일할 때 사용한 SSL 라이브러리에 따라 달라집니다. 형식, 허용되는 값, 옵션을 지정하지 않았을 때의 기본값에 대한 정보는 Section 8.3.2, “Encrypted Connection TLS Protocols and Ciphers”를 참조하십시오.
참고
SOURCE_TLS_CIPHERSUITES 옵션을 사용하여 원하는 암호 제품군을 임의로 선택해 지정할 수 있으며, 필요하다면 기본값이 아닌 암호 제품군만 포함되도록 할 수도 있습니다.
1mysql> START REPLICA;
암호화된 연결이 성공적으로 설정되었는지 확인하려면 SHOW REPLICA STATUS 문을 사용할 수 있습니다.
REQUIRE SSL 옵션을 사용해 복제 사용자 계정을 생성한 다음, 해당 사용자에게 REPLICATION SLAVE 권한을 부여하십시오. 예를 들면 다음과 같습니다:1mysql> CREATE USER 'repl'@'%.example.com' IDENTIFIED BY 'password' 2 -> REQUIRE SSL; 3mysql> GRANT REPLICATION SLAVE ON *.* 4 -> TO 'repl'@'%.example.com';
소스에 기존 복제 사용자 계정이 있는 경우, 다음 문을 사용해 해당 계정에 REQUIRE SSL을 추가할 수 있습니다:
1mysql> ALTER USER 'repl'@'%.example.com' REQUIRE SSL;
19.3 Replication Security
19.3.2 Encrypting Binary Log Files and Relay Log Files