암호화는 어떻게 시작하나요? - Amazon Managed Streaming for Apache Kafka

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

암호화는 어떻게 시작하나요?

MSK 클러스터를 생성할 때 JSON 형식으로 암호화 설정을 지정할 수 있습니다. 다음은 예입니다.

{ "EncryptionAtRest": { "DataVolumeKMSKeyId": "arn:aws:kms:us-east-1:123456789012:key/abcdabcd-1234-abcd-1234-abcd123e8e8e" }, "EncryptionInTransit": { "InCluster": true, "ClientBroker": "TLS" } }

DataVolumeKMSKeyId의 경우 고객 관리형 키를 지정하거나 계정의 MSK용 AWS 관리형 키 (alias/aws/kafka)를 지정할 수 있습니다. EncryptionAtRest지정하지 않아도 Amazon MSK는 여전히 에 저장된 데이터를 암호화합니다. AWS 관리형 키클러스터에서 사용 중인 키를 확인하려면 GET 요청을 보내거나 DescribeCluster API 작업을 호출합니다.

EncryptionInTransit의 경우 InCluster의 기본값은 true입니다. 그러나 브로커 간에 데이터가 전달될 때 Amazon MSK가 암호화하지 않도록 하려면 이를 false로 설정할 수 있습니다.

클라이언트와 브로커 사이에 전송되는 데이터에 암호화 모드를 지정하려면 ClientBrokerTLS, TLS_PLAINTEXT 또는 PLAINTEXT의 세 가지 값 중 하나로 설정합니다.

클러스터를 만들 때 암호화 설정을 지정하려면
  1. 이전 예제의 내용을 파일에 저장하고 파일에 원하는 이름을 지정합니다. 예를 들어, encryption-settings.json이라고 지정합니다.

  2. create-cluster 명령을 실행하고 encryption-info 옵션을 사용하여 구성 JSON을 저장한 파일을 가리킵니다. 다음은 예입니다. {YOUR MSK VERSION}을 Apache Kafka 클라이언트 버전과 일치하는 버전으로 변경합니다. MSK 클러스터 버전을 찾는 방법에 대한 자세한 내용은 To find the version of your MSK cluster 섹션을 참조하세요. MSK 클러스터 버전과 다른 Apache Kafka 클라이언트 버전을 사용하면 Apache Kafka 데이터 손상, 손실, 가동 중지가 발생할 수 있습니다.

    aws kafka create-cluster --cluster-name "ExampleClusterName" --broker-node-group-info file://brokernodegroupinfo.json --encryption-info file://encryptioninfo.json --kafka-version "{YOUR MSK VERSION}" --number-of-broker-nodes 3

    다음은 이 명령을 실행한 후 성공적인 응답의 예입니다.

    { "ClusterArn": "arn:aws:kafka:us-east-1:123456789012:cluster/SecondTLSTest/abcdabcd-1234-abcd-1234-abcd123e8e8e", "ClusterName": "ExampleClusterName", "State": "CREATING" }
TLS 암호화를 테스트하려면
  1. 3단계: 클라이언트 머신 생성의 지침에 따라 클라이언트 머신을 만듭니다.

  2. 클라이언트 머신에 Apache Kafka를 설치합니다.

  3. AWS CLI 설치된 시스템에서 다음 명령을 실행하여 ClusterARN을 클러스터의 ARN (이전 절차의 예와 같이 TLS set으로 ClientBroker 생성한 클러스터) 의 ARN으로 대체합니다.

    aws kafka describe-cluster --cluster-arn clusterARN

    결과에서, 다음 단계에 필요한 ZookeeperConnectString의 값을 찾아 저장합니다.

  4. 클라이언트 머신에서 다음 명령을 실행하여 주제를 생성합니다. 이전 ZookeeperConnectString단계에서 구한 값으로 바꾸십시오ZookeeperConnectString.

    <path-to-your-kafka-installation>/bin/kafka-topics.sh --create --zookeeper ZookeeperConnectString --replication-factor 3 --partitions 1 --topic TLSTestTopic
  5. 이 예제에서는 JVM 트러스트스토어를 사용하여 MSK 클러스터와 통신합니다. 이렇게 하려면 먼저 클라이언트 머신에 /tmp라는 폴더를 만듭니다. 그런 다음 Apache Kafka 설치 폴더인 bin으로 이동하여 다음 명령을 실행하십시오. (JVM 경로는 다를 수 있습니다.)

    cp /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.201.b09-0.amzn2.x86_64/jre/lib/security/cacerts /tmp/kafka.client.truststore.jks
  6. 클라이언트 머신의 Apache Kafka 설치 폴더인 bin에 있는 동안 다음 내용으로 client.properties라는 텍스트 파일을 만듭니다.

    security.protocol=SSL ssl.truststore.location=/tmp/kafka.client.truststore.jks
  7. AWS CLI 설치된 시스템에서 다음 명령을 실행하고 ClusterARN을 클러스터의 ARN으로 대체합니다.

    aws kafka get-bootstrap-brokers --cluster-arn clusterARN

    성공적인 결과는 다음과 같습니다. 다음 단계에 필요하므로 이 결과를 저장하십시오.

    { "BootstrapBrokerStringTls": "a-1.example.g7oein.c2.kafka.us-east-1.amazonaws.com:0123,a-3.example.g7oein.c2.kafka.us-east-1.amazonaws.com:0123,a-2.example.g7oein.c2.kafka.us-east-1.amazonaws.com:0123" }
  8. 다음 명령을 실행하여 클라이언트 머신에 콘솔 생산자를 생성합니다. 이전 단계에서 가져온 BootstrapBrokerStringTls값으로 바꾸십시오. 이 생산자 명령을 실행 상태로 둡니다.

    <path-to-your-kafka-installation>/bin/kafka-console-producer.sh --broker-list BootstrapBrokerStringTls --producer.config client.properties --topic TLSTestTopic
  9. 새 명령 창을 열고 동일한 클라이언트 머신에 연결합니다. 그러면 다음 명령을 실행하여 콘솔 소비자를 생성합니다.

    <path-to-your-kafka-installation>/bin/kafka-console-consumer.sh --bootstrap-server BootstrapBrokerStringTls --consumer.config client.properties --topic TLSTestTopic
  10. 생산자 창에서 문자 메시지와 반환을 입력하고 소비자 창에서 동일한 메시지를 찾습니다. Amazon MSK는 이 메시지를 전송하는 동안 암호화했습니다.

암호화된 데이터로 작업하도록 Apache Kafka 클라이언트를 구성하는 방법에 대한 자세한 내용은 Kafka 클라이언트 구성을 참조하십시오.