클라이언트 애플리케이션과 Memorystore for Redis 클러스터 간에 이동하는 모든 데이터를 안전하게 암호화할 수 있습니다. 이를 전송 중인 데이터 암호화라고 합니다. 전송 중인 데이터 암호화를 사용하면 전송 계층 보안 (TLS) 프로토콜을 통해 모든 Redis 트래픽이 암호화됩니다. 이렇게 하면 애플리케이션과 Memorystore for Redis 클러스터 간에 이동하는 모든 데이터가 기밀로 유지되고 조작되지 않습니다.
전송 중인 데이터 암호화가 사용 설정되면 Redis 클라이언트는 보안 연결을 통해 독점적으로 통신합니다. TLS에 구성되지 않은 Redis 클라이언트는 차단됩니다. 전송 중인 데이터 암호화를 사용하기로 선택한 경우 Redis 클라이언트에서 TLS 프로토콜을 사용할 수 있는지 확인해야 합니다.
전송 중인 데이터 암호화를 사용하는 클러스터에는 인증 기관 (CA)이 있습니다. CA를 사용하여 클러스터의 머신 인증서를 인증합니다.
사용할 수 있는 CA 모드 중 하나는 인스턴스별 CA입니다. Redis용 Memorystore 클러스터는 각 클러스터에 고유한 CA 인프라를 프로비저닝합니다. 클러스터에 안전하게 액세스하려면 이 CA 계층 구조를 신뢰하도록 클라이언트 애플리케이션을 구성해야 합니다. 여기에는 클러스터에 액세스하는 각 클라이언트에서 CA 인증서를 다운로드하여 설치하는 작업이 포함됩니다.
인스턴스별 CA를 사용하는 클러스터 만들기
콘솔
인스턴스 만들기의 단계를 따릅니다.
gcloud
인스턴스별 CA를 사용하는 클러스터를 만들려면 gcloud redis clusters create 명령어를 사용합니다.
gcloud redis clusters create CLUSTER_ID \ --region=REGION_ID \ --network=NETWORK \ --replica-count=REPLICA_COUNT \ --node-type=NODE_TYPE \ --shard-count=SHARD_COUNT \ --transit-encryption-mode=server-authentication \ --server-ca-mode=google-managed-per-instance-ca
다음을 바꿉니다.
CLUSTER_ID: 만들려는 클러스터의 ID입니다. 클러스터 ID는 1~63자(영문 기준)여야 하며 소문자, 숫자 또는 하이픈만 사용해야 합니다. 소문자로 시작하고 소문자나 숫자로 끝나야 합니다.
REGION_ID: 클러스터가 위치할 리전입니다.
NETWORK: 클러스터를 만드는 데 사용하는 네트워크입니다.
projects/NETWORK_PROJECT_ID/global/networks/NETWORK_ID형식을 사용해야 합니다. 사용하는 네트워크 ID는 서비스 연결 정책에서 사용하는 네트워크 ID와 일치해야 합니다. 그렇지 않으면 클러스터를 만들 수 없습니다.REPLICA_COUNT: 복제본 수 (샤드당)입니다. 허용되는 값은
0~5입니다.NODE_TYPE: 노드 유형입니다. 허용되는 값은 다음과 같습니다.
redis-shared-core-nanoredis-standard-smallredis-highmem-mediumredis-highmem-xlarge
SHARD_COUNT: 클러스터의 샤드 수입니다. 샤드 개수는 클러스터 데이터를 저장하기 위한 총 메모리 용량을 결정합니다. 클러스터 사양에 대한 자세한 내용은 클러스터 및 노드 사양을 참고하세요.
server-ca-mode 매개변수는 클러스터의 CA 모드를 나타냅니다. 인스턴스별 CA의 경우 google-managed-per-instance-ca이 매개변수의 값입니다. 이 파라미터를 사용하지 않으면 기본 CA 모드는 인스턴스별입니다.
예를 들면 다음과 같습니다.
gcloud redis clusters create my-cluster \ --region=us-central1 \ --network=projects/my-network-project/global/networks/default \ --replica-count=1 \ --node-type=redis-highmem-medium \ --shard-count=3 \ --transit-encryption-mode=server-authentication \ --server-ca-mode=google-managed-per-instance-ca
CA 다운로드
클러스터에 전송 중인 데이터 암호화를 사용 설정하면 get-cluster-certificate-authority 명령어를 사용할 때 CA의 인증서가 표시됩니다.
gcloud redis clusters get-cluster-certificate-authority CLUSTER_ID
CLUSTER_ID를 클러스터의 ID로 바꿉니다.
응답 본문에는 모든 해당 CA의 인증서가 포함됩니다.
클라이언트에 CA 인증서 설치
클러스터에 연결하는 클라이언트에 CA 인증서를 설치해야 합니다. 클라이언트 유형에 따라 CA 인증서 설치가 다를 수 있습니다.
Compute Engine Linux VM에 CA 인증서를 설치하려면 다음을 실행하세요.
SSH를 사용하여 Compute Engine Linux 클라이언트에 연결합니다.
클라이언트에서 다음 명령어를 사용하여
server_ca.pem파일을 만듭니다.sudo vim /tmp/server_ca.pem
CA를 다운로드하여
server_ca.pem파일에 붙여넣습니다.CA 텍스트의 형식을 올바르게 지정해야 합니다.
server_ca.pem파일은 다음과 같이 표시될 수 있습니다.-----BEGIN CERTIFICATE----- MIIDnTCCAoWgAwIBAgIBADANBgkqhkiG9w0BAQsFADCBhTEtMCsGA1UELhMkNzYx NTc4OGMtMTI2Yi00Nzk0LWI2MWMtY2YxOWE2Y2Y1ZjNiMTEwLwYDVQQDEyhHb29n bGUgQ2xvdWQgTWVtb3J5c3RvcmUgUmVkaXMgU2VydmVyIENBMRQwEgYDVQQKEwtH b29nbGUsIEluYzELMAkGA1UEBhMCVVMwHhcNMjAwOTE3MjEzNDE1WhcNMzAwOTE1 MjEzNTE1WjCBhTEtMCsGA1UELhMkNzYxNTc4OGMtMTI2Yi00Nzk0LWI2MWMtY2Yx OWE2Y2Y1ZjNiMTEwLwYDVQQDEyhHb29nbGUgQ2xvdWQgTWVtb3J5c3RvcmUgUmVk aXMgU2VydmVyIENBMRQwEgYDVQQKEwtHb29nbGUsIEluYzELMAkGA1UEBhMCVVMw ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCyDKmDHZm6tzMhNtKOnp8H 8+zTv1qA6OkBToVqCjKTTMGO18ovNtAAMjbGvclLuJNLbA2WTTWVttHen6Cn82h0 3gG9HMk9AwK1cVT7gW072h++TRsYddIRlwnSweRWL8jUX+PNt7CjFqH+sma/Hb1m CktHdBOa897JiYHrMVNTcpS8SFwwz05yHUTEVGlHdkvlaJXfHLe6keCMABLyjaMh 1Jl4gZI2WqLMV680pJusK6FI6q/NmqENFc9ywMEg395lHTK9w9e014WIXg0q7sU3 84ChVVS2yYOMEUWeov4Qx6XeVfA4ss5t7OCqsMQkvslkE90mJZcVvhBj3QvTH9Rz AgMBAAGjFjAUMBIGA1UdEwEB/wQIMAYBAf8CAQAwDQYJKoZIhvcNAQELBQADggEB AJkn+MDE4V10DZn4uEc0s0Mg4FEMC1fDewmDYwSNnxRlzfEi+wAX2AaqrJ4m4Qa7 xIyuSYxArEOY6QeyJyw7/06dom8aAv4aO2p8hE04Ih6QwaTMFIlT2Jf6TidVd3eT wfjwFJVoJ+dgxsaCv2uMFZWee5aRHmKzj9LhqPwpWnTs9Q/qmOheUNoe2/1i8yvn 662M7RZMR7fZH6ETsdz5w1nPXXiRqJ7K0EGKoPNjMlYK3/U1X3sazI4tpMNgTdxG rnNh9Sd9REMBmDCPj9dUI9k4hQX4yQZp96fnLT6cet22OPajEKnpzyqJs1s4iX/g lEtWs4V/YBhKA56CW6ASZS8= -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- MIIDnTCCAoWgAwIBAgIBADANBgkqhkiG9w0BAQsFADCBhTEtMCsGA1UELhMkYjg4 ZTUzYTMtODdmNC00N2VhLWJjN2MtYTdhMzM4NmIwZmU4MTEwLwYDVQQDEyhHb29n bGUgQ2xvdWQgTWVtb3J5c3RvcmUgUmVkaXMgU2VydmVyIENBMRQwEgYDVQQKEwtH b29nbGUsIEluYzELMAkGA1UEBhMCVVMwHhcNMjAwOTE4MjEzMTI3WhcNMzAwOTE2 MjEzMjI3WjCBhTEtMCsGA1UELhMkYjg4ZTUzYTMtODdmNC00N2VhLWJjN2MtYTdh MzM4NmIwZmU4MTEwLwYDVQQDEyhHb29nbGUgQ2xvdWQgTWVtb3J5c3RvcmUgUmVk aXMgU2VydmVyIENBMRQwEgYDVQQKEwtHb29nbGUsIEluYzELMAkGA1UEBhMCVVMw ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDEO4Zs/So5DA6wtftkAElD 8BVREob4gby2mGBYAtd3JJQKFC+zIqCf2DhrWihrCeXhsdsZqJUF16E3MsCCWS2T UWt6T37zObU2fzKmb7X+TSw1tunIUcIXwWzoMhqdGrIvfI9guMbF+KssQIjDMs9M G/hY6cY1NB5THOxXqcxzYrwSKB1EE160EDz4RgKAYQhw7AyVOBBAbWqA5pTEDuUy qpsz+NFpKYTwaeTpzil0xIl0JJS3DOd4G7ZnMG2wFT2j3wt+P0SkAPuOWgmX82iO gGmKoaCh3KcICie/rZRTfsRPjMm+yswRQRDeLB5eoMmH+gbUInVZU0qOJ/7gOYEb AgMBAAGjFjAUMBIGA1UdEwEB/wQIMAYBAf8CAQAwDQYJKoZIhvcNAQELBQADggEB AF4xlEbwLUK5VjoKlJBtKXLYrYcW+AbQLhZQFP8exE8bOW7p39h+5J0nl3ItPxu6 97BCt1P5TFisba8pBxaExiDsYmjKQrhtizMkzl5h9hGksOgoLlAqaaxfA97+Q9Tq 5gaYChESur/159Z3jiM47obKoZmHfgSgr//7tjII7yZxUGhOjIVffv/fEa4aixqM 0yH1V1s8hWHZeui2VFrHmTxY20IH9ktyedjSUgnFXzsEH6sbR18p0wBZqyrrtURs DaUIeoOHfHgEJM8k/wphSJI0V6pMC6nax2JhexLTRiUsiGTLRDe3VtsdWqS2DLa9 9DmrfdF0eFrfWw3VRNLwwXg= -----END CERTIFICATE-----
앞의 예시와 같이 파일이 다음 가이드라인을 따라야 합니다.
-----BEGIN CERTIFICATE-----및
-----END CERTIFICATE-----줄을 포함한 전체 CA를 복사합니다.CA의 텍스트가 왼쪽 맞춤인지 확인합니다. CA 줄 앞에 공백이 표시되지 않는지 확인합니다.
각 CA를 새 줄에 추가합니다. CA 사이에 빈 줄이 없는지 확인합니다.
전송 중인 데이터 암호화에 필요한 클라이언트 구성
클러스터에 연결하는 데 사용하는 클라이언트는 TLS를 지원하거나 서드 파티 사이드카를 사용하여 TLS를 사용 설정해야 합니다.
클라이언트가 TLS를 지원하는 경우 클러스터의 IP 주소, 포트 6379, CA가 포함된 파일을 가리키도록 구성합니다. 전송 중인 데이터 암호화가 사용 설정된 클러스터에 연결하는 방법의 예를 확인할 수 있습니다.
CA 순환 관리
클러스터에 액세스하는 클라이언트에 다운로드 가능한 모든 CA 인증서를 설치하는 것이 좋습니다.
최신 CA 인증서를 주기적으로 설치하면 Memorystore for Redis Cluster에서 CA를 순환할 때 필요한 인증서를 보유할 수 있습니다. 이 순환 중에 기존 CA와 새 CA가 모두 활성 상태입니다.
전송 중인 데이터 암호화를 사용하는 클러스터에 연결하는 코드 샘플
전송 중인 데이터 암호화를 사용하는 클러스터에 연결하도록 클라이언트 라이브러리를 설정하는 방법에 관한 코드 샘플을 보려면 전송 중인 데이터 암호화 클라이언트 라이브러리 코드 샘플을 참고하세요.