이 주제에서는 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...