클라이언트 애플리케이션과 Valkey용 Memorystore 간에 이동하는 모든 데이터를 안전하게 암호화할 수 있습니다. 이를 전송 중인 데이터 암호화라고 합니다. 전송 중인 데이터 암호화를 사용하면 전송 계층 보안 (TLS) 프로토콜을 통해 모든 Valkey 트래픽이 암호화됩니다. 이렇게 하면 애플리케이션과 Valkey용 Memorystore 간에 이동하는 모든 데이터가 기밀로 유지되고 변조되지 않습니다.
전송 중인 데이터 암호화가 사용 설정되면 Valkey 클라이언트는 안전한 연결을 통해 독점적으로 통신합니다. TLS에 구성되지 않은 Valkey 클라이언트는 차단됩니다. 전송 중인 데이터 암호화를 사용하기로 선택한 경우 Valkey 클라이언트에서 TLS 프로토콜을 사용할 수 있는지 확인해야 합니다.
전송 중인 데이터 암호화를 사용하는 인스턴스에는 인증 기관 (CA)이 있습니다. CA를 사용하여 인스턴스의 머신 인증서를 인증합니다.
사용할 수 있는 CA 모드 중 하나는 고객 관리 CA입니다. Memorystore for Valkey 인스턴스에 고객 관리 CA를 사용할 수 있습니다. 규정 준수를 위해 자체 CA를 관리해야 하는 경우 이 CA 모드를 사용할 수 있습니다. 이 모드를 사용하는 과정에서 Certificate Authority Service에서 호스팅되는 자체 CA 풀을 설정해야 합니다.
고객 관리 CA를 사용하도록 인스턴스를 구성하려면 먼저 인스턴스와 동일한 리전에 CA 풀을 만들고 CA 서비스를 사용하여 해당 풀에 CA를 하나 이상 만들어야 합니다. CA는 루트 CA 또는 하위 CA일 수 있습니다. CA 서비스에서 하위 CA를 만든 후 하위 CA를 외부 루트 CA에 연결할 수도 있습니다.
인스턴스를 만들 때 CA 풀을 지정합니다. 이 구성의 일환으로 프로젝트별 Memorystore for Valkey 서비스 계정에는 CA 풀을 사용할 수 있는 권한이 있습니다. 서비스 계정이 풀에서 CA를 요청하면 Memorystore for Valkey는 이 CA를 사용하여 인스턴스의 서버 인증서에 서명합니다.
시작하기 전에
고객 관리 CA 모드를 사용하기 전에 다음 요구사항을 충족하는지 확인합니다.
필요한 역할
CA 풀과 CA를 만드는 데 필요한 권한을 얻으려면 관리자에게 CA 서비스에 대한 CA 서비스 작업 관리자(roles/privateca.caManager) IAM 역할을 부여해 달라고 요청하세요.
커스텀 역할이나 다른 사전 정의된 역할을 통해 필요한 권한을 얻을 수도 있습니다. 역할 부여에 대한 자세한 내용은 프로젝트, 폴더, 조직에 대한 액세스 관리를 참고하세요.
고객 관리 CA를 사용하는 워크플로
고객 관리 CA를 사용하려면 다음과 같은 워크플로를 수행합니다.
- CA 풀을 만듭니다. 고객 관리 CA를 사용하도록 인스턴스를 구성하려면 먼저 CA 서비스에서 CA 풀을 만들어야 합니다. 이 풀은 인스턴스와 동일한 리전에 있어야 합니다.
- CA 풀에 CA를 만듭니다. CA 풀을 만든 후 CA 서비스를 사용하여 풀에 CA를 하나 이상 만들어야 합니다.
- 생성한 CA 풀의 CA로 서버 인증서를 발급할 수 있도록 Memorystore for Valkey 서비스 계정에 권한을 위임합니다.
- 고객 관리 CA를 사용할 인스턴스를 만듭니다.
CA 풀 만들기
Memorystore for Valkey 인스턴스를 만들려는 동일한 프로젝트에 CA 서비스에서 CA 풀을 만들거나 다른 프로젝트에 CA 풀을 만들 수 있습니다. 하지만 다른 프로젝트에 CA 풀을 만들면 조직 정책에 따라 VPC 서비스 제어에서 인스턴스 생성을 차단할 수 있습니다. 이 문제를 해결하려면 CA 풀과 CA를 호스팅하는 프로젝트 및 Memorystore for Valkey를 호스팅하는 프로젝트가 같은 서비스 경계에 속하는지 확인합니다. 자세한 내용은 서비스 경계 세부정보 및 구성 및 서비스 경계 관리를 참고하세요.
CA 풀을 만들려면 CA 풀 만들기의 안내를 따르세요. 다음과 같은 필수 구성 설정을 사용하여 CA 풀의 기본값을 수락할 수 있습니다.
- 인스턴스를 만들려는 동일한 리전에 CA 풀을 만듭니다. Memorystore for Valkey가 지원하는 리전 목록은 Memorystore for Valkey 위치를 참고하세요.
- 구성 기반 인증서 요청을 허용합니다.
- 주체 대체 이름(SAN)에 DNS 이름을 허용합니다. CA 풀의 ID 제약 조건을 구성할 때 Memorystore for Valkey에서 SAN에 추가할 수 있는 항목과 충돌할 수 있는 DNS 이름의 형식에 제한사항을 설정하지 마세요.
CA 풀에 CA 만들기
생성된 CA 풀에 CA를 최소 하나 이상 만듭니다.
루트 CA 또는 하위 CA를 만들 수 있습니다.
루트 CA를 만들려면 루트 CA 만들기의 안내를 따르세요. CA 기본값을 그대로 사용할 수 있지만 CA를 사용 설정됨 상태로 만들어야 합니다.
CA 키 크기 및 알고리즘을 구성할 때 키 크기와 알고리즘을 선택할 수 있습니다.
하위 CA를 만드는 경우 먼저 루트 CA를 만들고 구성해야 합니다.
CA 서비스에서 하위 CA를 만들려면 하위 CA 만들기의 안내를 따르세요.
외부 루트 CA에서 하위 CA를 만들려면 외부 CA에서 하위 CA 만들기의 안내를 따르세요.
서비스 계정에 CA 풀에 대한 액세스 권한 제공
Memorystore for Valkey 서비스 계정에 인스턴스 인증서를 요청하고 서명할 수 있는 권한이 있는지 확인하려면 생성된 CA 풀의 서비스 계정에 roles/privateca.certificateRequester 역할을 부여합니다.
이 서비스 계정의 형식은
service-PROJECT_NUMBER@cloud-memorystore.iam.gserviceaccount.com입니다. PROJECT_NUMBER를 프로젝트의 Google Cloud 프로젝트 번호로 바꿉니다.
gcloud
서비스 계정에 CA 풀에 대한 액세스 권한을 부여하려면 gcloud privateca pools add-iam-policy-binding 명령어를 사용합니다.
gcloud privateca pools add-iam-policy-binding CA_POOL_ID \ --project=PROJECT_ID \ --location=REGION_ID \ --member serviceAccount:SERVICE_ACCOUNT_NAME \ --role=roles/privateca.certificateRequester
다음을 바꿉니다.
- CA_POOL_ID: 생성한 CA 풀의 ID입니다.
- PROJECT_ID: 인스턴스를 만들 Google Cloud 프로젝트의 ID입니다.
- REGION_ID: CA 풀이 있는 리전입니다.
- SERVICE_ACCOUNT_NAME: Memorystore for Valkey 서비스 계정의 이름입니다. 이 서비스 계정의 프로젝트 번호는 PROJECT_ID와 연결된 프로젝트 번호와 동일합니다.
고객 관리 CA를 사용하는 인스턴스 만들기
콘솔
인스턴스 만들기의 단계를 따릅니다.
gcloud
고객 관리 CA를 사용하는 인스턴스를 만들려면 gcloud memorystore instances create 명령어를 사용합니다.
gcloud memorystore instances create INSTANCE_ID \
--location=REGION_ID \
--endpoints='[{"connections": [{"pscAutoConnection": {"network": "projects/PROJECT_ID/global/networks/NETWORK_ID", "projectId": "PROJECT_ID"}}]}]' \
--replica-count=REPLICA_COUNT \
--node-type=NODE_TYPE \
--shard-count=SHARD_COUNT \
--engine-version=ENGINE_VERSION \
--mode=MODE \
--transit-encryption-mode=server-authentication \
--server-ca-mode=customer-managed-cas-ca \
--server-ca-pool="projects/CA_POOL_PROJECT_ID/locations/REGION_ID/caPools/CA_POOL_ID"
다음을 바꿉니다.
INSTANCE_ID: 만들려는 인스턴스의 ID입니다. 인스턴스 ID는 1~63자(영문 기준)여야 하며 소문자, 숫자 또는 하이픈만 사용해야 합니다. 소문자로 시작하고 소문자나 숫자로 끝나야 합니다.
REGION_ID: 인스턴스를 배치할 리전입니다. 생성한 CA 풀과 동일한 리전에 인스턴스를 만들어야 합니다.
PROJECT_ID: 인스턴스를 만들 프로젝트의 ID입니다.
NETWORK_ID: 인스턴스를 만드는 데 사용할 네트워크의 ID입니다.
REPLICA_COUNT: 복제본 수 (샤드당)입니다. 허용되는 값은
0~5입니다.NODE_TYPE: 노드 유형입니다. 허용되는 값은 다음과 같습니다.
shared-core-nanostandard-smallhighmem-mediumhighmem-xlarge
SHARD_COUNT: 인스턴스의 샤드 수입니다. 샤드 개수는 인스턴스 데이터를 저장하기 위한 총 메모리 용량을 결정합니다. 인스턴스 사양에 대한 자세한 내용은 인스턴스 및 노드 사양을 참고하세요.
ENGINE_VERSION: 인스턴스의 버전입니다. 이 매개변수에 허용되는 값은
VALKEY_7_2,VALKEY_8_0,VALKEY_9_0입니다. 값을 지정하지 않으면VALKEY_9_0이 기본값입니다.MODE: 인스턴스가 클러스터 모드 사용 설정인지 클러스터 모드 사용 중지인지 확인합니다. 이 필드를 생략하면 인스턴스가 기본적으로 클러스터 모드 사용으로 설정됩니다. 자세한 내용은 클러스터 모드 사용 설정 및 사용 중지를 참고하세요.
CA_POOL_PROJECT_ID: 생성한 CA 풀의 ID입니다.
REGION_ID: CA 풀이 있는 리전입니다. 만들려는 인스턴스와 CA 풀이 동일한 리전에 있어야 합니다.
CA_POOL_ID: 생성한 CA 풀의 ID입니다.
server-ca-mode 매개변수는 인스턴스의 CA 모드를 나타냅니다. 고객 관리 CA의 경우 customer-managed-cas-ca이 매개변수의 값입니다.
이 매개변수를 사용하지 않으면 기본 CA 모드는 인스턴스별입니다.
예를 들면 다음과 같습니다.
gcloud memorystore instances create my-instance \
--location=us-central1 \
--endpoints='[{"connections": [{"pscAutoConnection": {"network": "projects/my-project/global/networks/my-network", "projectId": "my-project"}}]}] \
--replica-count=1 \
--node-type=highmem-medium \
--shard-count=3 \
--engine-version=VALKEY_9_0 \
--mode=CLUSTER \
--transit-encryption-mode=server-authentication \
--server-ca-mode=customer-managed-cas-ca \
--server-ca-pool="projects/my-CA-pool-project/locations/us-central1/caPools/my-CA-pool"
인스턴스의 서버 인증서 순환
Memorystore for Valkey에서 매주 서버 측 인증서 순환을 실행하는 것 외에도 필요에 따라 인증서를 순환할 수 있습니다.
gcloud
인스턴스의 모든 머신에 대해 서버 인증서를 순환하려면 gcloud memorystore instances update 명령어를 사용합니다.
gcloud memorystore instances update INSTANCE_ID \ --location=REGION_ID \ --rotate-server-certificate
다음을 바꿉니다.
- INSTANCE_ID: 서버 인증서를 순환하려는 머신이 포함된 인스턴스의 ID
- REGION_ID: 인스턴스가 있는 리전
예를 들면 다음과 같습니다.
gcloud memorystore instances update my-instance \ --location=us-central1 \ --rotate-server-certificate
제한사항
Memorystore for Valkey에서 고객 관리 CA를 사용할 때는 다음 제한사항이 적용됩니다.
- 인스턴스에 고객 관리 CA를 구성한 후에는 구성을 수정할 수 없습니다. 예를 들어 인스턴스의 CA 풀 ID는 변경할 수 없습니다.
- 고객 관리 CA 풀을 삭제하거나 CA와 연결된 서비스 계정 권한을 취소하지 마세요. 이 경우 서버 인증서를 순환할 수 없으며 인증서가 만료됩니다. 따라서 클라이언트 애플리케이션이 인스턴스에 연결할 수 없습니다.
문제 해결
이 섹션에는 고객 관리 CA를 사용할 때 표시될 수 있는 오류 메시지가 나열되어 있으며 이러한 메시지를 해결하는 팁이 포함되어 있습니다.
| 오류 메시지 | 원인 | 문제 해결 |
|---|---|---|
FAILED_PRECONDITION: GetClusterCertificateAuthority not
supported for customer-managed CAs |
고객 관리 CA를 사용하는 경우 Memorystore for Valkey를 사용하여 CA 인증서를 가져올 수 없습니다. | 고객 관리 CA의 CA 인증서를 가져오려면 CA 서비스를 사용해야 합니다. |
Server certificate rotation can only be triggered for
customer-managed CAs. |
인스턴스의 서버 인증서를 순환하려고 하지만 인스턴스의 CA 모드가 인스턴스별 또는 공유입니다. | 인스턴스에 사용하는 모드가 고객 관리형이 아니면 서버 인증서를 순환할 수 없습니다. |
Invalid format for server CA pool: {CA pool resource}. Expected
projects/{project}/locations/{location}/caPools/{caPool}. |
인스턴스를 만드는 데 사용 중인 CA 풀의 형식이 잘못되었습니다. | CA 풀의 경우 다음 형식을 사용하세요. projects/CA_POOL_PROJECT_ID/locations/REGION_ID/ caPools/CA_POOL_ID |
The instance/cluster's server CA pool must be in the same region
as the instance/cluster. CA Pool region: {CA pool region}, Instance/cluster
region: {cluster region}. |
CA 풀과 다른 리전에 있는 인스턴스를 만들려고 합니다. | 만들려는 인스턴스와 CA 풀이 동일한 리전에 있는지 확인합니다. |
Request is prohibited by organization's policy for CA Pool
{CA pool ID}. |
CA 풀을 호스팅하는 Google Cloud 프로젝트와 인스턴스를 호스팅하는 프로젝트가 동일한 서비스 경계에 있지 않습니다. | 프로젝트가 동일한 서비스 경계에 속하도록 VPC 서비스 제어를 구성합니다. |
Permission privateca.certificates.create denied on {CA pool ID}.
Make sure that you granted the roles/privateca.certificateRequester role
to the service account {P4SA email}. |
Memorystore for Valkey 서비스 계정에 CA 풀의 roles/privateca.certificateRequester 역할이 없습니다. 따라서 Memorystore for Valkey는 서버 인증서를 생성할 수 없습니다. |
서비스 계정에 roles/privateca.certificateRequester 역할을 부여합니다. 자세한 내용은 서비스 계정에 CA 풀에 대한 액세스 권한 제공을 참고하세요. |
Resource {CA pool ID} not found. |
인스턴스를 만들려고 할 때 지정한 CA 풀을 Memorystore for Valkey에서 찾을 수 없습니다. | CA 풀의 프로젝트 ID, 위치, 이름을 확인합니다. |
There are no enabled CAs in the CaPool {CA pool ID}. Please
ensure that there is at least one enabled Certificate Authority to issue a
certificate. |
CA 풀에 사용 설정된 CA가 없습니다. Memorystore for Valkey가 인스턴스의 서버 인증서를 생성할 수 없습니다. | CA 풀에 CA를 하나 이상 만들고 CA가 사용 설정됨 상태인지 확인합니다. |
Quota exhausted for CA Service. Check quotas
for the project hosting the CA Pool: {CA pool ID}. |
CA 풀을 호스팅하는 Google Cloud 프로젝트에서 CA 서비스 할당량을 초과했습니다. Memorystore for Valkey는 이 서비스가 필요한 작업을 실행할 수 없습니다. | 프로젝트에서 CA 서비스 할당량을 확인합니다. 자세한 내용은 할당량 및 한도를 참고하세요. |
server_ca_pool must be provided when server_ca_mode is
SERVER_CA_MODE_CUSTOMER_MANAGED_CAS_CA. |
고객 관리 CA 모드를 사용하는 인스턴스를 만들려고 합니다. 하지만 CA 풀에 대한 정보는 제공하지 않았습니다. | CA 풀의 프로젝트 ID, 위치, 이름을 지정합니다. |
server_ca_pool must not be provided when server_ca_mode is not SERVER_CA_MODE_CUSTOMER_MANAGED_CAS_CA. |
인스턴스별 또는 공유 CA 모드를 사용하는 인스턴스를 만들려고 합니다. 이러한 CA 모드는 server_ca_pool 매개변수를 사용하지 않습니다. |
CA 모드가 고객 관리인 경우에만 이 파라미터를 사용할 수 있습니다. |