Cassandra용 TLS 구성

이 주제에서는 Cassandra 노드와 클라이언트 및 Cassandra 노드 간 통신을 위한 인증을 구성하는 방법을 설명합니다.

런타임 영역에서 Cassandra용 TLS를 구성하는 방법

Cassandra는 클라이언트 머신과 데이터베이스 클러스터 간 및 클러스터 내 노드 간의 보안 통신을 제공합니다. 암호화를 사용하면 이동 중인 데이터가 손상되지 않고 안전하게 전송됩니다. Apigee Hybrid에서는 TLS가 Cassandra 노드 간 및 클라이언트와 Cassandra 노드 간 통신을 위해 기본적으로 사용 설정됩니다.

이 주제에 설명된 대로 재정의 파일에 직접 배치되거나 Kubernetes 보안 비밀에 추가된 사용자 이름/비밀번호 조합을 사용하여 인증을 구성할 수 있습니다.

Cassandra 사용자 인증에 대한 정보

하이브리드 플랫폼은 Cassandra를 런타임 영역 데이터의 백엔드 Datastore로 사용합니다. 기본적으로 Cassandra와 클라이언트 간의 통신에는 인증이 필요합니다. Cassandra와 통신하는 여러 클라이언트 사용자가 있습니다. 이러한 사용자에게 기본 비밀번호가 제공되며 개발자는 이를 변경할 필요가 없습니다.

기본 사용자를 포함한 이러한 사용자는 아래에 설명되어 있습니다.

  • DML 사용자: 클라이언트 통신이 Cassandra(KMS, KVM, 캐시 및 할당량)에서 데이터를 읽고 쓰는 데 사용됩니다.
  • DDL 사용자: 키스페이스 생성, 업데이트, 삭제와 같은 데이터 정의 작업을 위해 MART에서 사용됩니다.
  • 관리 사용자: Cassandra 클러스터에서 수행되는 모든 관리 활동에 사용됩니다.
  • 기본 Cassandra 사용자: 인증이 사용 설정되고 사용자 이름이 cassandra인 경우 Cassandra에서 기본 사용자를 생성합니다.
  • JMX 사용자: Cassandra JMX 인터페이스로 인증하고 통신하는 데 사용됩니다.
  • Jolokia 사용자: Cassandra JMX API로 인증하고 통신하는 데 사용됩니다.

재정의 파일의 기본 비밀번호 변경

Apigee Hybrid는 Cassandra 사용자의 기본 비밀번호를 제공합니다. 기본 사용자 비밀번호를 변경하려면 overrides.yaml 파일에서 변경할 수 있습니다. 다음 구성을 추가하고, 원하는 대로 기본 비밀번호('iloveapis123')를 변경하고, 변경사항을 클러스터에 적용합니다.

cassandra:
   auth:
     default:  ## the password for the new default user (static username: cassandra)
       password: "iloveapis123"
     admin: ## the password for the admin user (static username: admin_user)
       password: "iloveapis123"
     ddl: ## the password for the DDL User (static username: ddl_user)
       password: "iloveapis123"
     dml: ## the password for the DML User (static username: dml_user)
       password: "iloveapis123"
     jmx:
       username: "jmxuser" ## the username for the JMX User
       password: "iloveapis123" ## the password for the JMX User
     jolokia:
       username: "jolokiauser" ## the username to access jolokia interface
       password: "iloveapis123" ## the password for jolokia user

다음에 유의하세요.

  • 인증 기관(CA) 순환이 지원되지 않습니다.
  • 암호로 생성된 서버 인증서는 지원되지 않습니다.

Kubernetes 보안 비밀에서 사용자 이름 및 비밀번호 설정

이 섹션에서는 인증에 Kubernetes 보안 비밀을 사용하도록 Cassandra를 구성하는 방법을 설명합니다.

보안 비밀 만들기

다음 템플릿을 사용하여 Kubernetes 보안 비밀을 구성합니다. 파일에 템플릿을 저장하고 필수 속성을 수정합니다. 이 옵션을 사용하는 경우 각 비밀번호와 함께 사용자 이름을 제공해야 합니다.

apiVersion: v1
kind: Secret
metadata:
  name: $SECRET_NAME
  namespace: $APIGEE_NAMESPACE
type: Opaque
data:
  default.password: $PASSWORD   #base64-encoded string
  admin.user: $USERNAME   #base64-encoded string
  admin.password: $PASSWORD   #base64-encoded string
  dml.user: $USERNAME   #base64-encoded string
  dml.password: $PASSWORD   #base64-encoded string
  ddl.user: $USERNAME   #base64-encoded string
  ddl.password: $PASSWORD   #base64-encoded string
  jmx.user: $USERNAME   #base64-encoded string
  jmx.password: $PASSWORD   #base64-encoded string
  jolokia.user: $USERNAME   #base64-encoded string
  jolokia.password: $PASSWORD   #base64-encoded string
  

여기서 $SECRET_NAME은 보안 비밀에 대해 선택한 이름이고 $APIGEE_NAMESPACE는 Apigee 포드가 배포된 네임스페이스(기본값은 apigee)이며 $USERNAME$PASSWORD는 각 사용자의 사용자 이름과 비밀번호입니다. 사용자 이름과 비밀번호는 Base64로 인코딩되어야 합니다.

클러스터에 보안 비밀을 적용합니다. 예를 들면 다음과 같습니다.

kubectl apply -f $SECRET_FILE

재정의 파일에 보안 비밀을 추가합니다.

cassandra:
  auth:
    secret: $SECRET_NAME

업데이트된 Cassandra 재정의를 클러스터에 적용합니다.

$APIGEECTL_HOME/apigeectl apply -f overrides/overrides.yaml --datastore

Cassandra 로그 확인

Cassandra가 시작되는 즉시 로그를 확인합니다. 다음 로그에서는 Cassandra 클라이언트 연결이 암호화되었음을 보여줍니다.

kubectl logs apigee-cassandra-2 -n apigee -f

INFO  00:44:36 Starting listening for CQL clients on /10.0.2.12:9042 (encrypted)...
INFO  00:44:36 Binding thrift service to /10.0.2.12:9160
INFO  00:44:36 enabling encrypted thrift connections between client and server
INFO  00:44:36 Listening for thrift clients...