Cassandra 노드 간 암호화 사용 설정

노드 간 (또는 노드 간) 암호화는 클러스터의 노드 간에 이동하는 데이터를 보호합니다. TLS를 사용합니다 이 페이지에서는 Edge에서 TLS를 사용하여 Cassandra 노드 간 암호화를 사용 설정하는 방법을 설명합니다. 프라이빗 클라우드입니다. 이 단계를 수행하려면 Cassandra의 세부정보를 잘 알고 있어야 합니다. 있습니다.

Cassandra 노드 간 암호화 사용 설정

Cassandra 노드 간 암호화를 사용 설정하려면 kube-APIserver입니다 각 노드의 공개 인증서를 모든 노드에 배포해야 합니다. 이렇게 하면 각 노드에 트러스트 저장소에 있는 node0.cer, node1.cer 등 각 노드는 자체 비공개 키를 keystore. 예를 들어 node0node0.pem keystore. 한 번에 하나씩 각 노드에서 암호화를 사용 설정해야 합니다.

다음 단계에 따라 Cassandra 노드 간 암호화를 사용 설정합니다.

  1. 부록의 단계에 따라 서버 인증서를 생성합니다. 자체 서명 키 만들기 확인할 수 있습니다

    다음 단계에서는 keystore.node0을 생성했다고 가정합니다. 및 truststore.node0님, 부록에 설명된 대로 keystore 및 truststore 비밀번호와 함께 작동합니다. 계속 진행하기 전에 각 노드에서 예비 단계로 keystore 및 truststore를 생성해야 합니다. 다음 단계를 살펴보겠습니다

  2. 다음 속성을 /opt/apigee/customer/application/cassandra.properties에 추가합니다. 파일에서 참조됩니다. 파일이 없으면 새로 만듭니다.
    conf_cassandra_internode_encryption=all
    conf_cassandra_keystore=/opt/apigee/data/apigee-cassandra/keystore.node0
    conf_cassandra_keystore_password=keypass
    conf_cassandra_truststore=/opt/apigee/data/apigee-cassandra/truststore.node0
    conf_cassandra_truststore_password=trustpass
    # Optionally set the following to enable 2-way TLS or mutual TLS
    # conf_cassandra_require_client_auth=true
  3. cassandra.properties 파일이 Apigee 사용자의 소유인지 확인하세요.
    chown apigee:apigee \
    /opt/apigee/customer/application/cassandra.properties

변경사항이 적용되도록 각 Cassandra 노드에서 다음 단계를 한 번에 하나씩 실행합니다. 사용자에게 다운타임을 주지 않으면서 다음과 같은 이점을 누릴 수 있습니다.

  1. Cassandra 서비스를 중지합니다.
    /opt/apigee/apigee-service/bin/apigee-service \
    apigee-cassandra stop
  2. Cassandra 서비스를 다시 시작합니다.
    /opt/apigee/apigee-service/bin/apigee-service \
    apigee-cassandra start
  3. TLS 암호화 서비스가 시작되었는지 확인하려면 시스템 로그에서 다음 메일을 확인하세요.
    Starting Encrypted Messaging Service on TLS port

인증서 순환 수행

인증서를 순환하려면 다음 단계를 따르세요.

  1. 생성된 고유 키 쌍마다 인증서를 추가합니다 (부록 참고). Cassandra를 추가하는 이전 인증서와 새 인증서가 모두 동일한 트러스트 저장소:
    keytool -import -v -trustcacerts -alias NEW_ALIAS \
    -file CERT -keystore EXISTING_TRUSTSTORE

    여기서 NEW_ALIAS는 항목을 식별하는 고유한 문자열이며 CERT는 다음과 같습니다. 인증서 이름 추가할 파일과 EXISTING_TRUSTSTORE Cassandra 노드에 있는 기존 truststore의 이름입니다.

  2. scp와 같은 복사 유틸리티를 사용하여 클러스터의 모든 Cassandra 노드에 truststore를 배포합니다. 각 노드에서 사용 중인 기존 트러스트 저장소를 대체합니다.
  3. 클러스터의 순차적 재시작을 수행하여 새 truststore를 로드하고 새 키를 삽입해야 합니다.
    /opt/apigee/apigee-service/bin/apigee-service \
    apigee-cassandra restart
  4. 클러스터의 각 Cassandra 노드에서 아래 표시된 속성을 새 키 저장소로 업데이트합니다. 값을 설정합니다.
    conf_cassandra_keystore=NEW_KEYSTORE_PATH
    conf_cassandra_keystore_password=NEW_KEYSTORE_PASSOWRD
    
      

    where NEW_KEYSTORE_PATH is the path to the directory where the keystore file is located and NEW_KEYSTORE_PASSWORD is the keystore password set when the certificates were created, as explained in the Appendix.

  5. Stop the Cassandra service:
    /opt/apigee/apigee-service/bin/apigee-service \
    apigee-cassandra stop
  6. Cassandra 서비스를 다시 시작합니다.
    /opt/apigee/apigee-service/bin/apigee-service \
    apigee-cassandra start
  7. 모든 노드 간에 통신이 설정되면 다음 Cassandra 노드 참고: 통신이 성공한 경우에만 다음 노드로 진행하세요. 설정될 수 있습니다

