AWS - MSK Enum

हैकट्रिक्स का समर्थन करें

अमेज़न एमएसके

अमेज़न मैनेज्ड स्ट्रीमिंग फॉर अपाचे काफ्का (अमेज़न एमएसके) एक सेवा है जो पूरी तरह से प्रबंधित है, जो अपाचे काफ्का के माध्यम से स्ट्रीमिंग डेटा प्रसंस्करण करने वाले एप्लिकेशनों के विकास और क्रियान्वयन को सुविधाजनक बनाती है। अमेज़न एमएसके द्वारा क्लस्टर के निर्माण, अपडेट, और हटाने जैसे कंट्रोल-प्लेन कार्य प्रदान किए जाते हैं। यह सेवा अपाचे काफ्का डेटा-प्लेन कार्यों का उपयोग करने की अनुमति देती है, जिसमें डेटा उत्पादन और उपभोक्ता शामिल हैं। यह ओपन-सोर्स संस्करण पर काम करती है, जिससे मौजूदा एप्लिकेशन, टूलिंग, और प्लगइन्स के साथ संगति सुनिश्चित की जाती है, जो उपभोक्ताओं और अपाचे काफ्का समुदाय से हैं, जिससे एप्लिकेशन कोड में कोई परिवर्तन करने की आवश्यकता नहीं होती।

संबंधितता के मामले में, अमेज़न एमएसके का निर्माण स्वचालित रूप से प्रमुख क्लस्टर विफलता स्थितियों का पता लगाना और सुधारना डेटा लेखन और पठन गतिविधियों में अवरुद्धि कम करते हुए सुनिश्चित करने के लिए डिज़ाइन किया गया है। इसके अतिरिक्त, यह अपाचे काफ्का द्वारा अनुकूलित डेटा प्रतिक्रिया प्रक्रियाओं को अनुकूलित करने का लक्ष्य रखता है, जिससे प्रतिस्थापित ब्रोकरों के संग्रह का पुनः उपयोग करने का प्रयास करता है, इससे अपाचे काफ्का द्वारा पुनः प्रतिक्रियित करने की आवश्यकता होने वाले डेटा की मात्रा को कम किया जा सकता है।

प्रकार

एडब्ल्यूएस द्वारा बनाने की अनुमति दी जाने वाली 2 प्रकार की काफ्का क्लस्टर हैं: प्रोविज़न्ड और सर्वरलेस।

हमलेर्स के दृष्टिकोण से आपको यह जानना चाहिए कि:

  • सर्वरलेस सीधे सार्वजनिक नहीं हो सकता (यह केवल एक वीपीएन में चल सकता है जिसमें कोई सार्वजनिक आईपी पता नहीं है)। हालांकि, प्रोविज़न्ड को एक सार्वजनिक आईपी प्राप्त करने के लिए कॉन्फ़िगर किया जा सकता है (डिफ़ॉल्ट रूप से नहीं) और सुरक्षा समूह को अनुकरण करने के लिए विषयसंबंधी पोर्ट्स को उजागर करने के लिए कॉन्फ़िगर किया जा सकता है।

  • सर्वरलेस केवल IAM को प्रमाणीकरण विधि के रूप में समर्थन करता है। प्रोविज़न्ड SASL/SCRAM (पासवर्ड) प्रमाणीकरण, IAM प्रमाणीकरण, एडब्ल्यूएस सर्टिफिकेट प्रबंधक (एसीएम) प्रमाणीकरण और अप्रमाणित पहुंच का समर्थन करता है।

  • ध्यान दें कि यदि अप्रमाणित पहुंच सक्षम है तो प्रोविज़न्ड काफ्का को सार्वजनिक रूप से उजागर करना संभावित नहीं है।

गणना

#Get clusters
aws kafka list-clusters
aws kafka list-clusters-v2

# Check the supported authentication
aws kafka list-clusters |  jq -r ".ClusterInfoList[].ClientAuthentication"

# Get Zookeeper endpoints
aws kafka list-clusters | jq -r ".ClusterInfoList[].ZookeeperConnectString, .ClusterInfoList[].ZookeeperConnectStringTls"

# Get nodes and node enspoints
aws kafka kafka list-nodes --cluster-arn <cluster-arn>
aws kafka kafka list-nodes --cluster-arn <cluster-arn> | jq -r ".NodeInfoList[].BrokerNodeInfo.Endpoints" # Get endpoints

# Get used kafka configs
aws kafka list-configurations #Get Kafka config file
aws kafka describe-configuration --arn <config-arn> # Get version of config
aws kafka describe-configuration-revision --arn <config-arn> --revision <version> # Get content of config version

# If using SCRAN authentication, get used AWS secret name (not secret value)
aws kafka list-scram-secrets --cluster-arn <cluster-arn>

Kafka IAM पहुंच (सर्वरलेस में)

# Guide from https://docs.aws.amazon.com/msk/latest/developerguide/create-serverless-cluster.html
# Download Kafka
wget https://archive.apache.org/dist/kafka/2.8.1/kafka_2.12-2.8.1.tgz
tar -xzf kafka_2.12-2.8.1.tgz

# In kafka_2.12-2.8.1/libs download the MSK IAM JAR file.
cd kafka_2.12-2.8.1/libs
wget https://github.com/aws/aws-msk-iam-auth/releases/download/v1.1.1/aws-msk-iam-auth-1.1.1-all.jar

# Create file client.properties in kafka_2.12-2.8.1/bin
security.protocol=SASL_SSL
sasl.mechanism=AWS_MSK_IAM
sasl.jaas.config=software.amazon.msk.auth.iam.IAMLoginModule required;
sasl.client.callback.handler.class=software.amazon.msk.auth.iam.IAMClientCallbackHandler

# Export endpoints address
export BS=boot-ok2ngypz.c2.kafka-serverless.us-east-1.amazonaws.com:9098
## Make sure you will be able to access the port 9098 from the EC2 instance (check VPS, subnets and SG)

# Create a topic called msk-serverless-tutorial
kafka_2.12-2.8.1/bin/kafka-topics.sh --bootstrap-server $BS --command-config client.properties --create --topic msk-serverless-tutorial --partitions 6

# Send message of every new line
kafka_2.12-2.8.1/bin/kafka-console-producer.sh --broker-list $BS --producer.config client.properties --topic msk-serverless-tutorial

# Read messages
kafka_2.12-2.8.1/bin/kafka-console-consumer.sh --bootstrap-server $BS --consumer.config client.properties --topic msk-serverless-tutorial --from-beginning

विशेषाधिकार

AWS - MSK Privesc

अप्रमाणित पहुंच

AWS - MSK Unauthenticated Enum

स्थिरता

यदि आपके पास एक Provisioned Kafka के VPC में पहुंच है, तो आप अनधिकृत पहुंच सकते हैं, यदि SASL/SCRAM प्रमाणीकरण, गुप्त से पासवर्ड पढ़ें, किसी अन्य नियंत्रित उपयोगकर्ता IAM अनुमतियाँ दें (यदि IAM या सर्वरलेस का उपयोग किया गया है) या प्रमाणपत्रों के साथ स्थिर रहें।

संदर्भ

हैकट्रिक्स का समर्थन करें

Last updated