부록

다음 예에서는 요청을 수행하는 데 필요한 서버 인증서를 준비하는 방법을 설명합니다. 노드 간 암호화 단계를 따릅니다 예에 표시된 명령어는 다음 매개변수를 사용합니다.

매개변수 설명
node0 노드를 식별하는 고유한 문자열입니다.
keystore.node0 키 저장소 이름입니다. 명령어는 이 파일이 현재 디렉터리에 있다고 가정합니다.
keypass 키패스는 키 저장소와 키 모두에 동일해야 합니다.
dname node0의 IP 주소를 10.128.0.39로 식별합니다.
-validity 이 플래그에 설정된 값에 따라 생성된 키 쌍이 10년 동안 유효합니다.
  1. 다음 디렉터리로 이동합니다.
    cd /opt/apigee/data/apigee-cassandra
  2. 다음 명령어를 실행하여 현재 디렉터리에 keystore.node0라는 파일을 생성합니다.
    keytool -genkey -keyalg RSA -alias node0 -validity 3650 \
    -keystore keystore.node0 -storepass keypass \
    -keypass keypass -dname "CN=10.128.0.39, OU=None, \
    O=None, L=None, C=None"

    중요: 키 비밀번호가 키 저장소 비밀번호와 동일한지 확인합니다.

  3. 인증서를 별도의 파일로 내보냅니다.
    keytool -export -alias node0 -file node0.cer \
    -keystore keystore.node0
  4. Apigee 사용자만 파일을 읽을 수 있는지 확인하세요.
    $ chown apigee:apigee \
    /opt/apigee/data/apigee-cassandra/keystore.node0
    $ chmod 400 /opt/apigee/data/apigee-cassandra/keystore.node0
  5. 생성된 인증서 node0.cer을 노드의 트러스트 저장소로 가져옵니다.
    keytool -import -v -trustcacerts -alias node0 \
    -file node0.cer -keystore truststore.node0

    위의 명령어는 비밀번호를 설정하도록 요청합니다. 이 비밀번호는 트러스트 저장소 비밀번호이며 이전에 설정한 키 저장소 비밀번호와 달라야 합니다. 인증서를 신뢰하라는 메시지가 표시되면 yes를 입력합니다.

  6. openssl을 사용하여 키 없이 인증서의 PEM 파일을 생성합니다. 참고: cqlsh 생성된 형식의 인증서에서 작동하지 않습니다.
    $ keytool -importkeystore -srckeystore keystore.node0 \
    -destkeystore node0.p12 -deststoretype PKCS12 -srcstorepass \
    keypass -deststorepass keypass
    $ openssl pkcs12 -in node0.p12 -nokeys -out node0.cer.pem \
    -passin pass:keypass
    $ openssl pkcs12 -in node0.p12 -nodes -nocerts -out node0.key.pem -passin pass:keypass
  7. 노드 간 암호화의 경우 node0.cer 파일을 각 노드에 복사하여 가져옵니다. 트러스트 저장소를 제공합니다
    keytool -import -v -trustcacerts -alias node0 \
    -file node0.cer -keystore truststore.node1
  8. keytool -list를 사용하여 keystore 파일과 truststore 파일에서 인증서를 확인합니다.
    $ keytool -list -keystore keystore.node0
    $ keytool -list -keystore truststore.node0